diff --git a/celo-social-connect-dapp/.DS_Store b/celo-social-connect-dapp/.DS_Store new file mode 100644 index 00000000..017a4111 Binary files /dev/null and b/celo-social-connect-dapp/.DS_Store differ diff --git a/celo-social-connect-dapp/.gitignore b/celo-social-connect-dapp/.gitignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/celo-social-connect-dapp/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/celo-social-connect-dapp/LICENSE b/celo-social-connect-dapp/LICENSE new file mode 100644 index 00000000..335ebbe7 --- /dev/null +++ b/celo-social-connect-dapp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 DevRel Team & Community + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/celo-social-connect-dapp/README.md b/celo-social-connect-dapp/README.md new file mode 100644 index 00000000..21a46d72 --- /dev/null +++ b/celo-social-connect-dapp/README.md @@ -0,0 +1,24 @@ +# Social Connect dApp + +This demo dApp is designed to help users understand how to integrate the Social Connect protocol. The features included are: + +1. Assign a social identifier (in this case, I selected Twitter) to an address. +2. Retrieve the address associated with the previously mapped identifier to transfer value. +3. Delete the mapping within the protocol. + +## Built With + +- [Celo Composer](https://github.com/celo-org/celo-composer) +- [Social Connect](https://github.com/celo-org/SocialConnect) + +## Notes + +This dApp has been created for demonstration purposes. For a production-ready dApp, consider updating the architecture and implementing server-side functions to ensure the security of your environment variables, preventing exposure of sensitive information. + +## License + +Distributed under the MIT License. See `LICENSE.txt` for more information. + +## Contact + +- [@0xNestor](https://twitter.com/0xNestor) \ No newline at end of file diff --git a/celo-social-connect-dapp/package.json b/celo-social-connect-dapp/package.json new file mode 100644 index 00000000..d13c8f09 --- /dev/null +++ b/celo-social-connect-dapp/package.json @@ -0,0 +1,29 @@ +{ + "name": "celo-social-connect-dapp", + "version": "1.0.0", + "description": "Custom Celo Composer project.", + "private": true, + "author": "Celo", + "license": "MIT", + "scripts": { + "react-app:dev": "yarn workspace @celo-social-connect-dapp/react-app dev", + "react-app:build": "yarn workspace @celo-social-connect-dapp/react-app build", + "react-app:start": "yarn workspace @celo-social-connect-dapp/react-app start", + "react-app:lint": "yarn workspace @celo-social-connect-dapp/react-app lint" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/celo-org/celo-composer.git" + }, + "bugs": { + "url": "https://github.com/celo-org/celo-composer/issues" + }, + "homepage": "https://github.com/celo-org/celo-composer/blob/main/README.md", + "workspaces": [ + "packages/*" + ], + "keywords": [ + "celo-composer", + "celo" + ] +} diff --git a/celo-social-connect-dapp/packages/.DS_Store b/celo-social-connect-dapp/packages/.DS_Store new file mode 100644 index 00000000..39dc9863 Binary files /dev/null and b/celo-social-connect-dapp/packages/.DS_Store differ diff --git a/celo-social-connect-dapp/packages/react-app/.eslintrc.json b/celo-social-connect-dapp/packages/react-app/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/celo-social-connect-dapp/packages/react-app/.gitignore b/celo-social-connect-dapp/packages/react-app/.gitignore new file mode 100644 index 00000000..e50c5316 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/.gitignore @@ -0,0 +1,38 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +.env \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/README.md b/celo-social-connect-dapp/packages/react-app/README.md new file mode 100644 index 00000000..21a46d72 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/README.md @@ -0,0 +1,24 @@ +# Social Connect dApp + +This demo dApp is designed to help users understand how to integrate the Social Connect protocol. The features included are: + +1. Assign a social identifier (in this case, I selected Twitter) to an address. +2. Retrieve the address associated with the previously mapped identifier to transfer value. +3. Delete the mapping within the protocol. + +## Built With + +- [Celo Composer](https://github.com/celo-org/celo-composer) +- [Social Connect](https://github.com/celo-org/SocialConnect) + +## Notes + +This dApp has been created for demonstration purposes. For a production-ready dApp, consider updating the architecture and implementing server-side functions to ensure the security of your environment variables, preventing exposure of sensitive information. + +## License + +Distributed under the MIT License. See `LICENSE.txt` for more information. + +## Contact + +- [@0xNestor](https://twitter.com/0xNestor) \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/Accounts.json b/celo-social-connect-dapp/packages/react-app/abis/Accounts.json new file mode 100644 index 00000000..da009fd7 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/Accounts.json @@ -0,0 +1,75401 @@ +{ + "contractName": "Accounts", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "dataEncryptionKey", + "type": "bytes" + } + ], + "name": "AccountDataEncryptionKeySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataURL", + "type": "string" + } + ], + "name": "AccountMetadataURLSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "AccountNameSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "walletAddress", + "type": "address" + } + ], + "name": "AccountWalletAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "AttestationSignerAuthorized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + } + ], + "name": "AttestationSignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "DefaultSignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "DefaultSignerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "IndexedSignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "IndexedSignerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "LegacySignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "LegacySignerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "url", + "type": "bytes" + } + ], + "name": "OffchainStorageRootAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "url", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "OffchainStorageRootRemoved", + "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": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fraction", + "type": "uint256" + } + ], + "name": "PaymentDelegationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "RegistrySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "SignerAuthorizationCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "SignerAuthorizationStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "SignerAuthorized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "ValidatorSignerAuthorized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + } + ], + "name": "ValidatorSignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "VoteSignerAuthorized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "oldSigner", + "type": "address" + } + ], + "name": "VoteSignerRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorizedBy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "eip712DomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "offchainStorageRoots", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "setEip712DomainSeparator", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes", + "name": "dataEncryptionKey", + "type": "bytes" + }, + { + "internalType": "address", + "name": "walletAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "setAccount", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "createAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "setName", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "walletAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "setWalletAddress", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "dataEncryptionKey", + "type": "bytes" + } + ], + "name": "setAccountDataEncryptionKey", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "metadataURL", + "type": "string" + } + ], + "name": "setMetadataURL", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "url", + "type": "bytes" + } + ], + "name": "addStorageRoot", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "removeStorageRoot", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getOffchainStorageRoots", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fraction", + "type": "uint256" + } + ], + "name": "setPaymentDelegation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deletePaymentDelegation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getPaymentDelegation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "setIndexedSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "authorizeSignerWithSignature", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "authorizeVoteSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "authorizeValidatorSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "ecdsaPublicKey", + "type": "bytes" + } + ], + "name": "authorizeValidatorSignerWithPublicKey", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "ecdsaPublicKey", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "blsPublicKey", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "blsPop", + "type": "bytes" + } + ], + "name": "authorizeValidatorSignerWithKeys", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "authorizeAttestationSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "authorizeSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "completeSignerAuthorization", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "isLegacySigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "isDefaultSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "isIndexedSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "isSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "removeDefaultSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "removeIndexedSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "removeSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "removeVoteSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "removeValidatorSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "removeAttestationSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "attestationSignerToAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "validatorSignerToAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "voteSignerToAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "signerToAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "isLegacyRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getLegacySigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getDefaultSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getIndexedSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getVoteSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getValidatorSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAttestationSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "hasLegacySigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "hasDefaultSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "hasIndexedSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "string", + "name": "role", + "type": "string" + } + ], + "name": "hasAuthorizedSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasAuthorizedVoteSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasAuthorizedValidatorSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasAuthorizedAttestationSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getMetadataURL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address[]", + "name": "accountsToQuery", + "type": "address[]" + } + ], + "name": "batchGetMetadataURL", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getDataEncryptionKey", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getWalletAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isAuthorizedSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "getRoleAuthorizationSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"}],\"name\":\"AccountDataEncryptionKeySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"AccountMetadataURLSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"AccountNameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"}],\"name\":\"AccountWalletAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"AttestationSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"AttestationSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"DefaultSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"DefaultSignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"IndexedSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"IndexedSignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"LegacySignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"LegacySignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"}],\"name\":\"OffchainStorageRootAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"OffchainStorageRootRemoved\",\"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\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fraction\",\"type\":\"uint256\"}],\"name\":\"PaymentDelegationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"RegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorizationCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorizationStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"ValidatorSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"ValidatorSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"VoteSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"VoteSignerRemoved\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"EIP712_AUTHORIZE_SIGNER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"}],\"name\":\"addStorageRoot\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"attestationSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeAttestationSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"authorizeSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeSignerWithSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeValidatorSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPop\",\"type\":\"bytes\"}],\"name\":\"authorizeValidatorSignerWithKeys\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"}],\"name\":\"authorizeValidatorSignerWithPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeVoteSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accountsToQuery\",\"type\":\"address[]\"}],\"name\":\"batchGetMetadataURL\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"completeSignerAuthorization\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deletePaymentDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eip712DomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAttestationSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDataEncryptionKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getDefaultSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getIndexedSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getLegacySigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getMetadataURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getOffchainStorageRoots\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getPaymentDelegation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"getRoleAuthorizationSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getValidatorSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVoteSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getWalletAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedAttestationSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"role\",\"type\":\"string\"}],\"name\":\"hasAuthorizedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedValidatorSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedVoteSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasDefaultSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasIndexedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasLegacySigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"isAuthorizedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isDefaultSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isIndexedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isLegacyRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isLegacySigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"offchainStorageRoots\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeAttestationSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeDefaultSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeIndexedSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"removeStorageRoot\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeValidatorSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeVoteSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"}],\"name\":\"setAccountDataEncryptionKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setEip712DomainSeparator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"setIndexedSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"setMetadataURL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fraction\",\"type\":\"uint256\"}],\"name\":\"setPaymentDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"setRegistry\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setWalletAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"signerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"validatorSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"voteSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"addStorageRoot(bytes)\":{\"params\":{\"url\":\"The URL pointing to the offchain storage root.\"}},\"attestationSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized attestation signer.\",\"params\":{\"signer\":\"The address of the account or currently authorized attestation signer.\"},\"return\":\"The associated account.\"},\"authorizeAttestationSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeSigner(address,bytes32)\":{\"params\":{\"role\":\"The role to authorize signing for.\",\"signer\":\"The address of the signing key to authorize.\"}},\"authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` and `signer`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"role\":\"The role to authorize signing for.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"blsPop\":\"The BLS public key proof-of-possession, which consists of a signature on the account address. 48 bytes.\",\"blsPublicKey\":\"The BLS public key that the validator is using for consensus, should pass proof of possession. 96 bytes.\",\"ecdsaPublicKey\":\"The ECDSA public key corresponding to `signer`.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"ecdsaPublicKey\":\"The ECDSA public key corresponding to `signer`.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeVoteSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"batchGetMetadataURL(address[])\":{\"params\":{\"accountsToQuery\":\"The addresses of the accounts to get the metadata for.\"},\"return\":\"(stringLengths[] - the length of each string in bytes data - all strings concatenated )\"},\"completeSignerAuthorization(address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role to finish authorizing for.\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"createAccount()\":{\"return\":\"True if account creation succeeded.\"},\"getAttestationSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can sign attestations.\"},\"getDataEncryptionKey(address)\":{\"params\":{\"account\":\"The address of the account to get the key for\"},\"return\":\"dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\"},\"getDefaultSigner(address,bytes32)\":{\"params\":{\"account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getIndexedSigner(address,bytes32)\":{\"params\":{\"account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getLegacySigner(address,bytes32)\":{\"params\":{\"_account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getMetadataURL(address)\":{\"params\":{\"account\":\"The address of the account to get the metadata for.\"},\"return\":\"metadataURL The URL to access the metadata.\"},\"getName(address)\":{\"params\":{\"account\":\"The address of the account to get the name for.\"},\"return\":\"name The name of the account.\"},\"getOffchainStorageRoots(address)\":{\"params\":{\"account\":\"The account whose storage roots to return.\"},\"return\":\"List of storage root URLs.\"},\"getPaymentDelegation(address)\":{\"params\":{\"account\":\"Account of the validator.\"},\"return\":\"Beneficiary address and fraction of payment delegated.\"},\"getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)\":{\"params\":{\"account\":\"The `account` property signed over in the EIP712 signature\",\"r\":\"Output value r of the ECDSA signature.\",\"role\":\"The `role` property signed over in the EIP712 signature\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The `signer` property signed over in the EIP712 signature\",\"v\":\"The recovery id of the incoming ECDSA signature.\"},\"return\":\"The address that signed the provided role authorization.\"},\"getValidatorSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can register a validator or group.\"},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"getVoteSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can sign votes.\"},\"getWalletAddress(address)\":{\"params\":{\"account\":\"The address of the account to get the wallet address for\"},\"return\":\"Wallet address\"},\"hasAuthorizedAttestationSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated attestation signer.\"},\"hasAuthorizedSigner(address,string)\":{\"details\":\"See `hasIndexedSigner` for more gas efficient call.\"},\"hasAuthorizedValidatorSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated validator signer.\"},\"hasAuthorizedVoteSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated vote signer.\"},\"initialize(address)\":{\"params\":{\"registryAddress\":\"The address of the registry core smart contract.\"}},\"isAccount(address)\":{\"params\":{\"account\":\"The address of the account\"},\"return\":\"Returns `true` if account exists. Returns `false` otherwise.\"},\"isAuthorizedSigner(address)\":{\"params\":{\"signer\":\"The possibly authorized address.\"},\"return\":\"Returns `true` if authorized. Returns `false` otherwise.\"},\"isDefaultSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isIndexedSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isLegacyRole(bytes32)\":{\"params\":{\"role\":\"The role to check\"}},\"isLegacySigner(address,address,bytes32)\":{\"params\":{\"_account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeDefaultSigner(bytes32)\":{\"params\":{\"role\":\"The role that has been authorized.\"}},\"removeIndexedSigner(bytes32)\":{\"params\":{\"role\":\"The role of the signer.\"}},\"removeSigner(address,bytes32)\":{\"params\":{\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"removeStorageRoot(uint256)\":{\"details\":\"The order of storage roots may change after this operation (the last storage root will be moved to `index`), be aware of this if removing multiple storage roots at a time.\",\"params\":{\"index\":\"The index of the storage root to be removed in the account's list of storage roots.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAccount(string,bytes,address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).\",\"params\":{\"dataEncryptionKey\":\"secp256k1 public key for data encryption. Preferably compressed.\",\"name\":\"A string to set as the name of the account\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\",\"walletAddress\":\"The wallet address to set for the account\"}},\"setAccountDataEncryptionKey(bytes)\":{\"params\":{\"dataEncryptionKey\":\"secp256k1 public key for data encryption. Preferably compressed.\"}},\"setIndexedSigner(address,bytes32)\":{\"params\":{\"role\":\"the role to register a default signer for\",\"signer\":\"the address to set as default\"}},\"setMetadataURL(string)\":{\"params\":{\"metadataURL\":\"The URL to access the metadata.\"}},\"setName(string)\":{\"params\":{\"name\":\"The name to set.\"}},\"setPaymentDelegation(address,uint256)\":{\"details\":\"Use `deletePaymentDelegation` to unset the payment delegation.\",\"params\":{\"beneficiary\":\"The address that should receive a portion of validator payments.\",\"fraction\":\"The fraction of the validator's payment that should be diverted to `beneficiary` every epoch, given as FixidityLib value. Must not be greater than 1.\"}},\"setRegistry(address)\":{\"params\":{\"registryAddress\":\"The address of a registry contract for routing to other contracts.\"}},\"setWalletAddress(address,uint8,bytes32,bytes32)\":{\"details\":\"Wallet address can be zero. This means that the owner of the wallet does not want to be paid directly without interaction, and instead wants users to contact them, using the data encryption key, and arrange a payment.v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\",\"walletAddress\":\"The wallet address to set for the account\"}},\"signerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or previously authorized signer.\",\"params\":{\"signer\":\"The address of the account or previously authorized signer.\"},\"return\":\"The associated account.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validatorSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized validator.\",\"params\":{\"signer\":\"The address of an account or currently authorized validator signer.\"},\"return\":\"The associated account.\"},\"voteSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized vote signer.\",\"params\":{\"signer\":\"The address of the account or currently authorized vote signer.\"},\"return\":\"The associated account.\"}}},\"userdoc\":{\"methods\":{\"addStorageRoot(bytes)\":{\"notice\":\"Adds a new CIP8 storage root.\"},\"attestationSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"authorizeAttestationSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign attestations on behalf of the account.\"},\"authorizeSigner(address,bytes32)\":{\"notice\":\"Begin the process of authorizing an address to sign on behalf of the account\"},\"authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to act as a signer, for `role`, on behalf of the account.\"},\"authorizeValidatorSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeVoteSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign votes on behalf of the account.\"},\"batchGetMetadataURL(address[])\":{\"notice\":\"Getter for the metadata of multiple accounts.\"},\"completeSignerAuthorization(address,bytes32)\":{\"notice\":\"Finish the process of authorizing an address to sign on behalf of the account. \"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"createAccount()\":{\"notice\":\"Creates an account.\"},\"deletePaymentDelegation()\":{\"notice\":\"Removes a validator's payment delegation by setting benficiary and fraction to 0.\"},\"getAttestationSigner(address)\":{\"notice\":\"Returns the attestation signer for the specified account.\"},\"getDataEncryptionKey(address)\":{\"notice\":\"Getter for the data encryption key and version.\"},\"getDefaultSigner(address,bytes32)\":{\"notice\":\"Returns the default signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getIndexedSigner(address,bytes32)\":{\"notice\":\"Returns the indexed signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getLegacySigner(address,bytes32)\":{\"notice\":\"Returns the legacy signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getMetadataURL(address)\":{\"notice\":\"Getter for the metadata of an account.\"},\"getName(address)\":{\"notice\":\"Getter for the name of an account.\"},\"getOffchainStorageRoots(address)\":{\"notice\":\"Returns the full list of offchain storage roots for an account.\"},\"getPaymentDelegation(address)\":{\"notice\":\"Gets validator payment delegation settings.\"},\"getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)\":{\"notice\":\"Returns the address that signed the provided role authorization.\"},\"getValidatorSigner(address)\":{\"notice\":\"Returns the validator signer for the specified account.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"getVoteSigner(address)\":{\"notice\":\"Returns the vote signer for the specified account.\"},\"getWalletAddress(address)\":{\"notice\":\"Getter for the wallet address for an account\"},\"hasAuthorizedAttestationSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated attestation signer.\"},\"hasAuthorizedSigner(address,string)\":{\"notice\":\"Checks whether or not the account has a signer registered for the plaintext role.\"},\"hasAuthorizedValidatorSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated validator signer.\"},\"hasAuthorizedVoteSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated vote signer.\"},\"hasDefaultSigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for a role\"},\"hasIndexedSigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for the role\"},\"hasLegacySigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for one of the legacy roles\"},\"initialize(address)\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"isAccount(address)\":{\"notice\":\"Check if an account already exists.\"},\"isAuthorizedSigner(address)\":{\"notice\":\"Check if an address has been an authorized signer for an account.\"},\"isDefaultSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as the default signer for role\"},\"isIndexedSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as an indexed signer for role\"},\"isLegacyRole(bytes32)\":{\"notice\":\"Checks whether the role is one of Vote, Validator or Attestation\"},\"isLegacySigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as the legacy signer for role\"},\"isSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as a signer for role\"},\"removeAttestationSigner()\":{\"notice\":\"Removes the currently authorized attestation signer for the account Note that the signers cannot be reauthorized after they have been removed.\"},\"removeDefaultSigner(bytes32)\":{\"notice\":\"Removes the signer for a default role.\"},\"removeIndexedSigner(bytes32)\":{\"notice\":\"Removes the currently authorized and indexed signer for a specific role\"},\"removeSigner(address,bytes32)\":{\"notice\":\"Removes the currently authorized signer for a specific role and if the signer is indexed, remove that as well.\"},\"removeStorageRoot(uint256)\":{\"notice\":\"Removes a CIP8 storage root.\"},\"removeValidatorSigner()\":{\"notice\":\"Removes the currently authorized validator signer for the account Note that the signers cannot be reauthorized after they have been removed.\"},\"removeVoteSigner()\":{\"notice\":\"Removes the currently authorized vote signer for the account. Note that the signers cannot be reauthorized after they have been removed.\"},\"setAccount(string,bytes,address,uint8,bytes32,bytes32)\":{\"notice\":\"Convenience Setter for the dataEncryptionKey and wallet address for an account\"},\"setAccountDataEncryptionKey(bytes)\":{\"notice\":\"Setter for the data encryption key and version.\"},\"setEip712DomainSeparator()\":{\"notice\":\"Sets the EIP712 domain separator for the Celo Accounts abstraction.\"},\"setIndexedSigner(address,bytes32)\":{\"notice\":\"Set the indexed signer for a specific role\"},\"setMetadataURL(string)\":{\"notice\":\"Setter for the metadata of an account.\"},\"setName(string)\":{\"notice\":\"Setter for the name of an account.\"},\"setPaymentDelegation(address,uint256)\":{\"notice\":\"Sets validator payment delegation settings.\"},\"setRegistry(address)\":{\"notice\":\"Updates the address pointing to a Registry contract.\"},\"setWalletAddress(address,uint8,bytes32,bytes32)\":{\"notice\":\"Setter for the wallet address for an account\"},\"signerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"validatorSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"voteSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol\":\"Accounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol\":{\"keccak256\":\"0xcac7c6f1ce377d6935cf5520595c5da2c7154d182c767eafa0554b154d3586ad\",\"urls\":[\"bzz-raw://59745b74e88d2f906b0f133d05c693be0bfcc09e7ce2dc7c2872a328b85d6964\",\"dweb:/ipfs/QmXmDhTEUM3vPSJMyz2aXeN8SHBJoQ7hyP4Sza4PG3Uxaz\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol\":{\"keccak256\":\"0x2f98fa3b3454621817917bae2830806858a96c9457be2c5b6e0bed5b35aaaba3\",\"urls\":[\"bzz-raw://b6bf5cf79debe02093777cc9ddef4616dedd041ccc2618c43ea91c90afd97df6\",\"dweb:/ipfs/QmXonY3FkVy2jnQvLkgDi4LcaniS5DVZ1zpRZecWKWy9Ro\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol\":{\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\",\"urls\":[\"bzz-raw://8c8b5c705c55e4141bf7fa4a6dd5941ebbf81969033476f737db357224075057\",\"dweb:/ipfs/QmcUySMBWov2uVEzVmwECzFLxiimqzLEip29w9bNvUvRBK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol\":{\"keccak256\":\"0xfdd9e70bd58259b491ec54779715d7469ab4f804836bf5f63ff86921d0cae056\",\"urls\":[\"bzz-raw://e55f23f464e49c42b1f31782dcb88cbd2ca64e050d5f110ccdc2ffd50cd582ff\",\"dweb:/ipfs/QmfBiet9GbT9S9rn9SG9CkyXQGAMQRuk4EBmChY1m4kv47\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol\":{\"keccak256\":\"0x6132a2e3105dbf00b52447db8bc307b052b2d02c0d00497bd0074ae3ce48027a\",\"urls\":[\"bzz-raw://07380d2593f1359e1440153597d16d1b4085a421f52909fafe3fa58f13088c62\",\"dweb:/ipfs/QmSjtmfFswK15Ta5NePg5voNVh9X63muCLCbQKgAZFG4rg\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\",\"urls\":[\"bzz-raw://880c77a981296abbf6fe9a7e3e0d5d441b19de70d310b10f4a469ce344e8e96c\",\"dweb:/ipfs/QmUAY1xYLXUQXwgBoRFaXFv5z9a6sMYT9v7WdEAAeSGCwW\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\",\"urls\":[\"bzz-raw://8f350863943ab54dcf4d5ea525c16748f59263bf36c1d85251c1164d0e592032\",\"dweb:/ipfs/QmXAG6fvVQKM86rVsk6R3ndEoHtS9fcAAVxBApJ5j3LWeK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IFreezer.sol\":{\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\",\"urls\":[\"bzz-raw://32df109167a13e684c9b296a0e13dda1899e418788eb59bf59aedd7a3ce65466\",\"dweb:/ipfs/QmR6BJCRFMSQpBpnSH2vzLE959FhXnmreDocWWc7fUYnnu\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol\":{\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\",\"urls\":[\"bzz-raw://fb012e7a76145a86b8746b0b10768845d17a5c5ab9cbdcd863fde42028b5632c\",\"dweb:/ipfs/QmdJi5va3broTVwJJ5uCBSg4T2rwTaAvzSBtnZzETvverK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IElection.sol\":{\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\",\"urls\":[\"bzz-raw://84dcf3a9952f1ce9a9110abb1783dfead290fd17c28216c5acb22de9d090921d\",\"dweb:/ipfs/QmeNoLz8WcHX9GLcBfQChXFHsFDRaVRRXnPXXvB2qVTaSZ\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\",\"urls\":[\"bzz-raw://cabeae6e6c47364291f12cf69658dcf5bdd8ac7eebda53d48a2b03aab96386a3\",\"dweb:/ipfs/QmUtPSC4hVz79XVVjFwQ6CozMd6oAR1m6yrPFkHD5sCdB1\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/ILockedGold.sol\":{\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\",\"urls\":[\"bzz-raw://6b955b6829748cd136fa92c3a434f5419e4eb024d535a854900ad48bd4151b67\",\"dweb:/ipfs/QmXM5uL5dsKecYyedAzsrZXAp81NtWQErbbVEFccJ6ZqiY\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IValidators.sol\":{\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\",\"urls\":[\"bzz-raw://cf5d0c2f6ee9b2c8e270162455177e9c3bac79ac07d4f37c86f7f2ee5978a756\",\"dweb:/ipfs/QmZTKmytn1Wi3QfU3bHuSaSeYQzRrFKehyngrg37rHD3vV\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/identity/interfaces/IAttestations.sol\":{\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\",\"urls\":[\"bzz-raw://c1255d08278188247ef81fb09edd2d1d4a019fb0fe80fd3d9850415c5eb5caaf\",\"dweb:/ipfs/QmcJvqSM35nAR8p8LwVczhnaY6VwTRThNjfCzkzeiAkz45\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/identity/interfaces/IRandom.sol\":{\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\",\"urls\":[\"bzz-raw://f2c6fe351990bfdeb55484bd3622d44c8f58579a7212d5cce71a82df846497f5\",\"dweb:/ipfs/QmRDDTXUqbA6dHfJe4ZS1442JDAfwoHq2eH9LHnQyzsh44\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IExchange.sol\":{\"keccak256\":\"0xbfcf77e30fc62218decbb73297d5161b9c490f7e44f75158f1c79674e4b8b83c\",\"urls\":[\"bzz-raw://ad0caaddcb552a2c040e827e9336cdec7dfaf629cca9f30e5f5bc12645abde43\",\"dweb:/ipfs/QmTjnGbfoSkZhNWhrbcYdLjF1LLqAJcviJ2ZKSMH9KWz95\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IReserve.sol\":{\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\",\"urls\":[\"bzz-raw://198fb3cd945e374926e3d6bcb2469b7f5c635e78b40417a4b3a1eacabeca234b\",\"dweb:/ipfs/Qma8RRSqksFCzL5gWTXmGtJvC4Mw1bgquvN33nKhrRwUrD\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/ISortedOracles.sol\":{\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\",\"urls\":[\"bzz-raw://f1a472385d5fa1b1cc4ab6ff948cd11f86c55328841d89f39f02b64449d3ac1a\",\"dweb:/ipfs/QmSYfwR8RJ2nyzt9VJtLKqaUHwAPfz579vhcQP7LRLaqTe\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol\":{\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\",\"urls\":[\"bzz-raw://94f7d7578274be8212b8c9a3f0759d884969b05a7f0c64c7c9352102f4e51ab4\",\"dweb:/ipfs/Qmd3bERcFLrrvpURuzKUg6YCSFisNQ36YpRLWkxEcS1Tkj\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\",\"urls\":[\"bzz-raw://b736ddad8143f8f1cd13c20809d4ebce5f5a8c7725081b0b703294078bd506d1\",\"dweb:/ipfs/QmdhTWCXFCuwG9JaPMjwnhkQoDj9su8R7KMPNvD5z9KeWD\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162008fcd38038062008fcd833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508062000122576001600260006101000a81548160ff0219169083151502179055505b505062000132565b600033905090565b618e8b80620001426000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637b2434cb1161022b578063ae32fa0e11610130578063c48830d9116100b8578063f0c5658411610087578063f0c56584146121d1578063f2fde38b146121ef578063f333d83614612233578063fbe3c37314612279578063ff836d93146122c75761041d565b8063c48830d9146120ab578063c4d66de814612131578063e7a16e6b14612175578063e8d787cb146121a35761041d565b8063ba40e4f6116100ff578063ba40e4f614611e74578063baf7ef0f14611f25578063bce2b8d614611f8a578063c2e0ee2014611f94578063c47f002714611ff05761041d565b8063ae32fa0e14611beb578063b062c84314611ca8578063b5a664c214611d21578063b6c6662514611da55761041d565b806392f90fbf116101b35780639f024f4b116101825780639f024f4b14611a075780639f68297614611a92578063a5ec94f914611ae0578063a8ae1a3d14611aea578063a91ee0dc14611ba75761041d565b806392f90fbf1461188d57806393c5c487146118fc5780639cafb2a1146119805780639dca362f146119e55761041d565b80638da5cb5b116101fa5780638da5cb5b1461163e5780638f32d59b146116885780638f9ae6dc146116aa57806390b12b47146116f857806391cd074b146118075761041d565b80637b2434cb1461136457806387affe68146113e85780638adaf96f146114765780638bceca58146115b05761041d565b806349045e161161033157806364439b43116102b9578063747daec511610288578063747daec51461116b57806376082c1f146111e4578063760fbbb2146112ab57806376afa04c146112b55780637b1039991461131a5761041d565b806364439b431461100b5780636642d5941461108f578063715018a614611113578063727d079c1461111d5761041d565b80635b07fdd8116103005780635b07fdd814610dc25780635b6d900414610de05780635fd4b08a14610e6e578063614ed49314610f2b57806361bab1ae14610f875761041d565b806349045e1614610c615780634ce38b5f14610cbd57806354255be014610d4157806358b81ea814610d745761041d565b80631465b923116103b4578063289a131811610383578063289a1318146109e35780633184b3c514610ae857806341ddd88014610af25780634282ee6d14610b76578063485a46d114610bdb5761041d565b80631465b9231461077d578063158ef93e146108e15780631fd9afa51461090357806325ca4c9c146109875761041d565b80630fa750d2116103f05780630fa750d2146105985780630fe7abab1461065257806310c504b51461070d5780631441ece7146107175761041d565b80630127dbed146104225780630185a2321461047e57806305be6229146104ac5780630b8e056214610512575b600080fd5b6104646004803603602081101561043857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b604051808215151515815260200191505060405180910390f35b6104aa6004803603602081101561049457600080fd5b8101908080359060200190929190505050612386565b005b6104f8600480360360408110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243f565b604051808215151515815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612482565b604051808215151515815260200191505060405180910390f35b610650600480360360a08110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b909192939192939050505061252c565b005b61070b6004803603602081101561066857600080fd5b810190808035906020019064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061285e565b005b6107156129e9565b005b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0a565b604051808215151515815260200191505060405180910390f35b6108df600480360360e081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b90919293919293908035906020019064010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184600183028401116401000000008311171561087a57600080fd5b90919293919293908035906020019064010000000081111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111640100000000831117156108cf57600080fd5b9091929391929390505050612b4d565b005b6108e9612f08565b604051808215151515815260200191505060405180910390f35b6109456004803603602081101561091957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c96004803603602081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f87565b604051808215151515815260200191505060405180910390f35b610a25600480360360208110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fe0565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019060200280838360005b83811015610ad2578082015181840152602081019050610ab7565b5050505090500194505050505060405180910390f35b610af061333b565b005b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613445565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bd960048036036080811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061349e565b005b610c4760048036036060811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613650565b604051808215151515815260200191505060405180910390f35b610ca360048036036020811015610c7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a1565b604051808215151515815260200191505060405180910390f35b610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d49613892565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610dc060048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b9565b005b610dca613b0e565b6040518082815260200191505060405180910390f35b610e2c60048036036040811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eb060048036036020811015610e8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bcf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef0578082015181840152602081019050610ed5565b50505050905090810190601f168015610f1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f6d60048036036020811015610f4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb3565b604051808215151515815260200191505060405180910390f35b610fc960048036036020811015610f9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110d1600480360360208110156110a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61111b613e17565b005b6111696004803603604081101561113357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f50565b005b6111e26004803603602081101561118157600080fd5b810190808035906020019064010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b909192939192939050505061453f565b005b611230600480360360408110156111fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614690565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611270578082015181840152602081019050611255565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6112b3614756565b005b611318600480360360808110156112cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050614877565b005b61132261499a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6113a66004803603602081101561137a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611434600480360360408110156113fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6114ed6004803603602081101561148c57600080fd5b81019080803590602001906401000000008111156114a957600080fd5b8201836020820111156114bb57600080fd5b803590602001918460208302840111640100000000831117156114dd57600080fd5b9091929391929390505050614a4a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611534578082015181840152602081019050611519565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611573578082015181840152602081019050611558565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6115fc600480360360408110156115c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614d49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611646614fc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611690614fef565b604051808215151515815260200191505060405180910390f35b6116f6600480360360408110156116c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061504d565b005b611805600480360360c081101561170e57600080fd5b810190808035906020019064010000000081111561172b57600080fd5b82018360208201111561173d57600080fd5b8035906020019184600183028401116401000000008311171561175f57600080fd5b90919293919293908035906020019064010000000081111561178057600080fd5b82018360208201111561179257600080fd5b803590602001918460018302840111640100000000831117156117b457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506152ec565b005b6118736004803603606081101561181d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506153b3565b604051808215151515815260200191505060405180910390f35b6118fa600480360360a08110156118a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050615626565b005b61193e6004803603602081101561191257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6119e36004803603608081101561199657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506158c7565b005b6119ed615c2e565b604051808215151515815260200191505060405180910390f35b611a4960048036036020811015611a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615d67565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b611ade60048036036040811015611aa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615dfd565b005b611ae86161a5565b005b611b2c60048036036020811015611b0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506162c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611b6c578082015181840152602081019050611b51565b50505050905090810190601f168015611b995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611be960048036036020811015611bbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506163aa565b005b611c2d60048036036020811015611c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061654e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c6d578082015181840152602081019050611c52565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611d1f60048036036020811015611cbe57600080fd5b8101908080359060200190640100000000811115611cdb57600080fd5b820183602082011115611ced57600080fd5b80359060200191846001830284011164010000000083111715611d0f57600080fd5b9091929391929390505050616632565b005b611d6360048036036020811015611d3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506167aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611e32600480360360c0811015611dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506167dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611f0b60048036036040811015611e8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115611ec757600080fd5b820183602082011115611ed957600080fd5b80359060200191846001830284011164010000000083111715611efb57600080fd5b9091929391929390505050616950565b604051808215151515815260200191505060405180910390f35b611f8860048036036080811015611f3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050616994565b005b611f92616c5b565b005b611fd660048036036020811015611faa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616dfb565b604051808215151515815260200191505060405180910390f35b6120a96004803603602081101561200657600080fd5b810190808035906020019064010000000081111561202357600080fd5b82018360208201111561203557600080fd5b8035906020019184600183028401116401000000008311171561205757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050616e54565b005b612117600480360360608110156120c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616fe2565b604051808215151515815260200191505060405180910390f35b6121736004803603602081101561214757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617016565b005b6121a16004803603602081101561218b57600080fd5b81019080803590602001909291905050506170d1565b005b6121cf600480360360208110156121b957600080fd5b810190808035906020019092919050505061725c565b005b6121d96176a4565b6040518082815260200191505060405180910390f35b6122316004803603602081101561220557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506176c0565b005b61225f6004803603602081101561224957600080fd5b8101908080359060200190929190505050617746565b604051808215151515815260200191505060405180910390f35b6122c56004803603604081101561228f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617838565b005b612313600480360360408110156122dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617989565b604051808215151515815260200191505060405180910390f35b600061237f8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120612b0a565b9050919050565b60006123923383614a19565b905061239d82617746565b6123af576123aa826170d1565b6123b9565b6123b8826179ba565b5b3373ffffffffffffffffffffffffffffffffffffffff167fccc97b55d227538f487c521e1218ba74768b73d088310238027c2ae3b43e9c918284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b60008273ffffffffffffffffffffffffffffffffffffffff166124628484613b14565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490509392505050565b60018060008282540192505081905550600060015490506125968760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120888888617cd0565b6125e68760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b6125ee617e49565b73ffffffffffffffffffffffffffffffffffffffff16634e06fd8a338986866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050506040513d60208110156126fe57600080fd5b8101908080519060200190929190505050612764576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618e366021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505050565b6021815110156128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6461746120656e6372797074696f6e206b6579206c656e677468203c3d20333281525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160060190805190602001906129319291906188df565b503373ffffffffffffffffffffffffffffffffffffffff167f43fdefe0a824cb0e3bbaf9c4bc97669187996136fe9282382baf10787f0d808d836040518080602001828103825283818151815260200191508051906020019080838360005b838110156129ab578082015181840152602081019050612990565b50505050905090810190601f1680156129d85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000612a3b3360405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050612a8d8160405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa197481f404d8a8082368ad7445380f01e75f27dea6b7aef234a4ce071127fae82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b60008273ffffffffffffffffffffffffffffffffffffffff16612b2d8484614d49565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b6001806000828254019250508190555060006001549050612bb78b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208c8c8c617cd0565b612c078b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b612c0f617e49565b73ffffffffffffffffffffffffffffffffffffffff1663713ea0f3338d8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509b505050505050505050505050602060405180830381600087803b158015612d5d57600080fd5b505af1158015612d71573d6000803e3d6000fd5b505050506040513d6020811015612d8757600080fd5b8101908080519060200190929190505050612e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4661696c656420746f207570646174652076616c696461746f72206b6579730081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf949438c604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050505050505050565b600260009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b606080612fec83612f87565b61305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600080905060008090505b8281101561314257613133600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061310557fe5b9060005260206000200180546001816001161561010002031660029004905083617f4490919063ffffffff16565b915080806001019150506130b0565b506060816040519080825280601f01601f1916602001820160405280156131785781602001600182028038833980820191505090505b50905060008090506060846040519080825280602002602001820160405280156131b15781602001602082028038833980820191505090505b50905060008090505b8581101561332a576000600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061320e57fe5b9060005260206000200190508080546001816001161561010002031660029004905083838151811061323c57fe5b60200260200101818152505060008090505b83838151811061325a57fe5b602002602001015181101561331b57818181546001816001161561010002031660029004811061328657fe5b8154600116156132a55790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000028686815181106132d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508480600101955050808060010191505061324e565b505080806001019150506131ba565b508281965096505050505050915091565b60004690506040518080618d4b60529139605201905060405180910390206040518060400160405280601381526020017f43656c6f20436f726520436f6e747261637473000000000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060078190555050565b60006134978260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050919050565b60018060008282540192505081905550600060015490506135088560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120868686617cd0565b6135588560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167faab5f8a189373aaa290f42ae65ea5d7971b732366ca5bf66556e76263944af2886604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b600061365d8484846153b3565b806137985750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16801561379757508373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061388b8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b9050919050565b60008060008060018060046000839350829250819150809050935093509350935090919293565b6138c233612f87565b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b61393d82617fcc565b801561394f575061394e3383618026565b5b6139a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b604051806040016040528060011515815260200160001515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050803373ffffffffffffffffffffffffffffffffffffffff167f7a162218a1b7bec7fb15b4bb95220fbf423fa3a49718133f5c50361ff1c8537684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60075481565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613bc45780613bc6565b835b91505092915050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ca75780601f10613c7c57610100808354040283529160200191613ca7565b820191906000526020600020905b815481529060010190602001808311613c8a57829003601f168201915b50505050509050919050565b6000613d058260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120612b0a565b9050919050565b6000613d5e8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b9050919050565b6000613db78260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120618153565b9050919050565b6000613e108260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120618153565b9050919050565b613e1f614fef565b613e91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b613f5933612f87565b613fcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b613fd482617fcc565b614029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618ca16022913960400191505060405180910390fd5b6140333383618026565b6140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f742061207369676e657220666f722074686973206163636f756e7400000081525060200191505060405180910390fd5b6140b0338383613650565b614105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180618dc0602f913960400191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061415182617746565b156143a65760405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214156141ef57828160010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082141561428857828160010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431e565b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082141561431d57828160010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fc5cd67202a8095484f559b338b2b6fee0dd81af9f70c4814c6517fcf9a09564c8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26144b8565b82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f2613ed414d18d8152e86c896c04ccce344b75a2f06141f04d39ad069a38725238484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167f8a00ae3e0722558391733230bfc96d425df2dd7b44f7ce506580785adcf171a28484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b61454833612f87565b6145ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828282600701919061461092919061895f565b503373ffffffffffffffffffffffffffffffffffffffff167f0b5629fec5b6b5a1c2cfe0de7495111627a8cf297dced72e0669527425d3f01b848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2505050565b600860205281600052604060002081815481106146a957fe5b90600052602060002001600091509150508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561474e5780601f106147235761010080835404028352916020019161474e565b820191906000526020600020905b81548152906001019060200180831161473157829003601f168201915b505050505081565b60006147a83360405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b90506147fa8160405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167f14670729407debb6ed03d885f8ba57155de89ce39bf17127ae4900ec7c2ad10382604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6148ca8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120858585617cd0565b61491a8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167f9dfbc5a621c3e2d0d83beee687a17dfc796bbce2118793e5e254409bb265ca0b85604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000614a128260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120618153565b9050919050565b6000614a2482617746565b614a3757614a328383613b14565b614a42565b614a418383614d49565b5b905092915050565b6060806000809050606085859050604051908082528060200260200182016040528015614a865781602001602082028038833980820191505090505b50905060008090505b86869050811015614b745760036000888884818110614aaa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701805460018160011615610100020316600290049050828281518110614b2557fe5b602002602001018181525050614b57828281518110614b4057fe5b602002602001015184617f4490919063ffffffff16565b9250614b6d600182617f4490919063ffffffff16565b9050614a8f565b506060826040519080825280601f01601f191660200182016040528015614baa5781602001600182028038833980820191505090505b509050600080905060008090505b88889050811015614d375760008090505b848281518110614bd557fe5b6020026020010151811015614d1b57600360008b8b85818110614bf457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181815460018160011615610100020316600290048110614c6a57fe5b815460011615614c895790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848481518110614cbb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350614cfe600184617f4490919063ffffffff16565b9250614d14600182617f4490919063ffffffff16565b9050614bc9565b50614d30600182617f4490919063ffffffff16565b9050614bb8565b50828295509550505050509250929050565b6000614d5482617746565b614dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f526f6c65206973206e6f742061206c6567616379207369676e6572000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120841415614e88578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f80565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120841415614f05578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f7f565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120841415614f7e578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614fba5780614fbc565b845b9250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166150316182db565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61505633612f87565b6150c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561514e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618cc36021913960400191505060405180910390fd5b6151566189df565b61515f826182e3565b905061517b61516c618301565b8261832790919063ffffffff16565b6151d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180618d9d6023913960400191505060405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200182815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001016000820151816000015550509050508273ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df836040518082815260200191505060405180910390a2505050565b6152f533612f87565b61530357615301615c2e565b505b61535088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050616e54565b61539d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061285e565b6153a9848484846158c7565b5050505050505050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208314801561549e57508373ffffffffffffffffffffffffffffffffffffffff168160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156154ad57600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e000000000000008152506019019050604051602081830303815290604052805190602001208314801561555457508373ffffffffffffffffffffffffffffffffffffffff168160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561556357600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208314801561560a57508373ffffffffffffffffffffffffffffffffffffffff168160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561561957600191505061561f565b60009150505b9392505050565b615633858585858561833d565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461584257809150506158c2565b61584b83612f87565b6158bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b829150505b919050565b6158d033612f87565b615942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806159a85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b615b2757600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015615a4757600080fd5b505af4158015615a5b573d6000803e3d6000fd5b505050506040513d6020811015615a7157600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614615b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167ff81d74398fd47e35c36b714019df15f200f623dde569b5b531d6a0b4da5c5f2686604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050505050565b6000615c3933617fcc565b8015615c4a5750615c4933618401565b5b615cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636f756e742065786973747300000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f805996f252884581e2f74cf3d2b03564d5ec26ccc90850ae12653dc1b72d1fa260405160405180910390a2600191505090565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16615df382600101604051806020016040529081600082015481525050618498565b9250925050915091565b615e0682612f87565b615e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b615e8133617fcc565b8015615e935750615e928233618026565b5b615ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b60011515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514615fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e657220617574686f72697a6174696f6e206e6f74207374617274656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff167f9eeca140dda0bdb74fc9acfda0f1c0324e188a732bd48e078a96b16d97eb54e533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60006161f73360405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b90506162498160405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa54764c62865ff0cd3f271fb1d4635662bff10f0878694f1654fb7fbdecb830d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561639e5780601f106163735761010080835404028352916020019161639e565b820191906000526020600020905b81548152906001019060200180831161638157829003601f168201915b50505050509050919050565b6163b2614fef565b616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156164c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156166265780601f106165fb57610100808354040283529160200191616626565b820191906000526020600020905b81548152906001019060200180831161660957829003601f168201915b50505050509050919050565b61663b33612f87565b6166ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082829091806001815401808255809150509060018203906000526020600020016000909192939091929390919290919250919061672a9291906189f2565b50503373ffffffffffffffffffffffffffffffffffffffff167f15dfb3066a1bbbdaf9a7f62c47db990114058ae1739fd70a90361ea715bbf3c8838360405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518080618c65603c9139603c0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405160208183030381529060405280519060200120905073__Signatures____________________________6334d1a233600754838888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561690857600080fd5b505af415801561691c573d6000803e3d6000fd5b505050506040513d602081101561693257600080fd5b81019080805190602001909291905050509150509695505050505050565b600061698b84848460405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120617989565b90509392505050565b60018060008282540192505081905550600060015490506169fe8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120868686617cd0565b616a4e8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b616a56617e49565b73ffffffffffffffffffffffffffffffffffffffff1663facd743b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015616ad257600080fd5b505afa158015616ae6573d6000803e3d6000fd5b505050506040513d6020811015616afc57600080fd5b810190808051906020019092919050505015616b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618d2a6021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494386604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114616c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b616c6433612f87565b616cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001616d0860006182e3565b815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101600082015181600001555050905050600073ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df60006040518082815260200191505060405180910390a2565b6000616e4d8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120612b0a565b9050919050565b616e5d33612f87565b616ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816005019080519060200190616f2a929190618a72565b503373ffffffffffffffffffffffffffffffffffffffff167fa6e2c5a23bb917ba0a584c4b250257ddad698685829b66a8813c004b39934fe4836040518080602001828103825283818151815260200191508051906020019080838360005b83811015616fa4578082015181840152602081019050616f89565b50505050905090810190601f168015616fd15780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000616fed82617746565b61700157616ffc848484612482565b61700d565b61700c8484846153b3565b5b90509392505050565b600260009054906101000a900460ff1615617099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506170bd336184a6565b6170c6816163aa565b6170ce61333b565b50565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe553a3065d5a77d4ec2a0e0c31d49be4bf4d9f4c45883b2d67f61ba9c1b89c5d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b61726533612f87565b6172d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061738e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642073746f7261676520726f6f7420696e64657800000000000081525060200191505060405180910390fd5b60006001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500390506060600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061742457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156174c25780601f10617497576101008083540402835291602001916174c2565b820191906000526020600020905b8154815290600101906020018083116174a557829003601f168201915b50505050509050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061751357fe5b90600052602060002001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061756757fe5b906000526020600020019080546001816001161561010002031660029004617590929190618af2565b50600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036175e39190618b79565b503373ffffffffffffffffffffffffffffffffffffffff167fae0f2fa495a3eb65d46fe97b0baea8b6fd7edb243175c70f2455e6e83bc6fbaf82856040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015617664578082015181840152602081019050617649565b50505050905090810190601f1680156176915780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6040518080618c65603c9139603c019050604051809103902081565b6176c8614fef565b61773a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b617743816184a6565b50565b600060405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214806177e1575060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082145b80617831575060405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082145b9050919050565b617843338383616fe2565b156178525761785181612386565b5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690555050803373ffffffffffffffffffffffffffffffffffffffff167fde9ce22cf1f8631ae2b668300f0493971114f40edd305173bd099ce7100fbe0b84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b600061799482617746565b6179a7576179a2838361243f565b6179b2565b6179b18383612b0a565b5b905092915050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120831415617ac3578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c49565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120831415617b87578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c48565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120831415617c47578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fdd0b0d959c29750e7bfabbb7543a56957699d07edc512d2523ffe7502901ac198285604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b617cdc858484846185ea565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015617f0457600080fd5b505afa158015617f18573d6000803e3d6000fd5b505050506040513d6020811015617f2e57600080fd5b8101908080519060200190929190505050905090565b600080828401905083811015617fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16159050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061814b57508273ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618255576181f7818585613650565b61824c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180618e116025913960400191505060405180910390fd5b809150506182d5565b61825e84612f87565b6182d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b839150505b92915050565b600033905090565b6182eb6189df565b6040518060200160405280838152509050919050565b6183096189df565b604051806020016040528069d3c21bcecceda1000000815250905090565b6000816000015183600001511115905092915050565b600061834d3387878787876167dd565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146183f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b6183f986618773565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081600001519050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561852c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180618c3f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b15801561868557600080fd5b505af4158015618699573d6000803e3d6000fd5b505050506040513d60208110156186af57600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b61876c85618773565b5050505050565b61877c33612f87565b6187ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6187f781617fcc565b801561880957506188083382618026565b5b61885e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180618ce46046913960600191505060405180910390fd5b33600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061892057805160ff191683800117855561894e565b8280016001018555821561894e579182015b8281111561894d578251825591602001919060010190618932565b5b50905061895b9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106189a057803560ff19168380011785556189ce565b828001600101855582156189ce579182015b828111156189cd5782358255916020019190600101906189b2565b5b5090506189db9190618ba5565b5090565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618a3357803560ff1916838001178555618a61565b82800160010185558215618a61579182015b82811115618a60578235825591602001919060010190618a45565b5b509050618a6e9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618ab357805160ff1916838001178555618ae1565b82800160010185558215618ae1579182015b82811115618ae0578251825591602001919060010190618ac5565b5b509050618aee9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618b2b5780548555618b68565b82800160010185558215618b6857600052602060002091601f016020900482015b82811115618b67578254825591600101919060010190618b4c565b5b509050618b759190618ba5565b5090565b815481835581811115618ba057818360005260206000209182019101618b9f9190618bca565b5b505050565b618bc791905b80821115618bc3576000816000905550600101618bab565b5090565b90565b618bf391905b80821115618bef5760008181618be69190618bf6565b50600101618bd0565b5090565b90565b50805460018160011615610100020316600290046000825580601f10618c1c5750618c3b565b601f016020900490600052602060002090810190618c3a9190618ba5565b5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c652943616e6e6f7420617574686f72697a65206163636f756e74206173207369676e657242656e65666963696172792063616e6e6f7420626520616464726573732030783043616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e7443616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294672616374696f6e206d757374206e6f742062652067726561746572207468616e20314d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c7443616e6e6f742072652d617574686f72697a652061646472657373207369676e65726e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c654661696c656420746f20757064617465204543445341207075626c6963206b6579a265627a7a72315820494926be723757ebb3486526944b7b3aaf281611d31e3db3240a1acc4784b66b64736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061041d5760003560e01c80637b2434cb1161022b578063ae32fa0e11610130578063c48830d9116100b8578063f0c5658411610087578063f0c56584146121d1578063f2fde38b146121ef578063f333d83614612233578063fbe3c37314612279578063ff836d93146122c75761041d565b8063c48830d9146120ab578063c4d66de814612131578063e7a16e6b14612175578063e8d787cb146121a35761041d565b8063ba40e4f6116100ff578063ba40e4f614611e74578063baf7ef0f14611f25578063bce2b8d614611f8a578063c2e0ee2014611f94578063c47f002714611ff05761041d565b8063ae32fa0e14611beb578063b062c84314611ca8578063b5a664c214611d21578063b6c6662514611da55761041d565b806392f90fbf116101b35780639f024f4b116101825780639f024f4b14611a075780639f68297614611a92578063a5ec94f914611ae0578063a8ae1a3d14611aea578063a91ee0dc14611ba75761041d565b806392f90fbf1461188d57806393c5c487146118fc5780639cafb2a1146119805780639dca362f146119e55761041d565b80638da5cb5b116101fa5780638da5cb5b1461163e5780638f32d59b146116885780638f9ae6dc146116aa57806390b12b47146116f857806391cd074b146118075761041d565b80637b2434cb1461136457806387affe68146113e85780638adaf96f146114765780638bceca58146115b05761041d565b806349045e161161033157806364439b43116102b9578063747daec511610288578063747daec51461116b57806376082c1f146111e4578063760fbbb2146112ab57806376afa04c146112b55780637b1039991461131a5761041d565b806364439b431461100b5780636642d5941461108f578063715018a614611113578063727d079c1461111d5761041d565b80635b07fdd8116103005780635b07fdd814610dc25780635b6d900414610de05780635fd4b08a14610e6e578063614ed49314610f2b57806361bab1ae14610f875761041d565b806349045e1614610c615780634ce38b5f14610cbd57806354255be014610d4157806358b81ea814610d745761041d565b80631465b923116103b4578063289a131811610383578063289a1318146109e35780633184b3c514610ae857806341ddd88014610af25780634282ee6d14610b76578063485a46d114610bdb5761041d565b80631465b9231461077d578063158ef93e146108e15780631fd9afa51461090357806325ca4c9c146109875761041d565b80630fa750d2116103f05780630fa750d2146105985780630fe7abab1461065257806310c504b51461070d5780631441ece7146107175761041d565b80630127dbed146104225780630185a2321461047e57806305be6229146104ac5780630b8e056214610512575b600080fd5b6104646004803603602081101561043857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b604051808215151515815260200191505060405180910390f35b6104aa6004803603602081101561049457600080fd5b8101908080359060200190929190505050612386565b005b6104f8600480360360408110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243f565b604051808215151515815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612482565b604051808215151515815260200191505060405180910390f35b610650600480360360a08110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b909192939192939050505061252c565b005b61070b6004803603602081101561066857600080fd5b810190808035906020019064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061285e565b005b6107156129e9565b005b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0a565b604051808215151515815260200191505060405180910390f35b6108df600480360360e081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b90919293919293908035906020019064010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184600183028401116401000000008311171561087a57600080fd5b90919293919293908035906020019064010000000081111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111640100000000831117156108cf57600080fd5b9091929391929390505050612b4d565b005b6108e9612f08565b604051808215151515815260200191505060405180910390f35b6109456004803603602081101561091957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c96004803603602081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f87565b604051808215151515815260200191505060405180910390f35b610a25600480360360208110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fe0565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019060200280838360005b83811015610ad2578082015181840152602081019050610ab7565b5050505090500194505050505060405180910390f35b610af061333b565b005b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613445565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bd960048036036080811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061349e565b005b610c4760048036036060811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613650565b604051808215151515815260200191505060405180910390f35b610ca360048036036020811015610c7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a1565b604051808215151515815260200191505060405180910390f35b610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d49613892565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610dc060048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b9565b005b610dca613b0e565b6040518082815260200191505060405180910390f35b610e2c60048036036040811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eb060048036036020811015610e8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bcf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef0578082015181840152602081019050610ed5565b50505050905090810190601f168015610f1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f6d60048036036020811015610f4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb3565b604051808215151515815260200191505060405180910390f35b610fc960048036036020811015610f9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110d1600480360360208110156110a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61111b613e17565b005b6111696004803603604081101561113357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f50565b005b6111e26004803603602081101561118157600080fd5b810190808035906020019064010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b909192939192939050505061453f565b005b611230600480360360408110156111fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614690565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611270578082015181840152602081019050611255565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6112b3614756565b005b611318600480360360808110156112cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050614877565b005b61132261499a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6113a66004803603602081101561137a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611434600480360360408110156113fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6114ed6004803603602081101561148c57600080fd5b81019080803590602001906401000000008111156114a957600080fd5b8201836020820111156114bb57600080fd5b803590602001918460208302840111640100000000831117156114dd57600080fd5b9091929391929390505050614a4a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611534578082015181840152602081019050611519565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611573578082015181840152602081019050611558565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6115fc600480360360408110156115c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614d49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611646614fc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611690614fef565b604051808215151515815260200191505060405180910390f35b6116f6600480360360408110156116c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061504d565b005b611805600480360360c081101561170e57600080fd5b810190808035906020019064010000000081111561172b57600080fd5b82018360208201111561173d57600080fd5b8035906020019184600183028401116401000000008311171561175f57600080fd5b90919293919293908035906020019064010000000081111561178057600080fd5b82018360208201111561179257600080fd5b803590602001918460018302840111640100000000831117156117b457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506152ec565b005b6118736004803603606081101561181d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506153b3565b604051808215151515815260200191505060405180910390f35b6118fa600480360360a08110156118a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050615626565b005b61193e6004803603602081101561191257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6119e36004803603608081101561199657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506158c7565b005b6119ed615c2e565b604051808215151515815260200191505060405180910390f35b611a4960048036036020811015611a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615d67565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b611ade60048036036040811015611aa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615dfd565b005b611ae86161a5565b005b611b2c60048036036020811015611b0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506162c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611b6c578082015181840152602081019050611b51565b50505050905090810190601f168015611b995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611be960048036036020811015611bbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506163aa565b005b611c2d60048036036020811015611c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061654e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c6d578082015181840152602081019050611c52565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611d1f60048036036020811015611cbe57600080fd5b8101908080359060200190640100000000811115611cdb57600080fd5b820183602082011115611ced57600080fd5b80359060200191846001830284011164010000000083111715611d0f57600080fd5b9091929391929390505050616632565b005b611d6360048036036020811015611d3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506167aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611e32600480360360c0811015611dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506167dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611f0b60048036036040811015611e8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115611ec757600080fd5b820183602082011115611ed957600080fd5b80359060200191846001830284011164010000000083111715611efb57600080fd5b9091929391929390505050616950565b604051808215151515815260200191505060405180910390f35b611f8860048036036080811015611f3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050616994565b005b611f92616c5b565b005b611fd660048036036020811015611faa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616dfb565b604051808215151515815260200191505060405180910390f35b6120a96004803603602081101561200657600080fd5b810190808035906020019064010000000081111561202357600080fd5b82018360208201111561203557600080fd5b8035906020019184600183028401116401000000008311171561205757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050616e54565b005b612117600480360360608110156120c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616fe2565b604051808215151515815260200191505060405180910390f35b6121736004803603602081101561214757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617016565b005b6121a16004803603602081101561218b57600080fd5b81019080803590602001909291905050506170d1565b005b6121cf600480360360208110156121b957600080fd5b810190808035906020019092919050505061725c565b005b6121d96176a4565b6040518082815260200191505060405180910390f35b6122316004803603602081101561220557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506176c0565b005b61225f6004803603602081101561224957600080fd5b8101908080359060200190929190505050617746565b604051808215151515815260200191505060405180910390f35b6122c56004803603604081101561228f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617838565b005b612313600480360360408110156122dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617989565b604051808215151515815260200191505060405180910390f35b600061237f8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120612b0a565b9050919050565b60006123923383614a19565b905061239d82617746565b6123af576123aa826170d1565b6123b9565b6123b8826179ba565b5b3373ffffffffffffffffffffffffffffffffffffffff167fccc97b55d227538f487c521e1218ba74768b73d088310238027c2ae3b43e9c918284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b60008273ffffffffffffffffffffffffffffffffffffffff166124628484613b14565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490509392505050565b60018060008282540192505081905550600060015490506125968760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120888888617cd0565b6125e68760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b6125ee617e49565b73ffffffffffffffffffffffffffffffffffffffff16634e06fd8a338986866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050506040513d60208110156126fe57600080fd5b8101908080519060200190929190505050612764576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618e366021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505050565b6021815110156128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6461746120656e6372797074696f6e206b6579206c656e677468203c3d20333281525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160060190805190602001906129319291906188df565b503373ffffffffffffffffffffffffffffffffffffffff167f43fdefe0a824cb0e3bbaf9c4bc97669187996136fe9282382baf10787f0d808d836040518080602001828103825283818151815260200191508051906020019080838360005b838110156129ab578082015181840152602081019050612990565b50505050905090810190601f1680156129d85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000612a3b3360405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050612a8d8160405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa197481f404d8a8082368ad7445380f01e75f27dea6b7aef234a4ce071127fae82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b60008273ffffffffffffffffffffffffffffffffffffffff16612b2d8484614d49565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b6001806000828254019250508190555060006001549050612bb78b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208c8c8c617cd0565b612c078b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b612c0f617e49565b73ffffffffffffffffffffffffffffffffffffffff1663713ea0f3338d8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509b505050505050505050505050602060405180830381600087803b158015612d5d57600080fd5b505af1158015612d71573d6000803e3d6000fd5b505050506040513d6020811015612d8757600080fd5b8101908080519060200190929190505050612e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4661696c656420746f207570646174652076616c696461746f72206b6579730081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf949438c604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050505050505050565b600260009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b606080612fec83612f87565b61305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600080905060008090505b8281101561314257613133600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061310557fe5b9060005260206000200180546001816001161561010002031660029004905083617f4490919063ffffffff16565b915080806001019150506130b0565b506060816040519080825280601f01601f1916602001820160405280156131785781602001600182028038833980820191505090505b50905060008090506060846040519080825280602002602001820160405280156131b15781602001602082028038833980820191505090505b50905060008090505b8581101561332a576000600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061320e57fe5b9060005260206000200190508080546001816001161561010002031660029004905083838151811061323c57fe5b60200260200101818152505060008090505b83838151811061325a57fe5b602002602001015181101561331b57818181546001816001161561010002031660029004811061328657fe5b8154600116156132a55790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000028686815181106132d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508480600101955050808060010191505061324e565b505080806001019150506131ba565b508281965096505050505050915091565b60004690506040518080618d4b60529139605201905060405180910390206040518060400160405280601381526020017f43656c6f20436f726520436f6e747261637473000000000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060078190555050565b60006134978260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050919050565b60018060008282540192505081905550600060015490506135088560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120868686617cd0565b6135588560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167faab5f8a189373aaa290f42ae65ea5d7971b732366ca5bf66556e76263944af2886604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b600061365d8484846153b3565b806137985750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16801561379757508373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061388b8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b9050919050565b60008060008060018060046000839350829250819150809050935093509350935090919293565b6138c233612f87565b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b61393d82617fcc565b801561394f575061394e3383618026565b5b6139a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b604051806040016040528060011515815260200160001515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050803373ffffffffffffffffffffffffffffffffffffffff167f7a162218a1b7bec7fb15b4bb95220fbf423fa3a49718133f5c50361ff1c8537684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60075481565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613bc45780613bc6565b835b91505092915050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ca75780601f10613c7c57610100808354040283529160200191613ca7565b820191906000526020600020905b815481529060010190602001808311613c8a57829003601f168201915b50505050509050919050565b6000613d058260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120612b0a565b9050919050565b6000613d5e8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b9050919050565b6000613db78260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120618153565b9050919050565b6000613e108260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120618153565b9050919050565b613e1f614fef565b613e91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b613f5933612f87565b613fcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b613fd482617fcc565b614029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618ca16022913960400191505060405180910390fd5b6140333383618026565b6140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f742061207369676e657220666f722074686973206163636f756e7400000081525060200191505060405180910390fd5b6140b0338383613650565b614105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180618dc0602f913960400191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061415182617746565b156143a65760405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214156141ef57828160010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082141561428857828160010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431e565b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082141561431d57828160010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fc5cd67202a8095484f559b338b2b6fee0dd81af9f70c4814c6517fcf9a09564c8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26144b8565b82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f2613ed414d18d8152e86c896c04ccce344b75a2f06141f04d39ad069a38725238484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167f8a00ae3e0722558391733230bfc96d425df2dd7b44f7ce506580785adcf171a28484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b61454833612f87565b6145ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828282600701919061461092919061895f565b503373ffffffffffffffffffffffffffffffffffffffff167f0b5629fec5b6b5a1c2cfe0de7495111627a8cf297dced72e0669527425d3f01b848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2505050565b600860205281600052604060002081815481106146a957fe5b90600052602060002001600091509150508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561474e5780601f106147235761010080835404028352916020019161474e565b820191906000526020600020905b81548152906001019060200180831161473157829003601f168201915b505050505081565b60006147a83360405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b90506147fa8160405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167f14670729407debb6ed03d885f8ba57155de89ce39bf17127ae4900ec7c2ad10382604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6148ca8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120858585617cd0565b61491a8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167f9dfbc5a621c3e2d0d83beee687a17dfc796bbce2118793e5e254409bb265ca0b85604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000614a128260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120618153565b9050919050565b6000614a2482617746565b614a3757614a328383613b14565b614a42565b614a418383614d49565b5b905092915050565b6060806000809050606085859050604051908082528060200260200182016040528015614a865781602001602082028038833980820191505090505b50905060008090505b86869050811015614b745760036000888884818110614aaa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701805460018160011615610100020316600290049050828281518110614b2557fe5b602002602001018181525050614b57828281518110614b4057fe5b602002602001015184617f4490919063ffffffff16565b9250614b6d600182617f4490919063ffffffff16565b9050614a8f565b506060826040519080825280601f01601f191660200182016040528015614baa5781602001600182028038833980820191505090505b509050600080905060008090505b88889050811015614d375760008090505b848281518110614bd557fe5b6020026020010151811015614d1b57600360008b8b85818110614bf457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181815460018160011615610100020316600290048110614c6a57fe5b815460011615614c895790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848481518110614cbb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350614cfe600184617f4490919063ffffffff16565b9250614d14600182617f4490919063ffffffff16565b9050614bc9565b50614d30600182617f4490919063ffffffff16565b9050614bb8565b50828295509550505050509250929050565b6000614d5482617746565b614dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f526f6c65206973206e6f742061206c6567616379207369676e6572000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120841415614e88578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f80565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120841415614f05578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f7f565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120841415614f7e578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614fba5780614fbc565b845b9250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166150316182db565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61505633612f87565b6150c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561514e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618cc36021913960400191505060405180910390fd5b6151566189df565b61515f826182e3565b905061517b61516c618301565b8261832790919063ffffffff16565b6151d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180618d9d6023913960400191505060405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200182815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001016000820151816000015550509050508273ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df836040518082815260200191505060405180910390a2505050565b6152f533612f87565b61530357615301615c2e565b505b61535088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050616e54565b61539d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061285e565b6153a9848484846158c7565b5050505050505050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208314801561549e57508373ffffffffffffffffffffffffffffffffffffffff168160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156154ad57600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e000000000000008152506019019050604051602081830303815290604052805190602001208314801561555457508373ffffffffffffffffffffffffffffffffffffffff168160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561556357600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208314801561560a57508373ffffffffffffffffffffffffffffffffffffffff168160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561561957600191505061561f565b60009150505b9392505050565b615633858585858561833d565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461584257809150506158c2565b61584b83612f87565b6158bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b829150505b919050565b6158d033612f87565b615942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806159a85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b615b2757600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015615a4757600080fd5b505af4158015615a5b573d6000803e3d6000fd5b505050506040513d6020811015615a7157600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614615b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167ff81d74398fd47e35c36b714019df15f200f623dde569b5b531d6a0b4da5c5f2686604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050505050565b6000615c3933617fcc565b8015615c4a5750615c4933618401565b5b615cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636f756e742065786973747300000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f805996f252884581e2f74cf3d2b03564d5ec26ccc90850ae12653dc1b72d1fa260405160405180910390a2600191505090565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16615df382600101604051806020016040529081600082015481525050618498565b9250925050915091565b615e0682612f87565b615e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b615e8133617fcc565b8015615e935750615e928233618026565b5b615ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b60011515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514615fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e657220617574686f72697a6174696f6e206e6f74207374617274656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff167f9eeca140dda0bdb74fc9acfda0f1c0324e188a732bd48e078a96b16d97eb54e533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60006161f73360405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b90506162498160405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa54764c62865ff0cd3f271fb1d4635662bff10f0878694f1654fb7fbdecb830d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561639e5780601f106163735761010080835404028352916020019161639e565b820191906000526020600020905b81548152906001019060200180831161638157829003601f168201915b50505050509050919050565b6163b2614fef565b616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156164c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156166265780601f106165fb57610100808354040283529160200191616626565b820191906000526020600020905b81548152906001019060200180831161660957829003601f168201915b50505050509050919050565b61663b33612f87565b6166ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082829091806001815401808255809150509060018203906000526020600020016000909192939091929390919290919250919061672a9291906189f2565b50503373ffffffffffffffffffffffffffffffffffffffff167f15dfb3066a1bbbdaf9a7f62c47db990114058ae1739fd70a90361ea715bbf3c8838360405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518080618c65603c9139603c0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405160208183030381529060405280519060200120905073__Signatures____________________________6334d1a233600754838888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561690857600080fd5b505af415801561691c573d6000803e3d6000fd5b505050506040513d602081101561693257600080fd5b81019080805190602001909291905050509150509695505050505050565b600061698b84848460405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120617989565b90509392505050565b60018060008282540192505081905550600060015490506169fe8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120868686617cd0565b616a4e8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b616a56617e49565b73ffffffffffffffffffffffffffffffffffffffff1663facd743b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015616ad257600080fd5b505afa158015616ae6573d6000803e3d6000fd5b505050506040513d6020811015616afc57600080fd5b810190808051906020019092919050505015616b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618d2a6021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494386604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114616c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b616c6433612f87565b616cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001616d0860006182e3565b815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101600082015181600001555050905050600073ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df60006040518082815260200191505060405180910390a2565b6000616e4d8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120612b0a565b9050919050565b616e5d33612f87565b616ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816005019080519060200190616f2a929190618a72565b503373ffffffffffffffffffffffffffffffffffffffff167fa6e2c5a23bb917ba0a584c4b250257ddad698685829b66a8813c004b39934fe4836040518080602001828103825283818151815260200191508051906020019080838360005b83811015616fa4578082015181840152602081019050616f89565b50505050905090810190601f168015616fd15780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000616fed82617746565b61700157616ffc848484612482565b61700d565b61700c8484846153b3565b5b90509392505050565b600260009054906101000a900460ff1615617099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506170bd336184a6565b6170c6816163aa565b6170ce61333b565b50565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe553a3065d5a77d4ec2a0e0c31d49be4bf4d9f4c45883b2d67f61ba9c1b89c5d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b61726533612f87565b6172d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061738e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642073746f7261676520726f6f7420696e64657800000000000081525060200191505060405180910390fd5b60006001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500390506060600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061742457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156174c25780601f10617497576101008083540402835291602001916174c2565b820191906000526020600020905b8154815290600101906020018083116174a557829003601f168201915b50505050509050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061751357fe5b90600052602060002001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061756757fe5b906000526020600020019080546001816001161561010002031660029004617590929190618af2565b50600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036175e39190618b79565b503373ffffffffffffffffffffffffffffffffffffffff167fae0f2fa495a3eb65d46fe97b0baea8b6fd7edb243175c70f2455e6e83bc6fbaf82856040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015617664578082015181840152602081019050617649565b50505050905090810190601f1680156176915780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6040518080618c65603c9139603c019050604051809103902081565b6176c8614fef565b61773a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b617743816184a6565b50565b600060405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214806177e1575060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082145b80617831575060405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082145b9050919050565b617843338383616fe2565b156178525761785181612386565b5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690555050803373ffffffffffffffffffffffffffffffffffffffff167fde9ce22cf1f8631ae2b668300f0493971114f40edd305173bd099ce7100fbe0b84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b600061799482617746565b6179a7576179a2838361243f565b6179b2565b6179b18383612b0a565b5b905092915050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120831415617ac3578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c49565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120831415617b87578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c48565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120831415617c47578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fdd0b0d959c29750e7bfabbb7543a56957699d07edc512d2523ffe7502901ac198285604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b617cdc858484846185ea565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015617f0457600080fd5b505afa158015617f18573d6000803e3d6000fd5b505050506040513d6020811015617f2e57600080fd5b8101908080519060200190929190505050905090565b600080828401905083811015617fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16159050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061814b57508273ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618255576181f7818585613650565b61824c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180618e116025913960400191505060405180910390fd5b809150506182d5565b61825e84612f87565b6182d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b839150505b92915050565b600033905090565b6182eb6189df565b6040518060200160405280838152509050919050565b6183096189df565b604051806020016040528069d3c21bcecceda1000000815250905090565b6000816000015183600001511115905092915050565b600061834d3387878787876167dd565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146183f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b6183f986618773565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081600001519050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561852c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180618c3f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b15801561868557600080fd5b505af4158015618699573d6000803e3d6000fd5b505050506040513d60208110156186af57600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b61876c85618773565b5050505050565b61877c33612f87565b6187ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6187f781617fcc565b801561880957506188083382618026565b5b61885e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180618ce46046913960600191505060405180910390fd5b33600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061892057805160ff191683800117855561894e565b8280016001018555821561894e579182015b8281111561894d578251825591602001919060010190618932565b5b50905061895b9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106189a057803560ff19168380011785556189ce565b828001600101855582156189ce579182015b828111156189cd5782358255916020019190600101906189b2565b5b5090506189db9190618ba5565b5090565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618a3357803560ff1916838001178555618a61565b82800160010185558215618a61579182015b82811115618a60578235825591602001919060010190618a45565b5b509050618a6e9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618ab357805160ff1916838001178555618ae1565b82800160010185558215618ae1579182015b82811115618ae0578251825591602001919060010190618ac5565b5b509050618aee9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618b2b5780548555618b68565b82800160010185558215618b6857600052602060002091601f016020900482015b82811115618b67578254825591600101919060010190618b4c565b5b509050618b759190618ba5565b5090565b815481835581811115618ba057818360005260206000209182019101618b9f9190618bca565b5b505050565b618bc791905b80821115618bc3576000816000905550600101618bab565b5090565b90565b618bf391905b80821115618bef5760008181618be69190618bf6565b50600101618bd0565b5090565b90565b50805460018160011615610100020316600290046000825580601f10618c1c5750618c3b565b601f016020900490600052602060002090810190618c3a9190618ba5565b5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c652943616e6e6f7420617574686f72697a65206163636f756e74206173207369676e657242656e65666963696172792063616e6e6f7420626520616464726573732030783043616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e7443616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294672616374696f6e206d757374206e6f742062652067726561746572207468616e20314d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c7443616e6e6f742072652d617574686f72697a652061646472657373207369676e65726e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c654661696c656420746f20757064617465204543445341207075626c6963206b6579a265627a7a72315820494926be723757ebb3486526944b7b3aaf281611d31e3db3240a1acc4784b66b64736f6c634300050d0032", + "sourceMap": "445:42980:1:-;;;5808:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;5808:52:1;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5808:52:1;;;;;;;;;;;;;;;;5852:4;698:17:159;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;558:1:34;542:13;:17;;;;135::12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;5808:52:1;445:42980;;788:96:155;833:15;867:10;860:17;;788:96;:::o;445:42980:1:-;;;;;;;", + "deployedSourceMap": "445:42980:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;445:42980:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35498:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35498:143:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26629:255;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26629:255:1;;;;;;;;;;;;;;;;;:::i;:::-;;34143:144;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34143:144:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24130:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24130:170:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19089:496;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19089:496:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19089:496:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19089:496:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19089:496:1;;;;;;;;;;;;:::i;:::-;;10082:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10082:334:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10082:334:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10082:334:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10082:334:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10082:334:1;;;;;;;;;;;;;;;:::i;:::-;;27565:188;;;:::i;:::-;;33889:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33889:142:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20331:567;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20331:567:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;:::i;:::-;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;38230:124:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38230:124:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;38540:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38540:107:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12233:849;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12233:849:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12233:849:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12233:849:1;;;;;;;;;;;;;;;;;;;6610:427;;;:::i;:::-;;32942:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32942:124:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17542:276;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17542:276:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25085:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25085:253:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;39163:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;39163:127:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33282:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33282:134:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6034:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21797:466;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21797:466:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3164:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32089:217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32089:217:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36184:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36184:112:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36184:112:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35148:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35148:133:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33622:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33622:138:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29629:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29629:146:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;30057:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30057:138:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:159;;;:::i;:::-;;14941:992:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14941:992:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10540:270;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10540:270:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10540:270:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10540:270:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10540:270:1;;;;;;;;;;;;:::i;:::-;;3268:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3268:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3268:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28313:216;;;:::i;:::-;;21296:279;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;21296:279:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2540:25:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29193:152:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29193:152:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32560:190;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32560:190:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36905:770;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36905:770:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;36905:770:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;36905:770:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;36905:770:1;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36905:770:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36905:770:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31309:526;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31309:526:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;899:77:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13503:483:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13503:483:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7663:352;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7663:352:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7663:352:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7663:352:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7663:352:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7663:352:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7663:352:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7663:352:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23364:494;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23364:494:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16436:350;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16436:350:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30469:302;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30469:302:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9390:520;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9390:520:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8113:279;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14529:232;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14529:232:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22493:599;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22493:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27928:208;;;:::i;:::-;;36493:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36493:126:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36493:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3089:230:23;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3089:230:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;37914:137:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37914:137:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;37914:137:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10932:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10932:213:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10932:213:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10932:213:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10932:213:1;;;;;;;;;;;;:::i;:::-;;2618:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2618:47:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;41568:386;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;41568:386:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34766:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34766:175:1;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;34766:175:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;34766:175:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;34766:175:1;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18222:388;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18222:388:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14102:240;;;:::i;:::-;;35862:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35862:147:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8490:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8490:224:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8490:224:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8490:224:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8490:224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8490:224:1;;;;;;;;;;;;;;;:::i;:::-;;24571:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24571:252:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6340:173;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6340:173:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;25458:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25458:218:1;;;;;;;;;;;;;;;;;:::i;:::-;;11502:535;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11502:535:1;;;;;;;;;;;;;;;;;:::i;:::-;;3020:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1970:107:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:159;;;;;;;;;;;;;;;;;;;:::i;:::-;;30900:155:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30900:155:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27128:266;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27128:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34401:187;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34401:187:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35498:143;35576:4;35595:41;35611:7;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;35595:15;:41::i;:::-;35588:48;;35498:143;;;:::o;26629:255::-;26685:17;26705:34;26722:10;26734:4;26705:16;:34::i;:::-;26685:54;;26745:18;26758:4;26745:12;:18::i;:::-;:73;;26793:25;26813:4;26793:19;:25::i;:::-;26745:73;;;26766:24;26785:4;26766:18;:24::i;:::-;26745:73;26851:10;26830:49;;;26863:9;26874:4;26830:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;26629:255;;:::o;34143:144::-;34221:4;34275:7;34240:42;;:31;34257:7;34266:4;34240:16;:31::i;:::-;:42;;;;34233:49;;34143:144;;;;:::o;24130:170::-;24235:4;24289:6;24256:39;;:14;:23;24271:7;24256:23;;;;;;;;;;;;;;;:29;24280:4;24256:29;;;;;;;;;;;;;;;;;;;;;:39;;;24249:46;;24130:170;;;;;:::o;19089:496::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;19266:68:1;19301:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;19326:1;19329;19332;19266:34;:68::i;:::-;19340:41;19357:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;19340:16;:41::i;:::-;19403:15;:13;:15::i;:::-;:36;;;19440:10;19452:6;19460:14;;19403:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19403:72:1;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19403:72:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19403:72:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19403:72:1;;;;;;;;;;;;;;;;19388:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19561:10;19535:45;;;19573:6;19535:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19089:496:1;;;;;;;:::o;10082:334::-;10200:2;10172:17;:24;:30;;10164:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10245:23;10271:8;:20;10280:10;10271:20;;;;;;;;;;;;;;;10245:46;;10325:17;10297:7;:25;;:45;;;;;;;;;;;;:::i;:::-;;10381:10;10353:58;;;10393:17;10353:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10353:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10082:334;;:::o;27565:188::-;27606:14;27623:39;27639:10;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;27623:15;:39::i;:::-;27606:56;;27668:32;27681:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;27668:12;:32::i;:::-;27729:10;27711:37;;;27741:6;27711:37;;;;;;;;;;;;;;;;;;;;;;27565:188;:::o;33889:142::-;33966:4;34019:7;33985:41;;:30;34001:7;34010:4;33985:15;:30::i;:::-;:41;;;;33978:48;;33889:142;;;;:::o;20331:567::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;20563:68:1;20598:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;20623:1;20626;20629;20563:34;:68::i;:::-;20637:41;20654:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;20637:16;:41::i;:::-;20700:15;:13;:15::i;:::-;:32;;;20733:10;20745:6;20753:14;;20769:12;;20783:6;;20700:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20700:90:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20700:90:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20700:90:1;;;;;;;;;;;;;;;;20685:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20874:10;20848:45;;;20886:6;20848:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20331:567:1;;;;;;;;;;;:::o;53:23:12:-;;;;;;;;;;;;;:::o;38230:124:1:-;38296:7;38318:8;:17;38327:7;38318:17;;;;;;;;;;;;;;;:31;;;;;;;;;;;;38311:38;;38230:124;;;:::o;38540:107::-;38597:4;38617:8;:17;38626:7;38617:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;38609:33;;38540:107;;;:::o;12233:849::-;12318:12;12332:16;12366:18;12376:7;12366:9;:18::i;:::-;12358:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:19;12432:20;:29;12453:7;12432:29;;;;;;;;;;;;;;;:36;;;;12410:58;;12474:19;12496:1;12474:23;;12508:9;12520:1;12508:13;;12503:127;12527:11;12523:1;:15;12503:127;;;12567:56;12583:20;:29;12604:7;12583:29;;;;;;;;;;;;;;;12613:1;12583:32;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;12567:11;:15;;:56;;;;:::i;:::-;12553:70;;12540:3;;;;;;;12503:127;;;;12636:25;12674:11;12664:22;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;12664:22:1;;;;12636:50;;12692:17;12712:1;12692:21;;12719:24;12760:11;12746:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;12746:26:1;;;;12719:53;;12783:9;12795:1;12783:13;;12778:263;12802:11;12798:1;:15;12778:263;;;12828:18;12849:20;:29;12870:7;12849:29;;;;;;;;;;;;;;;12879:1;12849:32;;;;;;;;;;;;;;;12828:53;;12902:4;:11;;;;;;;;;;;;;;;;12889:7;12897:1;12889:10;;;;;;;;;;;;;:24;;;;;12926:9;12938:1;12926:13;;12921:114;12945:7;12953:1;12945:10;;;;;;;;;;;;;;12941:1;:14;12921:114;;;12998:4;13003:1;12998:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12972:12;12985:9;12972:23;;;;;;;;;;;:33;;;;;;;;;;;13015:11;;;;;;;12957:3;;;;;;;12921:114;;;;12778:263;12815:3;;;;;;;12778:263;;;;13055:12;13069:7;13047:30;;;;;;;;;12233:849;;;:::o;6610:427::-;6659:15;6708:7;6697:18;;6788:115;;;;;;;;;;;;;;;;;;;6923:28;;;;;;;;;;;;;;;;;6913:39;;;;;;6962:16;;;;;;;;;;;;;;;;;;;6988:7;7013:4;6768:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6768:258:1;;;6751:281;;;;;;6727:21;:305;;;;6610:427;:::o;32942:124::-;33003:7;33025:36;33041:7;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;33025:15;:36::i;:::-;33018:43;;32942:124;;;:::o;17542:276::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;17656:63:1;17691:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;17711:1;17714;17717;17656:34;:63::i;:::-;17725:36;17742:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;17725:16;:36::i;:::-;17794:10;17773:40;;;17806:6;17773:40;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17542:276:1;;;;;:::o;25085:253::-;25171:4;25196:37;25211:7;25220:6;25228:4;25196:14;:37::i;:::-;:137;;;;25244:20;:29;25265:7;25244:29;;;;;;;;;;;;;;;:35;25274:4;25244:35;;;;;;;;;;;:43;25280:6;25244:43;;;;;;;;;;;;;;;:53;;;;;;;;;;;;:88;;;;;25325:7;25301:31;;:12;:20;25314:6;25301:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;25244:88;25196:137;25183:150;;25085:253;;;;;:::o;39163:127::-;39230:4;39282:1;39250:34;;:12;:20;39263:6;39250:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;39242:43;;39163:127;;;:::o;33282:134::-;33348:7;33370:41;33386:7;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;33370:15;:41::i;:::-;33363:48;;33282:134;;;:::o;6034:117::-;6085:7;6094;6103;6112;6135:1;6138;6141;6144;6127:19;;;;;;;;;;;;;;;;;;;;6034:117;;;;:::o;21797:466::-;21873:21;21883:10;21873:9;:21::i;:::-;21865:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21935:20;21948:6;21935:12;:20::i;:::-;:82;;;;;21959:58;21998:10;22010:6;21959:38;:58::i;:::-;21935:82;21920:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22123:72;;;;;;;;22160:4;22123:72;;;;;;22183:5;22123:72;;;;;22074:20;:32;22095:10;22074:32;;;;;;;;;;;;;;;:38;22107:4;22074:38;;;;;;;;;;;:46;22113:6;22074:46;;;;;;;;;;;;;;;:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22253:4;22233:10;22206:52;;;22245:6;22206:52;;;;;;;;;;;;;;;;;;;;;;21797:466;;:::o;3164:36::-;;;;:::o;32089:217::-;32167:7;32182:21;32206:14;:23;32221:7;32206:23;;;;;;;;;;;;;;;:29;32230:4;32206:29;;;;;;;;;;;;;;;;;;;;;32182:53;;32273:1;32248:27;;:13;:27;;;:53;;32288:13;32248:53;;;32278:7;32248:53;32241:60;;;32089:217;;;;:::o;36184:112::-;36241:13;36269:8;:17;36278:7;36269:17;;;;;;;;;;;;;;;:22;;36262:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36184:112;;;:::o;35148:133::-;35221:4;35240:36;35256:7;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;35240:15;:36::i;:::-;35233:43;;35148:133;;;:::o;33622:138::-;33690:7;33712:43;33728:7;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;33712:15;:43::i;:::-;33705:50;;33622:138;;;:::o;29629:146::-;29700:7;29722:48;29746:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;29722:23;:48::i;:::-;29715:55;;29629:146;;;:::o;30057:138::-;30125:7;30147:43;30171:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;30147:23;:43::i;:::-;30140:50;;30057:138;;;:::o;1684:137:159:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;14941:992:1:-;15018:21;15028:10;15018:9;:21::i;:::-;15010:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15072:20;15085:6;15072:12;:20::i;:::-;15064:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15152:58;15191:10;15203:6;15152:38;:58::i;:::-;15137:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15269:34;15278:10;15290:6;15298:4;15269:8;:34::i;:::-;15261:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15362:23;15388:8;:20;15397:10;15388:20;;;;;;;;;;;;;;;15362:46;;15418:18;15431:4;15418:12;:18::i;:::-;15414:461;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;15450:4;:18;15446:252;;;15503:6;15480:7;:15;;:20;;;:29;;;;;;;;;;;;;;;;;;15446:252;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;15528:4;:25;15524:174;;;15595:6;15565:7;:15;;:27;;;:36;;;;;;;;;;;;;;;;;;15524:174;;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;15620:4;:23;15616:82;;;15683:6;15655:7;:15;;:25;;;:34;;;;;;;;;;;;;;;;;;15616:82;15524:174;15446:252;15726:10;15710:41;;;15738:6;15746:4;15710:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:461;;;15807:6;15772:14;:26;15787:10;15772:26;;;;;;;;;;;;;;;:32;15799:4;15772:32;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15843:10;15826:42;;;15855:6;15863:4;15826:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:461;15903:10;15886:42;;;15915:6;15923:4;15886:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;14941:992;;;:::o;10540:270::-;10616:21;10626:10;10616:9;:21::i;:::-;10608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10663:23;10689:8;:20;10698:10;10689:20;;;;;;;;;;;;;;;10663:46;;10737:11;;10715:7;:19;;:33;;;;;;;:::i;:::-;;10781:10;10759:46;;;10793:11;;10759:46;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10759:46:1;;;;;;;;;;;;;;10540:270;;;:::o;3268:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28313:216::-;28361:14;28378:46;28394:10;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;28378:15;:46::i;:::-;28361:63;;28430:39;28443:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;28430:12;:39::i;:::-;28505:10;28480:44;;;28517:6;28480:44;;;;;;;;;;;;;;;;;;;;;;28313:216;:::o;21296:279::-;21392:70;21427:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;21454:1;21457;21460;21392:34;:70::i;:::-;21468:43;21485:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;21468:16;:43::i;:::-;21551:10;21523:47;;;21563:6;21523:47;;;;;;;;;;;;;;;;;;;;;;21296:279;;;;:::o;2540:25:23:-;;;;;;;;;;;;;:::o;29193:152:1:-;29268:7;29290:50;29314:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;29290:23;:50::i;:::-;29283:57;;29193:152;;;:::o;32560:190::-;32638:7;32660:18;32673:4;32660:12;:18::i;:::-;:85;;32714:31;32731:7;32740:4;32714:16;:31::i;:::-;32660:85;;;32681:30;32697:7;32706:4;32681:15;:30::i;:::-;32660:85;32653:92;;32560:190;;;;:::o;36905:770::-;37005:16;37023:12;37045:17;37065:1;37045:21;;37072:22;37111:15;;:22;;37097:37;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;37097:37:1;;;;37072:62;;37145:9;37157:1;37145:13;;37140:185;37164:15;;:22;;37160:1;:26;37140:185;;;37227:8;:28;37236:15;;37252:1;37236:18;;;;;;;;;;;;;;;37227:28;;;;;;;;;;;;;;;:40;;37221:54;;;;;;;;;;;;;;;;37210:5;37216:1;37210:8;;;;;;;;;;;;;:65;;;;;37295:23;37309:5;37315:1;37309:8;;;;;;;;;;;;;;37295:9;:13;;:23;;;;:::i;:::-;37283:35;;37192:8;37198:1;37192;:5;;:8;;;;:::i;:::-;37188:12;;37140:185;;;;37331:17;37361:9;37351:20;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;37351:20:1;;;;37331:40;;37377:15;37395:1;37377:19;;37407:9;37419:1;37407:13;;37402:243;37426:15;;:22;;37422:1;:26;37402:243;;;37477:9;37489:1;37477:13;;37472:167;37496:5;37502:1;37496:8;;;;;;;;;;;;;;37492:1;:12;37472:167;;;37552:8;:28;37561:15;;37577:1;37561:18;;;;;;;;;;;;;;;37552:28;;;;;;;;;;;;;;;:40;;37594:1;37546:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37530:4;37535:7;37530:13;;;;;;;;;;;:66;;;;;;;;;;;37616:14;37628:1;37616:7;:11;;:14;;;;:::i;:::-;37606:24;;37510:8;37516:1;37510;:5;;:8;;;;:::i;:::-;37506:12;;37472:167;;;;37454:8;37460:1;37454;:5;;:8;;;;:::i;:::-;37450:12;;37402:243;;;;37658:5;37665:4;37650:20;;;;;;;;36905:770;;;;;:::o;31309:526::-;31387:7;31410:18;31423:4;31410:12;:18::i;:::-;31402:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31467:23;31493:8;:18;31502:8;31493:18;;;;;;;;;;;;;;;31467:44;;31517:14;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;31541:4;:23;31537:240;;;31583:7;:15;;:25;;;;;;;;;;;;31574:34;;31537:240;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;31625:4;:25;31621:156;;;31669:7;:15;;:27;;;;;;;;;;;;31660:36;;31621:156;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;31713:4;:18;31709:68;;;31750:7;:15;;:20;;;;;;;;;;;;31741:29;;31709:68;31621:156;31537:240;31808:1;31790:20;;:6;:20;;;:40;;31824:6;31790:40;;;31813:8;31790:40;31783:47;;;;31309:526;;;;:::o;899:77:159:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;13503:483:1:-;13593:21;13603:10;13593:9;:21::i;:::-;13585:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13670:1;13647:25;;:11;:25;;;;13639:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13716:29;;:::i;:::-;13748:26;13765:8;13748:16;:26::i;:::-;13716:58;;13788:27;13794:20;:18;:20::i;:::-;13788:1;:5;;:27;;;;:::i;:::-;13780:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13894:33;;;;;;;;13912:11;13894:33;;;;;;13925:1;13894:33;;;13861:18;:30;13880:10;13861:30;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13959:11;13938:43;;;13972:8;13938:43;;;;;;;;;;;;;;;;;;13503:483;;;:::o;7663:352::-;7841:21;7851:10;7841:9;:21::i;:::-;7836:58;;7872:15;:13;:15::i;:::-;;7836:58;7899:13;7907:4;;7899:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7899:13:1;;;;;;:7;:13::i;:::-;7918:46;7946:17;;7918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7918:46:1;;;;;;:27;:46::i;:::-;7970:40;7987:13;8002:1;8005;8008;7970:16;:40::i;:::-;7663:352;;;;;;;;:::o;23364:494::-;23469:4;23483:23;23509:8;:18;23518:8;23509:18;;;;;;;;;;;;;;;23483:44;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;23537:4;:23;:62;;;;;23593:6;23564:35;;:7;:15;;:25;;;;;;;;;;;;:35;;;23537:62;23533:321;;;23616:4;23609:11;;;;;23533:321;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;23637:4;:25;:66;;;;;23697:6;23666:37;;:7;:15;;:27;;;;;;;;;;;;:37;;;23637:66;23633:221;;;23720:4;23713:11;;;;;23633:221;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;23741:4;:18;:52;;;;;23787:6;23763:30;;:7;:15;;:20;;;;;;;;;;;;:30;;;23741:52;23737:117;;;23810:4;23803:11;;;;;23737:117;23842:5;23835:12;;;23364:494;;;;;;:::o;16436:350::-;16554:47;16579:6;16587:4;16593:1;16596;16599;16554:24;:47::i;:::-;16656:71;;;;;;;;16693:4;16656:71;;;;;;16716:4;16656:71;;;;;16607:20;:32;16628:10;16607:32;;;;;;;;;;;;;;;:38;16640:4;16607:38;;;;;;;;;;;:46;16646:6;16607:46;;;;;;;;;;;;;;;:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16776:4;16756:10;16739:42;;;16768:6;16739:42;;;;;;;;;;;;;;;;;;;;;;16436:350;;;;;:::o;30469:302::-;30533:7;30548:26;30577:12;:20;30590:6;30577:20;;;;;;;;;;;;;;;;;;;;;;;;;30548:49;;30637:1;30607:32;;:18;:32;;;30603:164;;30656:18;30649:25;;;;;30603:164;30703:17;30713:6;30703:9;:17::i;:::-;30695:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30754:6;30747:13;;;30469:302;;;;:::o;9390:520::-;9491:21;9501:10;9491:9;:21::i;:::-;9483:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:10;9544:27;;:13;:27;;;:60;;;;9600:3;9575:29;;:13;:29;;;9544:60;9538:212;;9615:14;9632:10;:29;9662:10;9674:1;9677;9680;9632:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9632:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9632:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9632:50:1;;;;;;;;;;;;;;;;9615:67;;9708:13;9698:23;;:6;:23;;;9690:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9538:212;;9755:23;9781:8;:20;9790:10;9781:20;;;;;;;;;;;;;;;9755:46;;9831:13;9807:7;:21;;;:37;;;;;;;;;;;;;;;;;;9879:10;9855:50;;;9891:13;9855:50;;;;;;;;;;;;;;;;;;;;;;9390:520;;;;;:::o;8113:279::-;8154:4;8174:24;8187:10;8174:12;:24::i;:::-;:61;;;;;8202:33;8224:10;8202:21;:33::i;:::-;8174:61;8166:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8260:23;8286:8;:20;8295:10;8286:20;;;;;;;;;;;;;;;8260:46;;8329:4;8312:7;:14;;;:21;;;;;;;;;;;;;;;;;;8359:10;8344:26;;;;;;;;;;;;8383:4;8376:11;;;8113:279;:::o;14529:232::-;14599:7;14608;14623:36;14662:18;:27;14681:7;14662:27;;;;;;;;;;;;;;;14623:66;;14703:10;:22;;;;;;;;;;;;14727:28;:10;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;14695:61;;;;;14529:232;;;:::o;22493:599::-;22582:18;22592:7;22582:9;:18::i;:::-;22574:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22641:24;22654:10;22641:12;:24::i;:::-;:87;;;;;22669:59;22708:7;22717:10;22669:38;:59::i;:::-;22641:87;22626:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22858:4;22799:63;;:20;:29;22820:7;22799:29;;;;;;;;;;;;;;;:35;22829:4;22799:35;;;;;;;;;;;:47;22835:10;22799:47;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:63;;;22784:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22944:7;22917:12;:24;22930:10;22917:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23017:4;22957:20;:29;22978:7;22957:29;;;;;;;;;;;;;;;:35;22987:4;22957:35;;;;;;;;;;;:47;22993:10;22957:47;;;;;;;;;;;;;;;:57;;;:64;;;;;;;;;;;;;;;;;;23082:4;23061:7;23032:55;;;23070:10;23032:55;;;;;;;;;;;;;;;;;;;;;;22493:599;;:::o;27928:208::-;27974:14;27991:44;28007:10;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;27991:15;:44::i;:::-;27974:61;;28041:37;28054:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;28041:12;:37::i;:::-;28112:10;28089:42;;;28124:6;28089:42;;;;;;;;;;;;;;;;;;;;;;27928:208;:::o;36493:126::-;36557:13;36585:8;:17;36594:7;36585:17;;;;;;;;;;;;;;;:29;;36578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36493:126;;;:::o;3089:230:23:-;1103:9:159;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:1:23;3166:29;;:15;:29;;;;3158:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:15;3238:8;;:37;;;;;;;;;;;;;;;;;;3298:15;3286:28;;;;;;;;;;;;3089:230;:::o;37914:137:1:-;37984:12;38011:8;:17;38020:7;38011:17;;;;;;;;;;;;;;;:35;;38004:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37914:137;;;:::o;10932:213::-;10999:21;11009:10;10999:9;:21::i;:::-;10991:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11046:20;:32;11067:10;11046:32;;;;;;;;;;;;;;;11084:3;;11046:42;;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11046:42:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11124:10;11099:41;;;11136:3;;11099:41;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11099:41:1;;;;;;;;;;;;;;10932:213;;:::o;2618:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;41568:386::-;41731:7;41746:18;3079:81;;;;;;;;;;;;;;;;;;;41829:7;41838:6;41846:4;41784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;41784:67:1;;;41767:90;;;;;;41746:111;;41870:10;:35;41906:21;;41929:10;41941:1;41944;41947;41870:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41870:79:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41870:79:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;41870:79:1;;;;;;;;;;;;;;;;41863:86;;;41568:386;;;;;;;;:::o;34766:175::-;34857:4;34876:60;34893:7;34929:4;;34912:22;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;34912:22:1;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;34912:22:1;;;34902:33;;;;;;34876:16;:60::i;:::-;34869:67;;34766:175;;;;;:::o;18222:388::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;18341:68:1;18376:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;18401:1;18404;18407;18341:34;:68::i;:::-;18415:41;18432:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;18415:16;:41::i;:::-;18472:15;:13;:15::i;:::-;:27;;;18500:10;18472:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18472:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18472:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18472:39:1;;;;;;;;;;;;;;;;18471:40;18463:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18586:10;18560:45;;;18598:6;18560:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18222:388:1;;;;;:::o;14102:240::-;14158:21;14168:10;14158:9;:21::i;:::-;14150:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14237:52;;;;;;;;14263:3;14237:52;;;;;;14269:19;14286:1;14269:16;:19::i;:::-;14237:52;;;14204:18;:30;14223:10;14204:30;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14329:3;14300:37;;;14335:1;14300:37;;;;;;;;;;;;;;;;;;14102:240::o;35862:147::-;35942:4;35961:43;35977:7;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;35961:15;:43::i;:::-;35954:50;;35862:147;;;:::o;8490:224::-;8548:21;8558:10;8548:9;:21::i;:::-;8540:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8595:23;8621:8;:20;8630:10;8621:20;;;;;;;;;;;;;;;8595:46;;8662:4;8647:7;:12;;:19;;;;;;;;;;;;:::i;:::-;;8692:10;8677:32;;;8704:4;8677:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8677:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8490:224;;:::o;24571:252::-;24676:4;24703:18;24716:4;24703:12;:18::i;:::-;:115;;24780:38;24796:7;24805:6;24813:4;24780:15;:38::i;:::-;24703:115;;;24732:37;24747:7;24756:6;24764:4;24732:14;:37::i;:::-;24703:115;24690:128;;24571:252;;;;;:::o;6340:173::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;6412:30:1;6431:10;6412:18;:30::i;:::-;6448:28;6460:15;6448:11;:28::i;:::-;6482:26;:24;:26::i;:::-;6340:173;:::o;25458:218::-;25514:14;25531;:26;25546:10;25531:26;;;;;;;;;;;;;;;:32;25558:4;25531:32;;;;;;;;;;;;;;;;;;;;;25514:49;;25612:1;25569:14;:26;25584:10;25569:26;;;;;;;;;;;;;;;:32;25596:4;25569:32;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;25646:10;25625:46;;;25658:6;25666:4;25625:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;25458:218;;:::o;11502:535::-;11567:21;11577:10;11567:9;:21::i;:::-;11559:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11630:20;:32;11651:10;11630:32;;;;;;;;;;;;;;;:39;;;;11622:5;:47;11614:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11706:17;11768:1;11726:20;:32;11747:10;11726:32;;;;;;;;;;;;;;;:39;;;;:43;11706:63;;11775:16;11794:20;:32;11815:10;11794:32;;;;;;;;;;;;;;;11827:5;11794:39;;;;;;;;;;;;;;;11775:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11881:20;:32;11902:10;11881:32;;;;;;;;;;;;;;;11914:9;11881:43;;;;;;;;;;;;;;;11839:20;:32;11860:10;11839:32;;;;;;;;;;;;;;;11872:5;11839:39;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11930:20;:32;11951:10;11930:32;;;;;;;;;;;;;;;:41;;;;;;;;;;;;:::i;:::-;;12009:10;11982:50;;;12021:3;12026:5;11982:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11982:50:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11502:535;;;:::o;3020:140::-;3079:81;;;;;;;;;;;;;;;;;;;3020:140;:::o;1970:107:159:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;30900:155:1:-;30957:4;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;30976:4;:18;:45;;;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;30998:4;:23;30976:45;:74;;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;31025:4;:25;30976:74;30969:81;;30900:155;;;:::o;27128:266::-;27197:41;27213:10;27225:6;27233:4;27197:15;:41::i;:::-;27193:87;;;27248:25;27268:4;27248:19;:25::i;:::-;27193:87;27293:20;:32;27314:10;27293:32;;;;;;;;;;;;;;;:38;27326:4;27293:38;;;;;;;;;;;:46;27332:6;27293:46;;;;;;;;;;;;;;;;27286:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27384:4;27364:10;27350:39;;;27376:6;27350:39;;;;;;;;;;;;;;;;;;;;;;27128:266;;:::o;34401:187::-;34479:4;34498:18;34511:4;34498:12;:18::i;:::-;:85;;34552:31;34569:7;34578:4;34552:16;:31::i;:::-;34498:85;;;34519:30;34535:7;34544:4;34519:15;:30::i;:::-;34498:85;34491:92;;34401:187;;;;:::o;25917:564::-;25973:23;25999:8;:20;26008:10;25999:20;;;;;;;;;;;;;;;25973:46;;26026:14;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;26050:4;:23;26046:375;;;26092:7;:15;;:25;;;;;;;;;;;;26083:34;;26161:1;26125:7;:15;;:25;;;:38;;;;;;;;;;;;;;;;;;26046:375;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;26180:4;:25;26176:245;;;26224:7;:15;;:27;;;;;;;;;;;;26215:36;;26297:1;26259:7;:15;;:27;;;:40;;;;;;;;;;;;;;;;;;26176:245;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;26316:4;:18;26312:109;;;26353:7;:15;;:20;;;;;;;;;;;;26344:29;;26412:1;26381:7;:15;;:20;;;:33;;;;;;;;;;;;;;;;;;26312:109;26176:245;26046:375;26451:10;26431:45;;;26463:6;26471:4;26431:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;25917:564;;;:::o;16790:361::-;16933:33;16950:6;16958:1;16961;16964;16933:16;:33::i;:::-;17021:71;;;;;;;;17058:4;17021:71;;;;;;17081:4;17021:71;;;;;16972:20;:32;16993:10;16972:32;;;;;;;;;;;;;;;:38;17005:4;16972:38;;;;;;;;;;;:46;17011:6;16972:46;;;;;;;;;;;;;;;:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17141:4;17121:10;17104:42;;;17133:6;17104:42;;;;;;;;;;;;;;;;;;;;;;16790:361;;;;;:::o;5236:143:23:-;5284:11;5322:8;;;;;;;;;;;:27;;;2467:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2467:30:23;;;2457:41;;;;;;5322:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5322:51:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5322:51:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5322:51:23;;;;;;;;;;;;;;;;5303:71;;5236:143;:::o;834:176:158:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;38833:113:1:-;38895:4;38916:8;:17;38925:7;38916:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;38915:25;38907:34;;38833:113;;;:::o;39979:213::-;40095:4;40149:1;40117:34;;:12;:20;40130:6;40117:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;:69;;;;40179:7;40155:31;;:12;:20;40168:6;40155:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;40117:69;40109:78;;39979:213;;;;:::o;28533:364::-;28619:7;28634:15;28652:12;:20;28665:6;28652:20;;;;;;;;;;;;;;;;;;;;;;;;;28634:38;;28701:1;28682:21;;:7;:21;;;28678:145;;28721:31;28730:7;28739:6;28747:4;28721:8;:31::i;:::-;28713:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28809:7;28802:14;;;;;28678:145;28837:17;28847:6;28837:9;:17::i;:::-;28829:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28886:6;28879:13;;;28533:364;;;;;:::o;788:96:155:-;833:15;867:10;860:17;;788:96;:::o;1502:94:7:-;1550:15;;:::i;:::-;1580:11;;;;;;;;1589:1;1580:11;;;1573:18;;1502:94;;;:::o;1180:97::-;1221:15;;:::i;:::-;1251:21;;;;;;;;996:25;1251:21;;;1244:28;;1180:97;:::o;9949:116::-;10023:4;10053:1;:7;;;10042:1;:7;;;:18;;10035:25;;9949:116;;;;:::o;42561:290:1:-;42680:14;42697:65;42724:10;42736;42748:4;42754:1;42757;42760;42697:26;:65::i;:::-;42680:82;;42786:10;42776:20;;:6;:20;;;42768:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42825:21;42835:10;42825:9;:21::i;:::-;42561:290;;;;;;:::o;39511:130::-;39581:4;39633:1;39601:34;;:12;:20;39614:6;39601:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;39593:43;;39511:130;;;:::o;1674:92:7:-;1732:7;1754:1;:7;;;1747:14;;1674:92;;;:::o;2178:225:159:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;40759:247:1:-;40850:14;40867:10;:29;40897:10;40909:1;40912;40915;40867:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40867:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40867:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;40867:50:1;;;;;;;;;;;;;;;;40850:67;;40941:10;40931:20;;:6;:20;;;40923:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40980:21;40990:10;40980:9;:21::i;:::-;40759:247;;;;;:::o;43075:348::-;43136:21;43146:10;43136:9;:21::i;:::-;43128:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43198:24;43211:10;43198:12;:24::i;:::-;:90;;;;;43226:62;43265:10;43277;43226:38;:62::i;:::-;43198:90;43183:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43408:10;43381:12;:24;43394:10;43381:24;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;43075:348;:::o;445:42980::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IAccounts.sol\";\n\nimport \"../common/FixidityLib.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/Signatures.sol\";\nimport \"../common/UsingRegistry.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\ncontract Accounts is\n IAccounts,\n ICeloVersionedContract,\n Ownable,\n ReentrancyGuard,\n Initializable,\n UsingRegistry\n{\n using FixidityLib for FixidityLib.Fraction;\n using SafeMath for uint256;\n\n struct Signers {\n // The address that is authorized to vote in governance and validator elections on behalf of the\n // account. The account can vote as well, whether or not a vote signing key has been specified.\n address vote;\n // The address that is authorized to manage a validator or validator group and sign consensus\n // messages on behalf of the account. The account can manage the validator, whether or not a\n // validator signing key has been specified. However, if a validator signing key has been\n // specified, only that key may actually participate in consensus.\n address validator;\n // The address of the key with which this account wants to sign attestations on the Attestations\n // contract\n address attestation;\n }\n\n struct SignerAuthorization {\n bool started;\n bool completed;\n }\n\n struct Account {\n bool exists;\n // [Deprecated] Each account may authorize signing keys to use for voting,\n // validating or attestation. These keys may not be keys of other accounts,\n // and may not be authorized by any other account for any purpose.\n Signers signers;\n // The address at which the account expects to receive transfers. If it's empty/0x0, the\n // account indicates that an address exchange should be initiated with the dataEncryptionKey\n address walletAddress;\n // An optional human readable identifier for the account\n string name;\n // The ECDSA public key used to encrypt and decrypt data for this account\n bytes dataEncryptionKey;\n // The URL under which an account adds metadata and claims\n string metadataURL;\n }\n\n struct PaymentDelegation {\n // Address that should receive a fraction of validator payments.\n address beneficiary;\n // Fraction of payment to delegate to `beneficiary`.\n FixidityLib.Fraction fraction;\n }\n\n mapping(address => Account) internal accounts;\n // Maps authorized signers to the account that provided the authorization.\n mapping(address => address) public authorizedBy;\n // Default signers by account (replaces the legacy Signers struct on Account)\n mapping(address => mapping(bytes32 => address)) defaultSigners;\n // All signers and their roles for a given account\n // solhint-disable-next-line max-line-length\n mapping(address => mapping(bytes32 => mapping(address => SignerAuthorization))) signerAuthorizations;\n\n bytes32 public constant EIP712_AUTHORIZE_SIGNER_TYPEHASH = keccak256(\n \"AuthorizeSigner(address account,address signer,bytes32 role)\"\n );\n bytes32 public eip712DomainSeparator;\n\n // A per-account list of CIP8 storage roots, bypassing CIP3.\n mapping(address => bytes[]) public offchainStorageRoots;\n\n // Optional per-account validator payment delegation information.\n mapping(address => PaymentDelegation) internal paymentDelegations;\n\n bytes32 constant ValidatorSigner = keccak256(abi.encodePacked(\"celo.org/core/validator\"));\n bytes32 constant AttestationSigner = keccak256(abi.encodePacked(\"celo.org/core/attestation\"));\n bytes32 constant VoteSigner = keccak256(abi.encodePacked(\"celo.org/core/vote\"));\n\n event AttestationSignerAuthorized(address indexed account, address signer);\n event VoteSignerAuthorized(address indexed account, address signer);\n event ValidatorSignerAuthorized(address indexed account, address signer);\n event SignerAuthorized(address indexed account, address signer, bytes32 indexed role);\n event SignerAuthorizationStarted(address indexed account, address signer, bytes32 indexed role);\n event SignerAuthorizationCompleted(address indexed account, address signer, bytes32 indexed role);\n event AttestationSignerRemoved(address indexed account, address oldSigner);\n event VoteSignerRemoved(address indexed account, address oldSigner);\n event ValidatorSignerRemoved(address indexed account, address oldSigner);\n event IndexedSignerSet(address indexed account, address signer, bytes32 role);\n event IndexedSignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event DefaultSignerSet(address indexed account, address signer, bytes32 role);\n event DefaultSignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event LegacySignerSet(address indexed account, address signer, bytes32 role);\n event LegacySignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event SignerRemoved(address indexed account, address oldSigner, bytes32 indexed role);\n event AccountDataEncryptionKeySet(address indexed account, bytes dataEncryptionKey);\n event AccountNameSet(address indexed account, string name);\n event AccountMetadataURLSet(address indexed account, string metadataURL);\n event AccountWalletAddressSet(address indexed account, address walletAddress);\n event AccountCreated(address indexed account);\n event OffchainStorageRootAdded(address indexed account, bytes url);\n event OffchainStorageRootRemoved(address indexed account, bytes url, uint256 index);\n event PaymentDelegationSet(address indexed beneficiary, uint256 fraction);\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 4, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n * @param registryAddress The address of the registry core smart contract.\n */\n function initialize(address registryAddress) external initializer {\n _transferOwnership(msg.sender);\n setRegistry(registryAddress);\n setEip712DomainSeparator();\n }\n\n /**\n * @notice Sets the EIP712 domain separator for the Celo Accounts abstraction.\n */\n function setEip712DomainSeparator() public {\n uint256 chainId;\n assembly {\n chainId := chainid\n }\n\n eip712DomainSeparator = keccak256(\n abi.encode(\n keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n ),\n keccak256(bytes(\"Celo Core Contracts\")),\n keccak256(\"1.0\"),\n chainId,\n address(this)\n )\n );\n }\n\n /**\n * @notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n * @param name A string to set as the name of the account\n * @param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n * @param walletAddress The wallet address to set for the account\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n * is 0x0 or msg.sender).\n */\n function setAccount(\n string calldata name,\n bytes calldata dataEncryptionKey,\n address walletAddress,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n if (!isAccount(msg.sender)) {\n createAccount();\n }\n setName(name);\n setAccountDataEncryptionKey(dataEncryptionKey);\n setWalletAddress(walletAddress, v, r, s);\n }\n\n /**\n * @notice Creates an account.\n * @return True if account creation succeeded.\n */\n function createAccount() public returns (bool) {\n require(isNotAccount(msg.sender) && isNotAuthorizedSigner(msg.sender), \"Account exists\");\n Account storage account = accounts[msg.sender];\n account.exists = true;\n emit AccountCreated(msg.sender);\n return true;\n }\n\n /**\n * @notice Setter for the name of an account.\n * @param name The name to set.\n */\n function setName(string memory name) public {\n require(isAccount(msg.sender), \"Unknown account\");\n Account storage account = accounts[msg.sender];\n account.name = name;\n emit AccountNameSet(msg.sender, name);\n }\n\n /**\n * @notice Setter for the wallet address for an account\n * @param walletAddress The wallet address to set for the account\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Wallet address can be zero. This means that the owner of the wallet\n * does not want to be paid directly without interaction, and instead wants users to\n * contact them, using the data encryption key, and arrange a payment.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n * is 0x0 or msg.sender).\n */\n function setWalletAddress(address walletAddress, uint8 v, bytes32 r, bytes32 s) public {\n require(isAccount(msg.sender), \"Unknown account\");\n if (!(walletAddress == msg.sender || walletAddress == address(0x0))) {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == walletAddress, \"Invalid signature\");\n }\n Account storage account = accounts[msg.sender];\n account.walletAddress = walletAddress;\n emit AccountWalletAddressSet(msg.sender, walletAddress);\n }\n\n /**\n * @notice Setter for the data encryption key and version.\n * @param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n */\n function setAccountDataEncryptionKey(bytes memory dataEncryptionKey) public {\n require(dataEncryptionKey.length >= 33, \"data encryption key length <= 32\");\n Account storage account = accounts[msg.sender];\n account.dataEncryptionKey = dataEncryptionKey;\n emit AccountDataEncryptionKeySet(msg.sender, dataEncryptionKey);\n }\n\n /**\n * @notice Setter for the metadata of an account.\n * @param metadataURL The URL to access the metadata.\n */\n function setMetadataURL(string calldata metadataURL) external {\n require(isAccount(msg.sender), \"Unknown account\");\n Account storage account = accounts[msg.sender];\n account.metadataURL = metadataURL;\n emit AccountMetadataURLSet(msg.sender, metadataURL);\n }\n\n /**\n * @notice Adds a new CIP8 storage root.\n * @param url The URL pointing to the offchain storage root.\n */\n function addStorageRoot(bytes calldata url) external {\n require(isAccount(msg.sender), \"Unknown account\");\n offchainStorageRoots[msg.sender].push(url);\n emit OffchainStorageRootAdded(msg.sender, url);\n }\n\n /**\n * @notice Removes a CIP8 storage root.\n * @param index The index of the storage root to be removed in the account's\n * list of storage roots.\n * @dev The order of storage roots may change after this operation (the last\n * storage root will be moved to `index`), be aware of this if removing\n * multiple storage roots at a time.\n */\n function removeStorageRoot(uint256 index) external {\n require(isAccount(msg.sender), \"Unknown account\");\n require(index < offchainStorageRoots[msg.sender].length, \"Invalid storage root index\");\n uint256 lastIndex = offchainStorageRoots[msg.sender].length - 1;\n bytes memory url = offchainStorageRoots[msg.sender][index];\n offchainStorageRoots[msg.sender][index] = offchainStorageRoots[msg.sender][lastIndex];\n offchainStorageRoots[msg.sender].length--;\n emit OffchainStorageRootRemoved(msg.sender, url, index);\n }\n\n /**\n * @notice Returns the full list of offchain storage roots for an account.\n * @param account The account whose storage roots to return.\n * @return List of storage root URLs.\n */\n function getOffchainStorageRoots(address account)\n external\n view\n returns (bytes memory, uint256[] memory)\n {\n require(isAccount(account), \"Unknown account\");\n uint256 numberRoots = offchainStorageRoots[account].length;\n uint256 totalLength = 0;\n for (uint256 i = 0; i < numberRoots; i++) {\n totalLength = totalLength.add(offchainStorageRoots[account][i].length);\n }\n\n bytes memory concatenated = new bytes(totalLength);\n uint256 lastIndex = 0;\n uint256[] memory lengths = new uint256[](numberRoots);\n for (uint256 i = 0; i < numberRoots; i++) {\n bytes storage root = offchainStorageRoots[account][i];\n lengths[i] = root.length;\n for (uint256 j = 0; j < lengths[i]; j++) {\n concatenated[lastIndex] = root[j];\n lastIndex++;\n }\n }\n\n return (concatenated, lengths);\n }\n\n /**\n * @notice Sets validator payment delegation settings.\n * @param beneficiary The address that should receive a portion of validator\n * payments.\n * @param fraction The fraction of the validator's payment that should be\n * diverted to `beneficiary` every epoch, given as FixidityLib value. Must not\n * be greater than 1.\n * @dev Use `deletePaymentDelegation` to unset the payment delegation.\n */\n function setPaymentDelegation(address beneficiary, uint256 fraction) public {\n require(isAccount(msg.sender), \"Not an account\");\n require(beneficiary != address(0), \"Beneficiary cannot be address 0x0\");\n FixidityLib.Fraction memory f = FixidityLib.wrap(fraction);\n require(f.lte(FixidityLib.fixed1()), \"Fraction must not be greater than 1\");\n paymentDelegations[msg.sender] = PaymentDelegation(beneficiary, f);\n emit PaymentDelegationSet(beneficiary, fraction);\n }\n\n /**\n * @notice Removes a validator's payment delegation by setting benficiary and\n * fraction to 0.\n */\n function deletePaymentDelegation() public {\n require(isAccount(msg.sender), \"Not an account\");\n paymentDelegations[msg.sender] = PaymentDelegation(address(0x0), FixidityLib.wrap(0));\n emit PaymentDelegationSet(address(0x0), 0);\n }\n\n /**\n * @notice Gets validator payment delegation settings.\n * @param account Account of the validator.\n * @return Beneficiary address and fraction of payment delegated.\n */\n function getPaymentDelegation(address account) external view returns (address, uint256) {\n PaymentDelegation storage delegation = paymentDelegations[account];\n return (delegation.beneficiary, delegation.fraction.unwrap());\n }\n\n /**\n * @notice Set the indexed signer for a specific role\n * @param signer the address to set as default\n * @param role the role to register a default signer for\n */\n function setIndexedSigner(address signer, bytes32 role) public {\n require(isAccount(msg.sender), \"Not an account\");\n require(isNotAccount(signer), \"Cannot authorize account as signer\");\n require(\n isNotAuthorizedSignerForAnotherAccount(msg.sender, signer),\n \"Not a signer for this account\"\n );\n require(isSigner(msg.sender, signer, role), \"Must authorize signer before setting as default\");\n\n Account storage account = accounts[msg.sender];\n if (isLegacyRole(role)) {\n if (role == VoteSigner) {\n account.signers.vote = signer;\n } else if (role == AttestationSigner) {\n account.signers.attestation = signer;\n } else if (role == ValidatorSigner) {\n account.signers.validator = signer;\n }\n emit LegacySignerSet(msg.sender, signer, role);\n } else {\n defaultSigners[msg.sender][role] = signer;\n emit DefaultSignerSet(msg.sender, signer, role);\n }\n\n emit IndexedSignerSet(msg.sender, signer, role);\n }\n\n /**\n * @notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param role The role to authorize signing for.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n * and `signer`.\n */\n function authorizeSignerWithSignature(address signer, bytes32 role, uint8 v, bytes32 r, bytes32 s)\n public\n {\n authorizeAddressWithRole(signer, role, v, r, s);\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: true\n });\n\n emit SignerAuthorized(msg.sender, signer, role);\n }\n\n function legacyAuthorizeSignerWithSignature(\n address signer,\n bytes32 role,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) private {\n authorizeAddress(signer, v, r, s);\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: true\n });\n\n emit SignerAuthorized(msg.sender, signer, role);\n }\n\n /**\n * @notice Authorizes an address to sign votes on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeVoteSigner(address signer, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n {\n legacyAuthorizeSignerWithSignature(signer, VoteSigner, v, r, s);\n setIndexedSigner(signer, VoteSigner);\n\n emit VoteSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSigner(address signer, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(!getValidators().isValidator(msg.sender), \"Cannot authorize validator signer\");\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSignerWithPublicKey(\n address signer,\n uint8 v,\n bytes32 r,\n bytes32 s,\n bytes calldata ecdsaPublicKey\n ) external nonReentrant {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(\n getValidators().updateEcdsaPublicKey(msg.sender, signer, ecdsaPublicKey),\n \"Failed to update ECDSA public key\"\n );\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n * @param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n * proof of possession. 96 bytes.\n * @param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n * account address. 48 bytes.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSignerWithKeys(\n address signer,\n uint8 v,\n bytes32 r,\n bytes32 s,\n bytes calldata ecdsaPublicKey,\n bytes calldata blsPublicKey,\n bytes calldata blsPop\n ) external nonReentrant {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(\n getValidators().updatePublicKeys(msg.sender, signer, ecdsaPublicKey, blsPublicKey, blsPop),\n \"Failed to update validator keys\"\n );\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign attestations on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeAttestationSigner(address signer, uint8 v, bytes32 r, bytes32 s) public {\n legacyAuthorizeSignerWithSignature(signer, AttestationSigner, v, r, s);\n setIndexedSigner(signer, AttestationSigner);\n\n emit AttestationSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Begin the process of authorizing an address to sign on behalf of the account\n * @param signer The address of the signing key to authorize.\n * @param role The role to authorize signing for.\n */\n function authorizeSigner(address signer, bytes32 role) public {\n require(isAccount(msg.sender), \"Unknown account\");\n require(\n isNotAccount(signer) && isNotAuthorizedSignerForAnotherAccount(msg.sender, signer),\n \"Cannot re-authorize address signer\"\n );\n\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: false\n });\n emit SignerAuthorizationStarted(msg.sender, signer, role);\n }\n\n /**\n * @notice Finish the process of authorizing an address to sign on behalf of the account. \n * @param account The address of account that authorized signing.\n * @param role The role to finish authorizing for.\n */\n function completeSignerAuthorization(address account, bytes32 role) public {\n require(isAccount(account), \"Unknown account\");\n require(\n isNotAccount(msg.sender) && isNotAuthorizedSignerForAnotherAccount(account, msg.sender),\n \"Cannot re-authorize address signer\"\n );\n require(\n signerAuthorizations[account][role][msg.sender].started == true,\n \"Signer authorization not started\"\n );\n\n authorizedBy[msg.sender] = account;\n signerAuthorizations[account][role][msg.sender].completed = true;\n emit SignerAuthorizationCompleted(account, msg.sender, role);\n }\n\n /**\n * @notice Whether or not the signer has been registered as the legacy signer for role\n * @param _account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isLegacySigner(address _account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n Account storage account = accounts[_account];\n if (role == ValidatorSigner && account.signers.validator == signer) {\n return true;\n } else if (role == AttestationSigner && account.signers.attestation == signer) {\n return true;\n } else if (role == VoteSigner && account.signers.vote == signer) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @notice Whether or not the signer has been registered as the default signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isDefaultSigner(address account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n return defaultSigners[account][role] == signer;\n }\n\n /**\n * @notice Whether or not the signer has been registered as an indexed signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isIndexedSigner(address account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n return\n isLegacyRole(role)\n ? isLegacySigner(account, signer, role)\n : isDefaultSigner(account, signer, role);\n }\n\n /**\n * @notice Whether or not the signer has been registered as a signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isSigner(address account, address signer, bytes32 role) public view returns (bool) {\n return\n isLegacySigner(account, signer, role) ||\n (signerAuthorizations[account][role][signer].completed && authorizedBy[signer] == account);\n }\n\n /**\n * @notice Removes the signer for a default role.\n * @param role The role that has been authorized.\n */\n function removeDefaultSigner(bytes32 role) public {\n address signer = defaultSigners[msg.sender][role];\n defaultSigners[msg.sender][role] = address(0);\n emit DefaultSignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Remove one of the Validator, Attestation or \n * Vote signers from an account. Should only be called from\n * methods that check the role is a legacy signer.\n * @param role The role that has been authorized.\n */\n function removeLegacySigner(bytes32 role) private {\n Account storage account = accounts[msg.sender];\n\n address signer;\n if (role == ValidatorSigner) {\n signer = account.signers.validator;\n account.signers.validator = address(0);\n } else if (role == AttestationSigner) {\n signer = account.signers.attestation;\n account.signers.attestation = address(0);\n } else if (role == VoteSigner) {\n signer = account.signers.vote;\n account.signers.vote = address(0);\n }\n emit LegacySignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Removes the currently authorized and indexed signer \n * for a specific role\n * @param role The role of the signer.\n */\n function removeIndexedSigner(bytes32 role) public {\n address oldSigner = getIndexedSigner(msg.sender, role);\n isLegacyRole(role) ? removeLegacySigner(role) : removeDefaultSigner(role);\n\n emit IndexedSignerRemoved(msg.sender, oldSigner, role);\n }\n\n /**\n * @notice Removes the currently authorized signer for a specific role and \n * if the signer is indexed, remove that as well.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function removeSigner(address signer, bytes32 role) public {\n if (isIndexedSigner(msg.sender, signer, role)) {\n removeIndexedSigner(role);\n }\n\n delete signerAuthorizations[msg.sender][role][signer];\n emit SignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Removes the currently authorized vote signer for the account.\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeVoteSigner() public {\n address signer = getLegacySigner(msg.sender, VoteSigner);\n removeSigner(signer, VoteSigner);\n emit VoteSignerRemoved(msg.sender, signer);\n }\n\n /**\n * @notice Removes the currently authorized validator signer for the account\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeValidatorSigner() public {\n address signer = getLegacySigner(msg.sender, ValidatorSigner);\n removeSigner(signer, ValidatorSigner);\n emit ValidatorSignerRemoved(msg.sender, signer);\n }\n\n /**\n * @notice Removes the currently authorized attestation signer for the account\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeAttestationSigner() public {\n address signer = getLegacySigner(msg.sender, AttestationSigner);\n removeSigner(signer, AttestationSigner);\n emit AttestationSignerRemoved(msg.sender, signer);\n }\n\n function signerToAccountWithRole(address signer, bytes32 role) internal view returns (address) {\n address account = authorizedBy[signer];\n if (account != address(0)) {\n require(isSigner(account, signer, role), \"not active authorized signer for role\");\n return account;\n }\n\n require(isAccount(signer), \"not an account\");\n return signer;\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or currently authorized attestation signer.\n * @dev Fails if the `signer` is not an account or currently authorized attestation signer.\n * @return The associated account.\n */\n function attestationSignerToAccount(address signer) external view returns (address) {\n return signerToAccountWithRole(signer, AttestationSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of an account or currently authorized validator signer.\n * @dev Fails if the `signer` is not an account or currently authorized validator.\n * @return The associated account.\n */\n function validatorSignerToAccount(address signer) public view returns (address) {\n return signerToAccountWithRole(signer, ValidatorSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or currently authorized vote signer.\n * @dev Fails if the `signer` is not an account or currently authorized vote signer.\n * @return The associated account.\n */\n function voteSignerToAccount(address signer) external view returns (address) {\n return signerToAccountWithRole(signer, VoteSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or previously authorized signer.\n * @dev Fails if the `signer` is not an account or previously authorized signer.\n * @return The associated account.\n */\n function signerToAccount(address signer) external view returns (address) {\n address authorizingAccount = authorizedBy[signer];\n if (authorizingAccount != address(0)) {\n return authorizingAccount;\n } else {\n require(isAccount(signer), \"Not an account\");\n return signer;\n }\n }\n\n /**\n * @notice Checks whether the role is one of Vote, Validator or Attestation\n * @param role The role to check\n */\n function isLegacyRole(bytes32 role) public pure returns (bool) {\n return role == VoteSigner || role == ValidatorSigner || role == AttestationSigner;\n }\n\n /**\n * @notice Returns the legacy signer for the specified account and \n * role. If no signer has been specified it will return the account itself.\n * @param _account The address of the account.\n * @param role The role of the signer.\n */\n function getLegacySigner(address _account, bytes32 role) public view returns (address) {\n require(isLegacyRole(role), \"Role is not a legacy signer\");\n\n Account storage account = accounts[_account];\n address signer;\n if (role == ValidatorSigner) {\n signer = account.signers.validator;\n } else if (role == AttestationSigner) {\n signer = account.signers.attestation;\n } else if (role == VoteSigner) {\n signer = account.signers.vote;\n }\n\n return signer == address(0) ? _account : signer;\n }\n\n /**\n * @notice Returns the default signer for the specified account and \n * role. If no signer has been specified it will return the account itself.\n * @param account The address of the account.\n * @param role The role of the signer.\n */\n function getDefaultSigner(address account, bytes32 role) public view returns (address) {\n address defaultSigner = defaultSigners[account][role];\n return defaultSigner == address(0) ? account : defaultSigner;\n }\n\n /**\n * @notice Returns the indexed signer for the specified account and role. \n * If no signer has been specified it will return the account itself.\n * @param account The address of the account.\n * @param role The role of the signer.\n */\n function getIndexedSigner(address account, bytes32 role) public view returns (address) {\n return isLegacyRole(role) ? getLegacySigner(account, role) : getDefaultSigner(account, role);\n }\n\n /**\n * @notice Returns the vote signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can sign votes.\n */\n function getVoteSigner(address account) public view returns (address) {\n return getLegacySigner(account, VoteSigner);\n }\n\n /**\n * @notice Returns the validator signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can register a validator or group.\n */\n function getValidatorSigner(address account) public view returns (address) {\n return getLegacySigner(account, ValidatorSigner);\n }\n\n /**\n * @notice Returns the attestation signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can sign attestations.\n */\n function getAttestationSigner(address account) public view returns (address) {\n return getLegacySigner(account, AttestationSigner);\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for one of the legacy roles\n */\n function hasLegacySigner(address account, bytes32 role) public view returns (bool) {\n return getLegacySigner(account, role) != account;\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for a role\n */\n function hasDefaultSigner(address account, bytes32 role) public view returns (bool) {\n return getDefaultSigner(account, role) != account;\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for the role\n */\n function hasIndexedSigner(address account, bytes32 role) public view returns (bool) {\n return isLegacyRole(role) ? hasLegacySigner(account, role) : hasDefaultSigner(account, role);\n }\n\n /**\n * @notice Checks whether or not the account has a signer\n * registered for the plaintext role.\n * @dev See `hasIndexedSigner` for more gas efficient call.\n */\n function hasAuthorizedSigner(address account, string calldata role) external view returns (bool) {\n return hasIndexedSigner(account, keccak256(abi.encodePacked(role)));\n }\n\n /**\n * @notice Returns if account has specified a dedicated vote signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated vote signer.\n */\n function hasAuthorizedVoteSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, VoteSigner);\n }\n\n /**\n * @notice Returns if account has specified a dedicated validator signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated validator signer.\n */\n function hasAuthorizedValidatorSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, ValidatorSigner);\n }\n\n /**\n * @notice Returns if account has specified a dedicated attestation signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated attestation signer.\n */\n function hasAuthorizedAttestationSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, AttestationSigner);\n }\n\n /**\n * @notice Getter for the name of an account.\n * @param account The address of the account to get the name for.\n * @return name The name of the account.\n */\n function getName(address account) external view returns (string memory) {\n return accounts[account].name;\n }\n\n /**\n * @notice Getter for the metadata of an account.\n * @param account The address of the account to get the metadata for.\n * @return metadataURL The URL to access the metadata.\n */\n function getMetadataURL(address account) external view returns (string memory) {\n return accounts[account].metadataURL;\n }\n\n /**\n * @notice Getter for the metadata of multiple accounts.\n * @param accountsToQuery The addresses of the accounts to get the metadata for.\n * @return (stringLengths[] - the length of each string in bytes\n * data - all strings concatenated\n * )\n */\n function batchGetMetadataURL(address[] calldata accountsToQuery)\n external\n view\n returns (uint256[] memory, bytes memory)\n {\n uint256 totalSize = 0;\n uint256[] memory sizes = new uint256[](accountsToQuery.length);\n for (uint256 i = 0; i < accountsToQuery.length; i = i.add(1)) {\n sizes[i] = bytes(accounts[accountsToQuery[i]].metadataURL).length;\n totalSize = totalSize.add(sizes[i]);\n }\n\n bytes memory data = new bytes(totalSize);\n uint256 pointer = 0;\n for (uint256 i = 0; i < accountsToQuery.length; i = i.add(1)) {\n for (uint256 j = 0; j < sizes[i]; j = j.add(1)) {\n data[pointer] = bytes(accounts[accountsToQuery[i]].metadataURL)[j];\n pointer = pointer.add(1);\n }\n }\n return (sizes, data);\n }\n\n /**\n * @notice Getter for the data encryption key and version.\n * @param account The address of the account to get the key for\n * @return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n */\n function getDataEncryptionKey(address account) external view returns (bytes memory) {\n return accounts[account].dataEncryptionKey;\n }\n\n /**\n * @notice Getter for the wallet address for an account\n * @param account The address of the account to get the wallet address for\n * @return Wallet address\n */\n function getWalletAddress(address account) external view returns (address) {\n return accounts[account].walletAddress;\n }\n\n /**\n * @notice Check if an account already exists.\n * @param account The address of the account\n * @return Returns `true` if account exists. Returns `false` otherwise.\n */\n function isAccount(address account) public view returns (bool) {\n return (accounts[account].exists);\n }\n\n /**\n * @notice Check if an account already exists.\n * @param account The address of the account\n * @return Returns `false` if account exists. Returns `true` otherwise.\n */\n function isNotAccount(address account) internal view returns (bool) {\n return (!accounts[account].exists);\n }\n\n /**\n * @notice Check if an address has been an authorized signer for an account.\n * @param signer The possibly authorized address.\n * @return Returns `true` if authorized. Returns `false` otherwise.\n */\n function isAuthorizedSigner(address signer) external view returns (bool) {\n return (authorizedBy[signer] != address(0));\n }\n\n /**\n * @notice Check if an address has not been an authorized signer for an account.\n * @param signer The possibly authorized address.\n * @return Returns `false` if authorized. Returns `true` otherwise.\n */\n function isNotAuthorizedSigner(address signer) internal view returns (bool) {\n return (authorizedBy[signer] == address(0));\n }\n\n /**\n * @notice Check if `signer` has not been authorized, and if it has been previously\n * authorized that it was authorized by `account`.\n * @param account The authorizing account address.\n * @param signer The possibly authorized address.\n * @return Returns `false` if authorized. Returns `true` otherwise.\n */\n function isNotAuthorizedSignerForAnotherAccount(address account, address signer)\n internal\n view\n returns (bool)\n {\n return (authorizedBy[signer] == address(0) || authorizedBy[signer] == account);\n }\n\n /**\n * @notice Authorizes some role of `msg.sender`'s account to another address.\n * @param authorized The address to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Fails if the address is already authorized to another account or is an account itself.\n * @dev Note that once an address is authorized, it may never be authorized again.\n * @dev v, r, s constitute `authorized`'s signature on `msg.sender`.\n */\n function authorizeAddress(address authorized, uint8 v, bytes32 r, bytes32 s) private {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == authorized, \"Invalid signature\");\n\n authorize(authorized);\n }\n\n /**\n * @notice Returns the address that signed the provided role authorization.\n * @param account The `account` property signed over in the EIP712 signature\n * @param signer The `signer` property signed over in the EIP712 signature\n * @param role The `role` property signed over in the EIP712 signature\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @return The address that signed the provided role authorization.\n */\n function getRoleAuthorizationSigner(\n address account,\n address signer,\n bytes32 role,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public view returns (address) {\n bytes32 structHash = keccak256(\n abi.encode(EIP712_AUTHORIZE_SIGNER_TYPEHASH, account, signer, role)\n );\n return Signatures.getSignerOfTypedDataHash(eip712DomainSeparator, structHash, v, r, s);\n }\n\n /**\n * @notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n * @param authorized The address to authorize.\n * @param role The role to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Fails if the address is already authorized to another account or is an account itself.\n * @dev Note that this signature is EIP712 compliant over the authorizing `account` \n * (`msg.sender`), `signer` (`authorized`) and `role`.\n */\n function authorizeAddressWithRole(address authorized, bytes32 role, uint8 v, bytes32 r, bytes32 s)\n private\n {\n address signer = getRoleAuthorizationSigner(msg.sender, authorized, role, v, r, s);\n require(signer == authorized, \"Invalid signature\");\n\n authorize(authorized);\n }\n\n /**\n * @notice Authorizes an address to `msg.sender`'s account\n * @param authorized The address to authorize.\n * @dev Fails if the address is already authorized for another account or is an account itself.\n */\n function authorize(address authorized) private {\n require(isAccount(msg.sender), \"Unknown account\");\n require(\n isNotAccount(authorized) && isNotAuthorizedSignerForAnotherAccount(msg.sender, authorized),\n \"Cannot re-authorize address or locked gold account for another account\"\n );\n\n authorizedBy[authorized] = msg.sender;\n }\n}\n", + "sourcePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol", + "ast": { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol", + "exportedSymbols": { + "Accounts": [ + 2783 + ] + }, + "id": 2784, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 44541, + "src": "26:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 44659, + "src": "86:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol", + "file": "./interfaces/IAccounts.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9341, + "src": "151:36:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol", + "file": "../common/FixidityLib.sol", + "id": 62, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 3611, + "src": "189:35:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 63, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 4705, + "src": "225:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 64, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9384, + "src": "263:57:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "id": 65, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 7220, + "src": "321:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol", + "file": "../common/UsingRegistry.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 8616, + "src": "356:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "id": 67, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9762, + "src": "394:49:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 68, + "name": "IAccounts", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9340, + "src": "468:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAccounts_$9340", + "typeString": "contract IAccounts" + } + }, + "id": 69, + "nodeType": "InheritanceSpecifier", + "src": "468:9:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 70, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9383, + "src": "481:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9383", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 71, + "nodeType": "InheritanceSpecifier", + "src": "481:22:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 72, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44658, + "src": "507:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$44658", + "typeString": "contract Ownable" + } + }, + "id": 73, + "nodeType": "InheritanceSpecifier", + "src": "507:7:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 74, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9761, + "src": "518:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$9761", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 75, + "nodeType": "InheritanceSpecifier", + "src": "518:15:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 76, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "537:13:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 77, + "nodeType": "InheritanceSpecifier", + "src": "537:13:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 78, + "name": "UsingRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8615, + "src": "554:13:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistry_$8615", + "typeString": "contract UsingRegistry" + } + }, + "id": 79, + "nodeType": "InheritanceSpecifier", + "src": "554:13:1" + } + ], + "contractDependencies": [ + 4704, + 8615, + 9340, + 9383, + 9761, + 44203, + 44658 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2783, + "linearizedBaseContracts": [ + 2783, + 8615, + 4704, + 9761, + 44658, + 44203, + 9383, + 9340 + ], + "name": "Accounts", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 82, + "libraryName": { + "contractScope": null, + "id": 80, + "name": "FixidityLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3610, + "src": "578:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FixidityLib_$3610", + "typeString": "library FixidityLib" + } + }, + "nodeType": "UsingForDirective", + "src": "572:43:1", + "typeName": { + "contractScope": null, + "id": 81, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "594:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + } + }, + { + "id": 85, + "libraryName": { + "contractScope": null, + "id": 83, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44540, + "src": "624:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$44540", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "618:27:1", + "typeName": { + "id": 84, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "Accounts.Signers", + "id": 92, + "members": [ + { + "constant": false, + "id": 87, + "name": "vote", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "871:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "871:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 89, + "name": "validator", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1249:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1249:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 91, + "name": "attestation", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1389:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1389:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Signers", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "649:764:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.SignerAuthorization", + "id": 97, + "members": [ + { + "constant": false, + "id": 94, + "name": "started", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1450:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 93, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1468:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 95, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1468:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "SignerAuthorization", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "1417:70:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.Account", + "id": 110, + "members": [ + { + "constant": false, + "id": 99, + "name": "exists", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1512:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1512:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "name": "signers", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1759:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage_ptr", + "typeString": "struct Accounts.Signers" + }, + "typeName": { + "contractScope": null, + "id": 100, + "name": "Signers", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 92, + "src": "1759:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage_ptr", + "typeString": "struct Accounts.Signers" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1970:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1970:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2058:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 104, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2058:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2153:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2153:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2245:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 108, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Account", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "1491:777:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.PaymentDelegation", + "id": 115, + "members": [ + { + "constant": false, + "id": 112, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "2372:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2372:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 114, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "2454:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 113, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2454:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "PaymentDelegation", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "2272:216:1", + "visibility": "public" + }, + { + "constant": false, + "id": 119, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2492:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account)" + }, + "typeName": { + "id": 118, + "keyType": { + "id": 116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2500:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2492:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account)" + }, + "valueType": { + "contractScope": null, + "id": 117, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "2511:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 123, + "name": "authorizedBy", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2618:47:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 122, + "keyType": { + "id": 120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2618:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2637:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 129, + "name": "defaultSigners", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2749:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + }, + "typeName": { + "id": 128, + "keyType": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2757:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2749:47:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + }, + "valueType": { + "id": 127, + "keyType": { + "id": 125, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2776:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2768:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueType": { + "id": 126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2787:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 137, + "name": "signerAuthorizations", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2915:100:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))" + }, + "typeName": { + "id": 136, + "keyType": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2923:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2915:79:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))" + }, + "valueType": { + "id": 135, + "keyType": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2942:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2934:59:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization))" + }, + "valueType": { + "id": 134, + "keyType": { + "id": 132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2961:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2953:39:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization)" + }, + "valueType": { + "contractScope": null, + "id": 133, + "name": "SignerAuthorization", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 97, + "src": "2972:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage_ptr", + "typeString": "struct Accounts.SignerAuthorization" + } + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": true, + "id": 142, + "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3020:140:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 138, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c6529", + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3094:62:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b", + "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\"" + }, + "value": "AuthorizeSigner(address account,address signer,bytes32 role)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b", + "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\"" + } + ], + "id": 139, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3079:81:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 144, + "name": "eip712DomainSeparator", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3164:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 143, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 149, + "name": "offchainStorageRoots", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3268:55:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes[])" + }, + "typeName": { + "id": 148, + "keyType": { + "id": 145, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3276:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3268:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes[])" + }, + "valueType": { + "baseType": { + "id": 146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 147, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 153, + "name": "paymentDelegations", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3396:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation)" + }, + "typeName": { + "id": 152, + "keyType": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3396:37:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation)" + }, + "valueType": { + "contractScope": null, + "id": 151, + "name": "PaymentDelegation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 115, + "src": "3415:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": true, + "id": 161, + "name": "ValidatorSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3466:89:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3466:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f76616c696461746f72", + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3528:25:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2", + "typeString": "literal_string \"celo.org/core/validator\"" + }, + "value": "celo.org/core/validator" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2", + "typeString": "literal_string \"celo.org/core/validator\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 156, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3511:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3511:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3511:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 155, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3501:54:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 169, + "name": "AttestationSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3559:93:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 162, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3559:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f6174746573746174696f6e", + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3623:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5", + "typeString": "literal_string \"celo.org/core/attestation\"" + }, + "value": "celo.org/core/attestation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5", + "typeString": "literal_string \"celo.org/core/attestation\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 164, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3606:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3606:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3606:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 163, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3596:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3596:56:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 177, + "name": "VoteSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3656:79:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 170, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f766f7465", + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3713:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf", + "typeString": "literal_string \"celo.org/core/vote\"" + }, + "value": "celo.org/core/vote" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf", + "typeString": "literal_string \"celo.org/core/vote\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 172, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3696:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3696:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3696:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 171, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3686:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3686:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": null, + "id": 183, + "name": "AttestationSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 179, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "3774:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3774:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "3799:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3799:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3773:41:1" + }, + "src": "3740:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 189, + "name": "VoteSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 185, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "3845:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3845:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "3870:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3870:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3844:41:1" + }, + "src": "3818:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 195, + "name": "ValidatorSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 191, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "3921:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3921:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "3946:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3946:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3920:41:1" + }, + "src": "3889:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 203, + "name": "SignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "3988:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3988:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 199, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "4013:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4013:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 201, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "4029:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4029:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3987:63:1" + }, + "src": "3965:86:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 211, + "name": "SignerAuthorizationStarted", + "nodeType": "EventDefinition", + "parameters": { + "id": 210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 205, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4087:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4087:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 207, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4112:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4112:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4128:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4128:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4086:63:1" + }, + "src": "4054:96:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 219, + "name": "SignerAuthorizationCompleted", + "nodeType": "EventDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4188:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4188:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4213:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4213:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 217, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4229:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4229:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4187:63:1" + }, + "src": "4153:98:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 225, + "name": "AttestationSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 225, + "src": "4285:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4285:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 223, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 225, + "src": "4310:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4310:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4284:44:1" + }, + "src": "4254:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 231, + "name": "VoteSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4356:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4356:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 229, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4381:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4381:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4355:44:1" + }, + "src": "4332:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 237, + "name": "ValidatorSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 233, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "4432:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4432:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 235, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "4457:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4457:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4431:44:1" + }, + "src": "4403:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 245, + "name": "IndexedSignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 239, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4502:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 238, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4502:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 241, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4527:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4527:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4543:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 242, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4543:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4501:55:1" + }, + "src": "4479:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 253, + "name": "IndexedSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4587:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4587:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 249, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4612:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4612:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 251, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4631:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4586:58:1" + }, + "src": "4560:85:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 261, + "name": "DefaultSignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4671:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4671:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 257, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4696:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4696:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 259, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4712:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4712:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4670:55:1" + }, + "src": "4648:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 269, + "name": "DefaultSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 263, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4756:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4756:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4781:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4781:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4800:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 266, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4755:58:1" + }, + "src": "4729:85:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 277, + "name": "LegacySignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4839:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4839:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4864:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4864:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 275, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4880:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4880:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4838:55:1" + }, + "src": "4817:77:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 285, + "name": "LegacySignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4923:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4923:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 281, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4948:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4948:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 283, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4967:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 282, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4967:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4922:58:1" + }, + "src": "4897:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 293, + "name": "SignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 287, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5004:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5004:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5029:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5029:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5048:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5048:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5003:66:1" + }, + "src": "4984:86:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 299, + "name": "AccountDataEncryptionKeySet", + "nodeType": "EventDefinition", + "parameters": { + "id": 298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "5107:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5107:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "indexed": false, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "5132:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5132:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5106:50:1" + }, + "src": "5073:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 305, + "name": "AccountNameSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 301, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "5181:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5181:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 303, + "indexed": false, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "5206:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 302, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5206:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5180:38:1" + }, + "src": "5160:59:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 311, + "name": "AccountMetadataURLSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "5250:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 309, + "indexed": false, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "5275:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 308, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5275:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5249:45:1" + }, + "src": "5222:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 317, + "name": "AccountWalletAddressSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 313, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 317, + "src": "5328:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5328:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "indexed": false, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 317, + "src": "5353:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5353:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5327:48:1" + }, + "src": "5298:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 321, + "name": "AccountCreated", + "nodeType": "EventDefinition", + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 319, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 321, + "src": "5400:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5400:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5399:25:1" + }, + "src": "5379:46:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 327, + "name": "OffchainStorageRootAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "5459:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5459:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 325, + "indexed": false, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "5484:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 324, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5484:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5458:36:1" + }, + "src": "5428:67:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 335, + "name": "OffchainStorageRootRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 329, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5531:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 331, + "indexed": false, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5556:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 330, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5556:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "indexed": false, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5567:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5567:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5530:51:1" + }, + "src": "5498:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 341, + "name": "PaymentDelegationSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "5612:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5612:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "indexed": false, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "5641:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5641:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5611:47:1" + }, + "src": "5585:74:1" + }, + { + "body": { + "id": 349, + "nodeType": "Block", + "src": "5858:2:1", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 350, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 346, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "5852:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 347, + "modifierName": { + "argumentTypes": null, + "id": 345, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "5838:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5838:19:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 343, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "5820:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5820:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5819:11:1" + }, + "returnParameters": { + "id": 348, + "nodeType": "ParameterList", + "parameters": [], + "src": "5858:0:1" + }, + "scope": 2783, + "src": "5808:52:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 367, + "nodeType": "Block", + "src": "6121:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6135:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6138:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "34", + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6141:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6144:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 365, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6134:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_4_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 1,int_const 1,int_const 4,int_const 0)" + } + }, + "functionReturnParameters": 360, + "id": 366, + "nodeType": "Return", + "src": "6127:19:1" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "id": 368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [], + "src": "6059:2:1" + }, + "returnParameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 353, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6085:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 355, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6094:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6094:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 357, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6103:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 356, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6103:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 359, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6112:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6112:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6084:36:1" + }, + "scope": 2783, + "src": "6034:117:1", + "stateMutability": "pure", + "superFunction": 9382, + "visibility": "external" + }, + { + "body": { + "id": 387, + "nodeType": "Block", + "src": "6406:107:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 376, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "6431:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6431:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 375, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44657, + "src": "6412:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6412:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6412:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 381, + "name": "registryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "6460:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 380, + "name": "setRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8432, + "src": "6448:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6448:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6448:28:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 384, + "name": "setEip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "6482:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6482:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 386, + "nodeType": "ExpressionStatement", + "src": "6482:26:1" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n@param registryAddress The address of the registry core smart contract.", + "id": 388, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 373, + "modifierName": { + "argumentTypes": null, + "id": 372, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "6394:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6394:11:1" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 370, + "name": "registryAddress", + "nodeType": "VariableDeclaration", + "scope": 388, + "src": "6360:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6360:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6359:25:1" + }, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [], + "src": "6406:0:1" + }, + "scope": 2783, + "src": "6340:173:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 418, + "nodeType": "Block", + "src": "6653:384:1", + "statements": [ + { + "assignments": [ + 392 + ], + "declarations": [ + { + "constant": false, + "id": 392, + "name": "chainId", + "nodeType": "VariableDeclaration", + "scope": 418, + "src": "6659:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6659:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 393, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "6659:15:1" + }, + { + "externalReferences": [ + { + "chainId": { + "declaration": 392, + "isOffset": false, + "isSlot": false, + "src": "6697:7:1", + "valueSize": 1 + } + } + ], + "id": 394, + "nodeType": "InlineAssembly", + "operations": "{ chainId := chainid() }", + "src": "6680:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 395, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "6727:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6809:84:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 399, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6788:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6788:115:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "43656c6f20436f726520436f6e747261637473", + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6929:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c", + "typeString": "literal_string \"Celo Core Contracts\"" + }, + "value": "Celo Core Contracts" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c", + "typeString": "literal_string \"Celo Core Contracts\"" + } + ], + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6923:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6923:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 402, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6913:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6913:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "312e30", + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6972:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + }, + "value": "1.0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + } + ], + "id": 407, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6962:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6962:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 410, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 392, + "src": "6988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 412, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45860, + "src": "7013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Accounts_$2783", + "typeString": "contract Accounts" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Accounts_$2783", + "typeString": "contract Accounts" + } + ], + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7005:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 397, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "6768:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6768:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6768:258:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 396, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6751:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6751:281:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6727:305:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 417, + "nodeType": "ExpressionStatement", + "src": "6727:305:1" + } + ] + }, + "documentation": "@notice Sets the EIP712 domain separator for the Celo Accounts abstraction.", + "id": 419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setEip712DomainSeparator", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "6643:2:1" + }, + "returnParameters": { + "id": 390, + "nodeType": "ParameterList", + "parameters": [], + "src": "6653:0:1" + }, + "scope": 2783, + "src": "6610:427:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7830:185:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7840:22:1", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 435, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "7851:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7851:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 434, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "7841:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7841:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 443, + "nodeType": "IfStatement", + "src": "7836:58:1", + "trueBody": { + "id": 442, + "nodeType": "Block", + "src": "7864:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 439, + "name": "createAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "7872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$", + "typeString": "function () returns (bool)" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7872:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 441, + "nodeType": "ExpressionStatement", + "src": "7872:15:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 445, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "7907:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 444, + "name": "setName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 532, + "src": "7899:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7899:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "7899:13:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 449, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "7946:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 448, + "name": "setAccountDataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "7918:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory)" + } + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7918:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 451, + "nodeType": "ExpressionStatement", + "src": "7918:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 453, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "7987:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 454, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "8002:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 455, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 429, + "src": "8005:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 456, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "8008:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 452, + "name": "setWalletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "7970:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,uint8,bytes32,bytes32)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7970:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7970:40:1" + } + ] + }, + "documentation": "@notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n@param name A string to set as the name of the account\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).", + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 421, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7688:20:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 420, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 423, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7714:32:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 422, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 425, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7752:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7752:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7779:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 426, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7779:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7792:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 428, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7807:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 430, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7807:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7682:138:1" + }, + "returnParameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [], + "src": "7830:0:1" + }, + "scope": 2783, + "src": "7663:352:1", + "stateMutability": "nonpayable", + "superFunction": 9216, + "visibility": "external" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "8160:232:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 467, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8187:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8187:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 466, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "8174:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8174:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8224:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8224:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 470, + "name": "isNotAuthorizedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "8202:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8202:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8174:61:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420657869737473", + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8237:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870", + "typeString": "literal_string \"Account exists\"" + }, + "value": "Account exists" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870", + "typeString": "literal_string \"Account exists\"" + } + ], + "id": 465, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "8166:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8166:88:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "8166:88:1" + }, + { + "assignments": [ + 479 + ], + "declarations": [ + { + "constant": false, + "id": 479, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "8260:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 478, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "8260:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 484, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 480, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "8286:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 483, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 481, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8295:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8295:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8286:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8260:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 485, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "8312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 487, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "8312:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8329:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8312:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "8312:21:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8359:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8359:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 491, + "name": "AccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "8344:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8344:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 495, + "nodeType": "EmitStatement", + "src": "8339:31:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8383:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 464, + "id": 497, + "nodeType": "Return", + "src": "8376:11:1" + } + ] + }, + "documentation": "@notice Creates an account.\n@return True if account creation succeeded.", + "id": 499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 461, + "nodeType": "ParameterList", + "parameters": [], + "src": "8135:2:1" + }, + "returnParameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "8154:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8154:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8153:6:1" + }, + "scope": 2783, + "src": "8113:279:1", + "stateMutability": "nonpayable", + "superFunction": 9323, + "visibility": "public" + }, + { + "body": { + "id": 531, + "nodeType": "Block", + "src": "8534:180:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8558:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8558:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 505, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "8548:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8548:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8571:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 504, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "8540:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8540:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 511, + "nodeType": "ExpressionStatement", + "src": "8540:49:1" + }, + { + "assignments": [ + 513 + ], + "declarations": [ + { + "constant": false, + "id": 513, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 531, + "src": "8595:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 512, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "8595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 518, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 514, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "8621:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 517, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 515, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8630:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8630:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8621:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8595:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 519, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "8647:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 521, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "name", + "nodeType": "MemberAccess", + "referencedDeclaration": 105, + "src": "8647:12:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 522, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "8662:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "8647:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 524, + "nodeType": "ExpressionStatement", + "src": "8647:19:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 526, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 528, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "8704:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 525, + "name": "AccountNameSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "8677:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory)" + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8677:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 530, + "nodeType": "EmitStatement", + "src": "8672:37:1" + } + ] + }, + "documentation": "@notice Setter for the name of an account.\n@param name The name to set.", + "id": 532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setName", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 501, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "8507:18:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 500, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8507:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8506:20:1" + }, + "returnParameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "8534:0:1" + }, + "scope": 2783, + "src": "8490:224:1", + "stateMutability": "nonpayable", + "superFunction": 9190, + "visibility": "public" + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "9477:433:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9501:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9501:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 544, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "9491:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9514:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "9483:7:1", + "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, + "names": [], + "nodeType": "FunctionCall", + "src": "9483:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "9483:49:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9542:63:1", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9544:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 552, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9561:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9561:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9544:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 555, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9575:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9600:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9592:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9592:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9575:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9544:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 561, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9543:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 582, + "nodeType": "IfStatement", + "src": "9538:212:1", + "trueBody": { + "id": 581, + "nodeType": "Block", + "src": "9607:143:1", + "statements": [ + { + "assignments": [ + 564 + ], + "declarations": [ + { + "constant": false, + "id": 564, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "9615:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9615:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 573, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 567, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9662:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9662:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 569, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "9674:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 570, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 538, + "src": "9677:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 571, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "9680:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 565, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "9632:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7127, + "src": "9632:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9632:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9615:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 575, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "9698:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 576, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9708:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9698:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9723:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 574, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "9690:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9690:53:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "9690:53:1" + } + ] + } + }, + { + "assignments": [ + 584 + ], + "declarations": [ + { + "constant": false, + "id": 584, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9755:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 583, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "9755:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 589, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "9781:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 588, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 586, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9790:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9790:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9781:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9755:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 590, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 584, + "src": "9807:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 592, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "walletAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 103, + "src": "9807:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 593, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9831:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9807:37:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 595, + "nodeType": "ExpressionStatement", + "src": "9807:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 597, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9879:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9879:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 599, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9891:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 596, + "name": "AccountWalletAddressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "9855:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9855:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "EmitStatement", + "src": "9850:55:1" + } + ] + }, + "documentation": "@notice Setter for the wallet address for an account\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Wallet address can be zero. This means that the owner of the wallet\n does not want to be paid directly without interaction, and instead wants users to\ncontact them, using the data encryption key, and arrange a payment.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).", + "id": 603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setWalletAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 534, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9416:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9416:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 536, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9439:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 535, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9439:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 538, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9448:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9448:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 540, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9459:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 539, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9459:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9415:54:1" + }, + "returnParameters": { + "id": 542, + "nodeType": "ParameterList", + "parameters": [], + "src": "9477:0:1" + }, + "scope": 2783, + "src": "9390:520:1", + "stateMutability": "nonpayable", + "superFunction": 9201, + "visibility": "public" + }, + { + "body": { + "id": 635, + "nodeType": "Block", + "src": "10158:258:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 609, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10172:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10172:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3333", + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10200:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33_by_1", + "typeString": "int_const 33" + }, + "value": "33" + }, + "src": "10172:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6461746120656e6372797074696f6e206b6579206c656e677468203c3d203332", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10204:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa", + "typeString": "literal_string \"data encryption key length <= 32\"" + }, + "value": "data encryption key length <= 32" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa", + "typeString": "literal_string \"data encryption key length <= 32\"" + } + ], + "id": 608, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10164:75:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 615, + "nodeType": "ExpressionStatement", + "src": "10164:75:1" + }, + { + "assignments": [ + 617 + ], + "declarations": [ + { + "constant": false, + "id": 617, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "10245:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 616, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "10245:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 622, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "10271:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 621, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 619, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10280:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10280:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10271:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10245:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 623, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "10297:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataEncryptionKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 107, + "src": "10297:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 626, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10325:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "10297:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "10297:45:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 630, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10381:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10381:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 632, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10393:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 629, + "name": "AccountDataEncryptionKeySet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 299, + "src": "10353:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10353:58:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "EmitStatement", + "src": "10348:63:1" + } + ] + }, + "documentation": "@notice Setter for the data encryption key and version.\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.", + "id": 636, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAccountDataEncryptionKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10119:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 604, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10119:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10118:32:1" + }, + "returnParameters": { + "id": 607, + "nodeType": "ParameterList", + "parameters": [], + "src": "10158:0:1" + }, + "scope": 2783, + "src": "10082:334:1", + "stateMutability": "nonpayable", + "superFunction": 9180, + "visibility": "public" + }, + { + "body": { + "id": 668, + "nodeType": "Block", + "src": "10602:208:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10626:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10626:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 642, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "10616:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10616:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10639:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 641, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10608:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 648, + "nodeType": "ExpressionStatement", + "src": "10608:49:1" + }, + { + "assignments": [ + 650 + ], + "declarations": [ + { + "constant": false, + "id": 650, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "10663:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 649, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "10663:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 655, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 651, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "10689:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 654, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 652, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10698:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10698:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10689:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10663:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "10715:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "10715:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 659, + "name": "metadataURL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "10737:11:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "10715:33:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "10715:33:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 663, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10781:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10781:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 665, + "name": "metadataURL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "10793:11:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 662, + "name": "AccountMetadataURLSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "10759:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory)" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10759:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 667, + "nodeType": "EmitStatement", + "src": "10754:51:1" + } + ] + }, + "documentation": "@notice Setter for the metadata of an account.\n@param metadataURL The URL to access the metadata.", + "id": 669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 638, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "10564:27:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 637, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10564:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10563:29:1" + }, + "returnParameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [], + "src": "10602:0:1" + }, + "scope": 2783, + "src": "10540:270:1", + "stateMutability": "nonpayable", + "superFunction": 9185, + "visibility": "external" + }, + { + "body": { + "id": 696, + "nodeType": "Block", + "src": "10985:160:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 676, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 675, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "10999:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10999:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11022:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 674, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10991:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10991:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "10991:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 687, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 671, + "src": "11084:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 682, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11046:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 685, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 683, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11067:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11067:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11046:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11046:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes_storage_$returns$_t_uint256_$", + "typeString": "function (bytes storage ref) returns (uint256)" + } + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11046:42:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "11046:42:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11124:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11124:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 671, + "src": "11136:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 690, + "name": "OffchainStorageRootAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "11099:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11099:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 695, + "nodeType": "EmitStatement", + "src": "11094:46:1" + } + ] + }, + "documentation": "@notice Adds a new CIP8 storage root.\n@param url The URL pointing to the offchain storage root.", + "id": 697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addStorageRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 671, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 697, + "src": "10956:18:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 670, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10956:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10955:20:1" + }, + "returnParameters": { + "id": 673, + "nodeType": "ParameterList", + "parameters": [], + "src": "10985:0:1" + }, + "scope": 2783, + "src": "10932:213:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 768, + "nodeType": "Block", + "src": "11553:484:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 704, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11577:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11577:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 703, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "11567:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11590:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 702, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "11559:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11559:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 709, + "nodeType": "ExpressionStatement", + "src": "11559:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 711, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11622:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11630:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 715, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 713, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11651:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11651:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11630:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11630:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11622:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c69642073746f7261676520726f6f7420696e646578", + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11671:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c", + "typeString": "literal_string \"Invalid storage root index\"" + }, + "value": "Invalid storage root index" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c", + "typeString": "literal_string \"Invalid storage root index\"" + } + ], + "id": 710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "11614:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11614:86:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 720, + "nodeType": "ExpressionStatement", + "src": "11614:86:1" + }, + { + "assignments": [ + 722 + ], + "declarations": [ + { + "constant": false, + "id": 722, + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "11706:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 730, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 723, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11726:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 726, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 724, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11747:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11747:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11726:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11726:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11768:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11726:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11706:63:1" + }, + { + "assignments": [ + 732 + ], + "declarations": [ + { + "constant": false, + "id": 732, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "11775:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 731, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11775:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 739, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 733, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 736, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 734, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11815:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11815:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11794:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 738, + "indexExpression": { + "argumentTypes": null, + "id": 737, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11827:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11794:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11775:58:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 740, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11839:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 744, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 741, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11860:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11839:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 745, + "indexExpression": { + "argumentTypes": null, + "id": 743, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11872:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11839:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 746, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11881:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 749, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 747, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11902:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11902:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11881:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 751, + "indexExpression": { + "argumentTypes": null, + "id": 750, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "11914:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11881:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "src": "11839:85:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 753, + "nodeType": "ExpressionStatement", + "src": "11839:85:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "11930:41:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 754, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11930:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 757, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 755, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11951:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11951:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11930:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 758, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11930:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "11930:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "12009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 764, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "12021:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 765, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "12026:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 761, + "name": "OffchainStorageRootRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "11982:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes memory,uint256)" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11982:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 767, + "nodeType": "EmitStatement", + "src": "11977:55:1" + } + ] + }, + "documentation": "@notice Removes a CIP8 storage root.\n@param index The index of the storage root to be removed in the account's\nlist of storage roots.\n@dev The order of storage roots may change after this operation (the last\nstorage root will be moved to `index`), be aware of this if removing\nmultiple storage roots at a time.", + "id": 769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeStorageRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 699, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 769, + "src": "11529:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11528:15:1" + }, + "returnParameters": { + "id": 701, + "nodeType": "ParameterList", + "parameters": [], + "src": "11553:0:1" + }, + "scope": 2783, + "src": "11502:535:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 898, + "nodeType": "Block", + "src": "12352:730:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 781, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12376:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 780, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "12366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12366:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12386:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 779, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "12358:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12358:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "12358:46:1" + }, + { + "assignments": [ + 787 + ], + "declarations": [ + { + "constant": false, + "id": 787, + "name": "numberRoots", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12410:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 792, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 788, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12432:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 790, + "indexExpression": { + "argumentTypes": null, + "id": 789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12453:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12432:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 791, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12432:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12410:58:1" + }, + { + "assignments": [ + 794 + ], + "declarations": [ + { + "constant": false, + "id": 794, + "name": "totalLength", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12474:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 796, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12474:23:1" + }, + { + "body": { + "id": 819, + "nodeType": "Block", + "src": "12545:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 807, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12553:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 810, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12583:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 812, + "indexExpression": { + "argumentTypes": null, + "id": 811, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12583:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 814, + "indexExpression": { + "argumentTypes": null, + "id": 813, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12613:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12583:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12583:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 808, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12567:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "12567:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12567:56:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12553:70:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 818, + "nodeType": "ExpressionStatement", + "src": "12553:70:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 801, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12523:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 802, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12527:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12523:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 820, + "initializationExpression": { + "assignments": [ + 798 + ], + "declarations": [ + { + "constant": false, + "id": 798, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 820, + "src": "12508:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12508:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 800, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12520:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12508:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12540:3:1", + "subExpression": { + "argumentTypes": null, + "id": 804, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12540:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 806, + "nodeType": "ExpressionStatement", + "src": "12540:3:1" + }, + "nodeType": "ForStatement", + "src": "12503:127:1" + }, + { + "assignments": [ + 822 + ], + "declarations": [ + { + "constant": false, + "id": 822, + "name": "concatenated", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12636:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 821, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 827, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 825, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12674:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12664:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 823, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12668:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12664:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12636:50:1" + }, + { + "assignments": [ + 829 + ], + "declarations": [ + { + "constant": false, + "id": 829, + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12692:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12692:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 831, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12712:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12692:21:1" + }, + { + "assignments": [ + 835 + ], + "declarations": [ + { + "constant": false, + "id": 835, + "name": "lengths", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12719:24:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 834, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12719:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 841, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 839, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12760:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12746:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12750:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 837, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12750:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12746:26:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12719:53:1" + }, + { + "body": { + "id": 892, + "nodeType": "Block", + "src": "12820:221:1", + "statements": [ + { + "assignments": [ + 853 + ], + "declarations": [ + { + "constant": false, + "id": 853, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "12828:18:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 852, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12828:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 859, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 854, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12849:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 856, + "indexExpression": { + "argumentTypes": null, + "id": 855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12849:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 858, + "indexExpression": { + "argumentTypes": null, + "id": 857, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12879:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12849:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12828:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 860, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "12889:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 862, + "indexExpression": { + "argumentTypes": null, + "id": 861, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12897:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12889:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 863, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "12902:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12902:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12889:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 866, + "nodeType": "ExpressionStatement", + "src": "12889:24:1" + }, + { + "body": { + "id": 890, + "nodeType": "Block", + "src": "12962:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "concatenated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "12972:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "12985:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12972:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 882, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "12998:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 884, + "indexExpression": { + "argumentTypes": null, + "id": 883, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "13003:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12998:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "12972:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 886, + "nodeType": "ExpressionStatement", + "src": "12972:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "13015:11:1", + "subExpression": { + "argumentTypes": null, + "id": 887, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "13015:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 889, + "nodeType": "ExpressionStatement", + "src": "13015:11:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 871, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "12941:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 872, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "12945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 874, + "indexExpression": { + "argumentTypes": null, + "id": 873, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12953:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12945:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12941:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 891, + "initializationExpression": { + "assignments": [ + 868 + ], + "declarations": [ + { + "constant": false, + "id": 868, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 891, + "src": "12926:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 870, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12938:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12926:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12957:3:1", + "subExpression": { + "argumentTypes": null, + "id": 876, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "12957:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 878, + "nodeType": "ExpressionStatement", + "src": "12957:3:1" + }, + "nodeType": "ForStatement", + "src": "12921:114:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 846, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12798:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 847, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12802:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12798:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 893, + "initializationExpression": { + "assignments": [ + 843 + ], + "declarations": [ + { + "constant": false, + "id": 843, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 893, + "src": "12783:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12783:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 845, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12795:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12783:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12815:3:1", + "subExpression": { + "argumentTypes": null, + "id": 849, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12815:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 851, + "nodeType": "ExpressionStatement", + "src": "12815:3:1" + }, + "nodeType": "ForStatement", + "src": "12778:263:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 894, + "name": "concatenated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "13055:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 895, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "13069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 896, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13054:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(bytes memory,uint256[] memory)" + } + }, + "functionReturnParameters": 778, + "id": 897, + "nodeType": "Return", + "src": "13047:30:1" + } + ] + }, + "documentation": "@notice Returns the full list of offchain storage roots for an account.\n@param account The account whose storage roots to return.\n@return List of storage root URLs.", + "id": 899, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOffchainStorageRoots", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12266:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12265:17:1" + }, + "returnParameters": { + "id": 778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 774, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12318:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 773, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12318:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 777, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12332:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 776, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12332:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12317:32:1" + }, + "scope": 2783, + "src": "12233:849:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 957, + "nodeType": "Block", + "src": "13579:407:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 908, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "13603:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13603:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 907, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "13593:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13593:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13616:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13585:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13585:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 913, + "nodeType": "ExpressionStatement", + "src": "13585:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 915, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13647:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13670:1:1", + "subdenomination": null, + "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": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13662:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13662:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13647:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42656e65666963696172792063616e6e6f74206265206164647265737320307830", + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13674:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0", + "typeString": "literal_string \"Beneficiary cannot be address 0x0\"" + }, + "value": "Beneficiary cannot be address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0", + "typeString": "literal_string \"Beneficiary cannot be address 0x0\"" + } + ], + "id": 914, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13639:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13639:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 922, + "nodeType": "ExpressionStatement", + "src": "13639:71:1" + }, + { + "assignments": [ + 926 + ], + "declarations": [ + { + "constant": false, + "id": 926, + "name": "f", + "nodeType": "VariableDeclaration", + "scope": 957, + "src": "13716:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 925, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "13716:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 929, + "name": "fraction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "13765:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 927, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "13748:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "13748:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13748:26:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13716:58:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 935, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "13794:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "13794:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 933, + "name": "f", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "13788:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lte", + "nodeType": "MemberAccess", + "referencedDeclaration": 3579, + "src": "13788:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (bool)" + } + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13788:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4672616374696f6e206d757374206e6f742062652067726561746572207468616e2031", + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13817:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe", + "typeString": "literal_string \"Fraction must not be greater than 1\"" + }, + "value": "Fraction must not be greater than 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe", + "typeString": "literal_string \"Fraction must not be greater than 1\"" + } + ], + "id": 932, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13780:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13780:75:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 941, + "nodeType": "ExpressionStatement", + "src": "13780:75:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "13861:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 943, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "13880:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13880:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13861:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 947, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13912:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 948, + "name": "f", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "13925:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "id": 946, + "name": "PaymentDelegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "13894:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$", + "typeString": "type(struct Accounts.PaymentDelegation storage pointer)" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13894:33:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory", + "typeString": "struct Accounts.PaymentDelegation memory" + } + }, + "src": "13861:66:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "id": 951, + "nodeType": "ExpressionStatement", + "src": "13861:66:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 953, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13959:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 954, + "name": "fraction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "13972:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 952, + "name": "PaymentDelegationSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "13938:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13938:43:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 956, + "nodeType": "EmitStatement", + "src": "13933:48:1" + } + ] + }, + "documentation": "@notice Sets validator payment delegation settings.\n@param beneficiary The address that should receive a portion of validator\npayments.\n@param fraction The fraction of the validator's payment that should be\ndiverted to `beneficiary` every epoch, given as FixidityLib value. Must not\nbe greater than 1.\n@dev Use `deletePaymentDelegation` to unset the payment delegation.", + "id": 958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setPaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 901, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "13533:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 903, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "13554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13532:39:1" + }, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [], + "src": "13579:0:1" + }, + "scope": 2783, + "src": "13503:483:1", + "stateMutability": "nonpayable", + "superFunction": 9330, + "visibility": "public" + }, + { + "body": { + "id": 991, + "nodeType": "Block", + "src": "14144:198:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 963, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "14168:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14168:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 962, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "14158:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14158:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14181:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 961, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "14150:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14150:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 968, + "nodeType": "ExpressionStatement", + "src": "14150:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 969, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "14204:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 972, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 970, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "14223:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14223:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14204:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14263:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14255:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14286:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 977, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "14269:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "14269:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14269:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "id": 973, + "name": "PaymentDelegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "14237:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$", + "typeString": "type(struct Accounts.PaymentDelegation storage pointer)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14237:52:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory", + "typeString": "struct Accounts.PaymentDelegation memory" + } + }, + "src": "14204:85:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "14204:85:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14329:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14321:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14335:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 984, + "name": "PaymentDelegationSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "14300:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14300:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "EmitStatement", + "src": "14295:42:1" + } + ] + }, + "documentation": "@notice Removes a validator's payment delegation by setting benficiary and\nfraction to 0.", + "id": 992, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deletePaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [], + "src": "14134:2:1" + }, + "returnParameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [], + "src": "14144:0:1" + }, + "scope": 2783, + "src": "14102:240:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1015, + "nodeType": "Block", + "src": "14617:144:1", + "statements": [ + { + "assignments": [ + 1002 + ], + "declarations": [ + { + "constant": false, + "id": 1002, + "name": "delegation", + "nodeType": "VariableDeclaration", + "scope": 1015, + "src": "14623:36:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + }, + "typeName": { + "contractScope": null, + "id": 1001, + "name": "PaymentDelegation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 115, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1006, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1003, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "14662:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 1005, + "indexExpression": { + "argumentTypes": null, + "id": 1004, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "14681:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14662:27:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14623:66:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1007, + "name": "delegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "14703:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation storage pointer" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "beneficiary", + "nodeType": "MemberAccess", + "referencedDeclaration": 112, + "src": "14703:22:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1009, + "name": "delegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "14727:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation storage pointer" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fraction", + "nodeType": "MemberAccess", + "referencedDeclaration": 114, + "src": "14727:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "14727:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14727:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1013, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14702:54:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 1000, + "id": 1014, + "nodeType": "Return", + "src": "14695:61:1" + } + ] + }, + "documentation": "@notice Gets validator payment delegation settings.\n@param account Account of the validator.\n@return Beneficiary address and fraction of payment delegated.", + "id": 1016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 994, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14559:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14559:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14558:17:1" + }, + "returnParameters": { + "id": 1000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 997, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14599:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14599:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14608:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14598:18:1" + }, + "scope": 2783, + "src": "14529:232:1", + "stateMutability": "view", + "superFunction": 9339, + "visibility": "external" + }, + { + "body": { + "id": 1139, + "nodeType": "Block", + "src": "15004:929:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1025, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15028:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15028:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1024, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "15018:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15018:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15041:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 1023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15010:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1030, + "nodeType": "ExpressionStatement", + "src": "15010:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1033, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15085:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1032, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "15072:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15072:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f7420617574686f72697a65206163636f756e74206173207369676e6572", + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15094:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b", + "typeString": "literal_string \"Cannot authorize account as signer\"" + }, + "value": "Cannot authorize account as signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b", + "typeString": "literal_string \"Cannot authorize account as signer\"" + } + ], + "id": 1031, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15064:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15064:67:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1037, + "nodeType": "ExpressionStatement", + "src": "15064:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1040, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15191:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15191:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1042, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15203:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1039, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "15152:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15152:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f742061207369676e657220666f722074686973206163636f756e74", + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15218:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4", + "typeString": "literal_string \"Not a signer for this account\"" + }, + "value": "Not a signer for this account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4", + "typeString": "literal_string \"Not a signer for this account\"" + } + ], + "id": 1038, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15137:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15137:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1046, + "nodeType": "ExpressionStatement", + "src": "15137:118:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15278:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15278:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1051, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15290:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1052, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15298:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1048, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "15269:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15269:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c74", + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15305:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff", + "typeString": "literal_string \"Must authorize signer before setting as default\"" + }, + "value": "Must authorize signer before setting as default" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff", + "typeString": "literal_string \"Must authorize signer before setting as default\"" + } + ], + "id": 1047, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15261:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15261:94:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1056, + "nodeType": "ExpressionStatement", + "src": "15261:94:1" + }, + { + "assignments": [ + 1058 + ], + "declarations": [ + { + "constant": false, + "id": 1058, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "15362:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1057, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "15362:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1063, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1059, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "15388:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1062, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1060, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15397:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15397:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15388:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15362:46:1" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15431:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1064, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "15418:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15418:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1130, + "nodeType": "Block", + "src": "15764:111:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1114, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "15772:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1118, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15787:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15787:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15772:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1119, + "indexExpression": { + "argumentTypes": null, + "id": 1117, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15799:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15772:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1120, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15807:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15772:41:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1122, + "nodeType": "ExpressionStatement", + "src": "15772:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1124, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15843:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15843:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1126, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15855:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1127, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15863:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1123, + "name": "DefaultSignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "15826:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15826:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1129, + "nodeType": "EmitStatement", + "src": "15821:47:1" + } + ] + }, + "id": 1131, + "nodeType": "IfStatement", + "src": "15414:461:1", + "trueBody": { + "id": 1113, + "nodeType": "Block", + "src": "15438:320:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1067, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1068, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "15458:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15450:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1079, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15528:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1080, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "15536:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15528:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15620:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1092, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "15628:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15620:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1103, + "nodeType": "IfStatement", + "src": "15616:82:1", + "trueBody": { + "id": 1102, + "nodeType": "Block", + "src": "15645:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1094, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15655:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "15655:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1099, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15683:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15655:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1101, + "nodeType": "ExpressionStatement", + "src": "15655:34:1" + } + ] + } + }, + "id": 1104, + "nodeType": "IfStatement", + "src": "15524:174:1", + "trueBody": { + "id": 1090, + "nodeType": "Block", + "src": "15555:55:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1082, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15565:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "15565:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1087, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15595:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15565:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1089, + "nodeType": "ExpressionStatement", + "src": "15565:36:1" + } + ] + } + }, + "id": 1105, + "nodeType": "IfStatement", + "src": "15446:252:1", + "trueBody": { + "id": 1078, + "nodeType": "Block", + "src": "15470:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1070, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1073, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15480:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "15480:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1075, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15503:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15480:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "15480:29:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1107, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15726:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1109, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15738:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1110, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15746:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1106, + "name": "LegacySignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 277, + "src": "15710:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15710:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1112, + "nodeType": "EmitStatement", + "src": "15705:46:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1133, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15903:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15903:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1135, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15915:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1136, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15923:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1132, + "name": "IndexedSignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "15886:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15886:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1138, + "nodeType": "EmitStatement", + "src": "15881:47:1" + } + ] + }, + "documentation": "@notice Set the indexed signer for a specific role\n@param signer the address to set as default\n@param role the role to register a default signer for", + "id": 1140, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1018, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "14967:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14967:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1020, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "14983:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14983:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14966:30:1" + }, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [], + "src": "15004:0:1" + }, + "scope": 2783, + "src": "14941:992:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1182, + "nodeType": "Block", + "src": "16548:238:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1154, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16579:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1155, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16587:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1156, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "16593:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1157, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1148, + "src": "16596:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1158, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "16599:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1153, + "name": "authorizeAddressWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2748, + "src": "16554:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16554:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1160, + "nodeType": "ExpressionStatement", + "src": "16554:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1161, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "16607:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1166, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1162, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16628:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16628:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16607:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1164, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16640:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16607:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1168, + "indexExpression": { + "argumentTypes": null, + "id": 1165, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16646:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16607:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16693:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16716:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1169, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "16656:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "16656:71:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "16607:120:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1174, + "nodeType": "ExpressionStatement", + "src": "16607:120:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1176, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16756:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16756:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1178, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16768:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1179, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16776:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1175, + "name": "SignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "16739:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16739:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1181, + "nodeType": "EmitStatement", + "src": "16734:47:1" + } + ] + }, + "documentation": "@notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n and `signer`.", + "id": 1183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeSignerWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1142, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16474:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16474:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1144, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16490:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1143, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1146, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1145, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16504:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1148, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16513:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1147, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1150, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16524:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1149, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16524:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16473:61:1" + }, + "returnParameters": { + "id": 1152, + "nodeType": "ParameterList", + "parameters": [], + "src": "16548:0:1" + }, + "scope": 2783, + "src": "16436:350:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1224, + "nodeType": "Block", + "src": "16927:224:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1197, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "16950:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1198, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "16958:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1199, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "16961:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1200, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "16964:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1196, + "name": "authorizeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "16933:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,uint8,bytes32,bytes32)" + } + }, + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16933:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1202, + "nodeType": "ExpressionStatement", + "src": "16933:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1203, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "16972:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1208, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16993:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16993:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16972:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1209, + "indexExpression": { + "argumentTypes": null, + "id": 1206, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "17005:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16972:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1210, + "indexExpression": { + "argumentTypes": null, + "id": 1207, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "17011:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16972:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17058:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17081:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1211, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "17021:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "17021:71:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "16972:120:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1216, + "nodeType": "ExpressionStatement", + "src": "16972:120:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1218, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "17121:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17121:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "17133:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "17141:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1217, + "name": "SignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "17104:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17104:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1223, + "nodeType": "EmitStatement", + "src": "17099:47:1" + } + ] + }, + "documentation": null, + "id": 1225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1185, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16839:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16839:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1187, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16859:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1186, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1189, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16877:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1188, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16877:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1191, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16890:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1190, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16890:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1193, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16905:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16833:85:1" + }, + "returnParameters": { + "id": 1195, + "nodeType": "ParameterList", + "parameters": [], + "src": "16927:0:1" + }, + "scope": 2783, + "src": "16790:361:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1257, + "nodeType": "Block", + "src": "17650:168:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1239, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17691:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1240, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "17699:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1241, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1229, + "src": "17711:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1242, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1231, + "src": "17714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1243, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "17717:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1238, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "17656:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17656:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1245, + "nodeType": "ExpressionStatement", + "src": "17656:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1247, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17742:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1248, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "17750:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1246, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "17725:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17725:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1250, + "nodeType": "ExpressionStatement", + "src": "17725:36:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1252, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "17794:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17794:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1254, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17806:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1251, + "name": "VoteSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "17773:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17773:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1256, + "nodeType": "EmitStatement", + "src": "17768:45:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign votes on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1258, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1236, + "modifierName": { + "argumentTypes": null, + "id": 1235, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "17635:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "17635:12:1" + } + ], + "name": "authorizeVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1227, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17571:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17571:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1229, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17587:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1228, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "17587:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1231, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17596:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17596:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1233, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17607:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1232, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17607:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17570:47:1" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [], + "src": "17650:0:1" + }, + "scope": 2783, + "src": "17542:276:1", + "stateMutability": "nonpayable", + "superFunction": 9266, + "visibility": "external" + }, + { + "body": { + "id": 1301, + "nodeType": "Block", + "src": "18335:275:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1272, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18376:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1273, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "18384:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1274, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "18401:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1275, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "18404:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1276, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1266, + "src": "18407:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1271, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "18341:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18341:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1278, + "nodeType": "ExpressionStatement", + "src": "18341:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1280, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18432:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1281, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "18440:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1279, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "18415:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18415:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1283, + "nodeType": "ExpressionStatement", + "src": "18415:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18471:40:1", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1288, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "18500:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18500:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1285, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "18472:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18472:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isValidator", + "nodeType": "MemberAccess", + "referencedDeclaration": 31013, + "src": "18472:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18472:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572", + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18513:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2", + "typeString": "literal_string \"Cannot authorize validator signer\"" + }, + "value": "Cannot authorize validator signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2", + "typeString": "literal_string \"Cannot authorize validator signer\"" + } + ], + "id": 1284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "18463:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18463:86:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "18463:86:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1296, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "18586:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18586:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1298, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18598:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1295, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "18560:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18560:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1300, + "nodeType": "EmitStatement", + "src": "18555:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1302, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1269, + "modifierName": { + "argumentTypes": null, + "id": 1268, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "18320:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18320:12:1" + } + ], + "name": "authorizeValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1260, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18256:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18256:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1262, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18272:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1261, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "18272:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1264, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18281:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1263, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18281:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1266, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18292:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1265, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18292:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18255:47:1" + }, + "returnParameters": { + "id": 1270, + "nodeType": "ParameterList", + "parameters": [], + "src": "18335:0:1" + }, + "scope": 2783, + "src": "18222:388:1", + "stateMutability": "nonpayable", + "superFunction": 9277, + "visibility": "external" + }, + { + "body": { + "id": 1348, + "nodeType": "Block", + "src": "19260:325:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1318, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19301:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1319, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "19309:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1320, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "19326:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1321, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1308, + "src": "19329:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1322, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "19332:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1317, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "19266:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19266:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1324, + "nodeType": "ExpressionStatement", + "src": "19266:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1326, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19357:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1327, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "19365:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1325, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "19340:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19340:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "19340:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "19440:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19440:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1336, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19452:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1337, + "name": "ecdsaPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1312, + "src": "19460:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1331, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "19403:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19403:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateEcdsaPublicKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 30952, + "src": "19403:36:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,bytes memory) external returns (bool)" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19403:72:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c656420746f20757064617465204543445341207075626c6963206b6579", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19483:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98", + "typeString": "literal_string \"Failed to update ECDSA public key\"" + }, + "value": "Failed to update ECDSA public key" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98", + "typeString": "literal_string \"Failed to update ECDSA public key\"" + } + ], + "id": 1330, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "19388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19388:136:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "19388:136:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1343, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "19561:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19561:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1345, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19573:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1342, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "19535:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19535:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1347, + "nodeType": "EmitStatement", + "src": "19530:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1349, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1315, + "modifierName": { + "argumentTypes": null, + "id": 1314, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "19247:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19247:12:1" + } + ], + "name": "authorizeValidatorSignerWithPublicKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19141:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19141:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1306, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19161:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1305, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "19161:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1308, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19174:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19174:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1310, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19189:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1309, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19189:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1312, + "name": "ecdsaPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19204:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1311, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19204:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19135:102:1" + }, + "returnParameters": { + "id": 1316, + "nodeType": "ParameterList", + "parameters": [], + "src": "19260:0:1" + }, + "scope": 2783, + "src": "19089:496:1", + "stateMutability": "nonpayable", + "superFunction": 9290, + "visibility": "external" + }, + { + "body": { + "id": 1401, + "nodeType": "Block", + "src": "20557:341:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1369, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20598:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1370, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "20606:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1371, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1353, + "src": "20623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1372, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "20626:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1373, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "20629:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1368, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "20563:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20563:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1375, + "nodeType": "ExpressionStatement", + "src": "20563:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1377, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20654:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1378, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "20662:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1376, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "20637:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20637:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1380, + "nodeType": "ExpressionStatement", + "src": "20637:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1385, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "20733:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20733:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1387, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20745:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1388, + "name": "ecdsaPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "20753:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 1389, + "name": "blsPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "20769:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 1390, + "name": "blsPop", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "20783:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1382, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "20700:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20700:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePublicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 30967, + "src": "20700:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,bytes memory,bytes memory,bytes memory) external returns (bool)" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20700:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c656420746f207570646174652076616c696461746f72206b657973", + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20798:33:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb", + "typeString": "literal_string \"Failed to update validator keys\"" + }, + "value": "Failed to update validator keys" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb", + "typeString": "literal_string \"Failed to update validator keys\"" + } + ], + "id": 1381, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "20685:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20685:152:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1394, + "nodeType": "ExpressionStatement", + "src": "20685:152:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1396, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "20874:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1398, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1395, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "20848:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20848:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1400, + "nodeType": "EmitStatement", + "src": "20843:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n proof of possession. 96 bytes.\n@param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n account address. 48 bytes.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1402, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1366, + "modifierName": { + "argumentTypes": null, + "id": 1365, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "20544:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20544:12:1" + } + ], + "name": "authorizeValidatorSignerWithKeys", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1351, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20378:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20378:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1353, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20398:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1352, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "20398:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1355, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20411:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1354, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20411:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1357, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20426:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1356, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20426:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1359, + "name": "ecdsaPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20441:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1358, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20441:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1361, + "name": "blsPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20476:27:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1360, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20476:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1363, + "name": "blsPop", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20509:21:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1362, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20509:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20372:162:1" + }, + "returnParameters": { + "id": 1367, + "nodeType": "ParameterList", + "parameters": [], + "src": "20557:0:1" + }, + "scope": 2783, + "src": "20331:567:1", + "stateMutability": "nonpayable", + "superFunction": 9307, + "visibility": "external" + }, + { + "body": { + "id": 1432, + "nodeType": "Block", + "src": "21386:189:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1414, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21427:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1415, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "21435:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1416, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "21454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1417, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "21457:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1418, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "21460:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1413, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "21392:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21392:70:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1420, + "nodeType": "ExpressionStatement", + "src": "21392:70:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1422, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21485:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1423, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "21493:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1421, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "21468:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21468:43:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1425, + "nodeType": "ExpressionStatement", + "src": "21468:43:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1427, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21551:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21551:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1429, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21563:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1426, + "name": "AttestationSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "21523:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21523:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1431, + "nodeType": "EmitStatement", + "src": "21518:52:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign attestations on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1404, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21332:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21332:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1406, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21348:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1405, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "21348:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1408, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21357:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21357:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1410, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21368:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1409, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21368:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21331:47:1" + }, + "returnParameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [], + "src": "21386:0:1" + }, + "scope": 2783, + "src": "21296:279:1", + "stateMutability": "nonpayable", + "superFunction": 9318, + "visibility": "public" + }, + { + "body": { + "id": 1482, + "nodeType": "Block", + "src": "21859:404:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1442, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21883:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21883:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1441, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "21873:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21873:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21896:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 1440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "21865:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21865:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "21865:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1450, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "21948:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1449, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "21935:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21935:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1453, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21998:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1455, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22010:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1452, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "21959:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21959:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21935:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572", + "id": 1458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22025:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + }, + "value": "Cannot re-authorize address signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "21920:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21920:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1460, + "nodeType": "ExpressionStatement", + "src": "21920:147:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1461, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22074:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1466, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1462, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22095:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22095:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22074:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1464, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "22107:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22074:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1468, + "indexExpression": { + "argumentTypes": null, + "id": 1465, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22113:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22074:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22160:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22183:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1469, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "22123:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "22123:72:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "22074:121:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1474, + "nodeType": "ExpressionStatement", + "src": "22074:121:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1476, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22233:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22233:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1478, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1479, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "22253:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1475, + "name": "SignerAuthorizationStarted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "22206:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22206:52:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1481, + "nodeType": "EmitStatement", + "src": "22201:57:1" + } + ] + }, + "documentation": "@notice Begin the process of authorizing an address to sign on behalf of the account\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.", + "id": 1483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1435, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "21822:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21822:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1437, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "21838:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1436, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21838:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21821:30:1" + }, + "returnParameters": { + "id": 1439, + "nodeType": "ParameterList", + "parameters": [], + "src": "21859:0:1" + }, + "scope": 2783, + "src": "21797:466:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1552, + "nodeType": "Block", + "src": "22568:524:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1492, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22592:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1491, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "22582:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22582:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 1494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22602:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 1490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22574:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22574:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1496, + "nodeType": "ExpressionStatement", + "src": "22574:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22654:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22654:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1498, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "22641:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22641:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1503, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1504, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22717:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22717:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1502, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "22669:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22669:59:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22641:87:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572", + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22736:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + }, + "value": "Cannot re-authorize address signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + } + ], + "id": 1497, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22626:152:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1510, + "nodeType": "ExpressionStatement", + "src": "22626:152:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1512, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22799:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1514, + "indexExpression": { + "argumentTypes": null, + "id": 1513, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22820:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "22829:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1519, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1517, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22835:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:47:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1520, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "started", + "nodeType": "MemberAccess", + "referencedDeclaration": 94, + "src": "22799:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22858:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "22799:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e657220617574686f72697a6174696f6e206e6f742073746172746564", + "id": 1523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22870:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7", + "typeString": "literal_string \"Signer authorization not started\"" + }, + "value": "Signer authorization not started" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7", + "typeString": "literal_string \"Signer authorization not started\"" + } + ], + "id": 1511, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22784:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22784:126:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1525, + "nodeType": "ExpressionStatement", + "src": "22784:126:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1526, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "22917:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1529, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1527, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22930:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22930:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22917:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1530, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22917:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1532, + "nodeType": "ExpressionStatement", + "src": "22917:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1533, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22957:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1538, + "indexExpression": { + "argumentTypes": null, + "id": 1534, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22978:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1539, + "indexExpression": { + "argumentTypes": null, + "id": 1535, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "22987:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1540, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22993:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22993:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:47:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "completed", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "22957:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23017:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "22957:64:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1544, + "nodeType": "ExpressionStatement", + "src": "22957:64:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1546, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "23061:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1547, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "23070:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23070:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1549, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "23082:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1545, + "name": "SignerAuthorizationCompleted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "23032:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23032:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1551, + "nodeType": "EmitStatement", + "src": "23027:60:1" + } + ] + }, + "documentation": "@notice Finish the process of authorizing an address to sign on behalf of the account. \n@param account The address of account that authorized signing.\n@param role The role to finish authorizing for.", + "id": 1553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "completeSignerAuthorization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1485, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "22530:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22530:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1487, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "22547:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22547:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "22529:31:1" + }, + "returnParameters": { + "id": 1489, + "nodeType": "ParameterList", + "parameters": [], + "src": "22568:0:1" + }, + "scope": 2783, + "src": "22493:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1612, + "nodeType": "Block", + "src": "23477:381:1", + "statements": [ + { + "assignments": [ + 1565 + ], + "declarations": [ + { + "constant": false, + "id": 1565, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1612, + "src": "23483:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1564, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "23483:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1569, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1566, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "23509:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1568, + "indexExpression": { + "argumentTypes": null, + "id": 1567, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "23518:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23509:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23483:44:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1570, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23537:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1571, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "23545:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23537:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1573, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23564:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23564:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1575, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "23564:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1576, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23593:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23564:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23537:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1582, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23637:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1583, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "23645:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1585, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23666:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23666:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1587, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "23666:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1588, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23697:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23666:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23637:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1594, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23741:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1595, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "23749:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23741:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1597, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23763:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23763:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "23763:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1600, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23787:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23763:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23741:52:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1608, + "nodeType": "Block", + "src": "23827:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23842:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1563, + "id": 1607, + "nodeType": "Return", + "src": "23835:12:1" + } + ] + }, + "id": 1609, + "nodeType": "IfStatement", + "src": "23737:117:1", + "trueBody": { + "id": 1605, + "nodeType": "Block", + "src": "23795:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23810:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1604, + "nodeType": "Return", + "src": "23803:11:1" + } + ] + } + }, + "id": 1610, + "nodeType": "IfStatement", + "src": "23633:221:1", + "trueBody": { + "id": 1593, + "nodeType": "Block", + "src": "23705:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23720:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1592, + "nodeType": "Return", + "src": "23713:11:1" + } + ] + } + }, + "id": 1611, + "nodeType": "IfStatement", + "src": "23533:321:1", + "trueBody": { + "id": 1581, + "nodeType": "Block", + "src": "23601:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23616:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1580, + "nodeType": "Return", + "src": "23609:11:1" + } + ] + } + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as the legacy signer for role\n@param _account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1555, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23388:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23388:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1557, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23406:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23406:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1559, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23422:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1558, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23422:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "23387:48:1" + }, + "returnParameters": { + "id": 1563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23469:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23469:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "23468:6:1" + }, + "scope": 2783, + "src": "23364:494:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1632, + "nodeType": "Block", + "src": "24243:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1624, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "24256:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1626, + "indexExpression": { + "argumentTypes": null, + "id": 1625, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "24271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24256:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1628, + "indexExpression": { + "argumentTypes": null, + "id": 1627, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1619, + "src": "24280:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24256:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1629, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "24289:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24256:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1623, + "id": 1631, + "nodeType": "Return", + "src": "24249:46:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as the default signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1615, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24155:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24155:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1617, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24172:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24172:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1619, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24188:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1618, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24188:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24154:47:1" + }, + "returnParameters": { + "id": 1623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1622, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24235:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1621, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24235:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24234:6:1" + }, + "scope": 2783, + "src": "24130:170:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1659, + "nodeType": "Block", + "src": "24684:139:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1645, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24716:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1644, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "24703:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24703:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1653, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "24796:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1654, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1637, + "src": "24805:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1655, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24813:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1652, + "name": "isDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "24780:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24780:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "24703:115:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1648, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "24747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1649, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1637, + "src": "24756:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1650, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24764:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1647, + "name": "isLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1613, + "src": "24732:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24732:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1643, + "id": 1658, + "nodeType": "Return", + "src": "24690:128:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as an indexed signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1660, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24596:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24596:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1637, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24613:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24613:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1639, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24629:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1638, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24595:47:1" + }, + "returnParameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1642, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24676:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1641, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24675:6:1" + }, + "scope": 2783, + "src": "24571:252:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1693, + "nodeType": "Block", + "src": "25177:161:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1672, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1673, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25220:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1674, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1666, + "src": "25228:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1671, + "name": "isLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1613, + "src": "25196:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25196:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1676, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "25244:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1678, + "indexExpression": { + "argumentTypes": null, + "id": 1677, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25265:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1680, + "indexExpression": { + "argumentTypes": null, + "id": 1679, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1666, + "src": "25274:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1682, + "indexExpression": { + "argumentTypes": null, + "id": 1681, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25280:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:43:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "completed", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "25244:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1684, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "25301:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1686, + "indexExpression": { + "argumentTypes": null, + "id": 1685, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25301:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1687, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25325:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25301:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "25244:88:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1690, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "25243:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "25196:137:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1670, + "id": 1692, + "nodeType": "Return", + "src": "25183:150:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as a signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1662, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25103:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25103:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1664, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25120:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25120:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1666, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25136:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25136:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25102:47:1" + }, + "returnParameters": { + "id": 1670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25171:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1668, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25170:6:1" + }, + "scope": 2783, + "src": "25085:253:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1726, + "nodeType": "Block", + "src": "25508:168:1", + "statements": [ + { + "assignments": [ + 1700 + ], + "declarations": [ + { + "constant": false, + "id": 1700, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1726, + "src": "25514:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25514:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1707, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1701, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "25531:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1704, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1702, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25546:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25546:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25531:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1706, + "indexExpression": { + "argumentTypes": null, + "id": 1705, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25558:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25531:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25514:49:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1708, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "25569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1712, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1709, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25584:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25584:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25569:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1713, + "indexExpression": { + "argumentTypes": null, + "id": 1711, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25596:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "25569:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25612:1:1", + "subdenomination": null, + "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": 1714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25604:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "25569:45:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1718, + "nodeType": "ExpressionStatement", + "src": "25569:45:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25646:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25646:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1722, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1700, + "src": "25658:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1723, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25666:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1719, + "name": "DefaultSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "25625:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25625:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1725, + "nodeType": "EmitStatement", + "src": "25620:51:1" + } + ] + }, + "documentation": "@notice Removes the signer for a default role.\n@param role The role that has been authorized.", + "id": 1727, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1696, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1727, + "src": "25487:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1695, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25487:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25486:14:1" + }, + "returnParameters": { + "id": 1698, + "nodeType": "ParameterList", + "parameters": [], + "src": "25508:0:1" + }, + "scope": 2783, + "src": "25458:218:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1812, + "nodeType": "Block", + "src": "25967:514:1", + "statements": [ + { + "assignments": [ + 1733 + ], + "declarations": [ + { + "constant": false, + "id": 1733, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1812, + "src": "25973:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1732, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "25973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1738, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1734, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "25999:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1737, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1735, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26008:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26008:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25999:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25973:46:1" + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1812, + "src": "26026:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26026:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1741, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "26026:14:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1742, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26050:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1743, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "26058:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26050:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1762, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26180:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1763, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "26188:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26180:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1782, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26316:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1783, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "26324:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26316:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1802, + "nodeType": "IfStatement", + "src": "26312:109:1", + "trueBody": { + "id": 1801, + "nodeType": "Block", + "src": "26336:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1785, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1786, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26353:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1787, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26353:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "26353:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26344:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1790, + "nodeType": "ExpressionStatement", + "src": "26344:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1791, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26381:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26381:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "26381:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26412:1:1", + "subdenomination": null, + "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": 1796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26404:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26381:33:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1800, + "nodeType": "ExpressionStatement", + "src": "26381:33:1" + } + ] + } + }, + "id": 1803, + "nodeType": "IfStatement", + "src": "26176:245:1", + "trueBody": { + "id": 1781, + "nodeType": "Block", + "src": "26207:99:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1765, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26215:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1766, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26224:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26224:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "26224:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26215:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1770, + "nodeType": "ExpressionStatement", + "src": "26215:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1771, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26259:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26259:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "26259:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26297:1:1", + "subdenomination": null, + "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": 1776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26289:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26259:40:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1780, + "nodeType": "ExpressionStatement", + "src": "26259:40:1" + } + ] + } + }, + "id": 1804, + "nodeType": "IfStatement", + "src": "26046:375:1", + "trueBody": { + "id": 1761, + "nodeType": "Block", + "src": "26075:95:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1745, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26083:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1746, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26092:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26092:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "26092:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26083:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1750, + "nodeType": "ExpressionStatement", + "src": "26083:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1751, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26125:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1754, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26125:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "26125:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26161:1:1", + "subdenomination": null, + "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": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26153:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26153:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26125:38:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1760, + "nodeType": "ExpressionStatement", + "src": "26125:38:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1806, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26451:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26451:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1808, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26463:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1809, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26471:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1805, + "name": "LegacySignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "26431:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26431:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1811, + "nodeType": "EmitStatement", + "src": "26426:50:1" + } + ] + }, + "documentation": "@notice Remove one of the Validator, Attestation or \nVote signers from an account. Should only be called from\nmethods that check the role is a legacy signer.\n@param role The role that has been authorized.", + "id": 1813, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1729, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1813, + "src": "25945:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1728, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25944:14:1" + }, + "returnParameters": { + "id": 1731, + "nodeType": "ParameterList", + "parameters": [], + "src": "25967:0:1" + }, + "scope": 2783, + "src": "25917:564:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1844, + "nodeType": "Block", + "src": "26679:205:1", + "statements": [ + { + "assignments": [ + 1819 + ], + "declarations": [ + { + "constant": false, + "id": 1819, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 1844, + "src": "26685:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1818, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26685:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1825, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1821, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26722:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1823, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26734:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1820, + "name": "getIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "26705:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26705:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26685:54:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1827, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26758:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1826, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "26745:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26745:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1833, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26813:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1832, + "name": "removeDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1727, + "src": "26793:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26793:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "26745:73:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26785:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1829, + "name": "removeLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1813, + "src": "26766:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26766:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1836, + "nodeType": "ExpressionStatement", + "src": "26745:73:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1838, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26851:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26851:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1840, + "name": "oldSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "26863:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1841, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26874:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1837, + "name": "IndexedSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "26830:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1843, + "nodeType": "EmitStatement", + "src": "26825:54:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized and indexed signer \nfor a specific role\n@param role The role of the signer.", + "id": 1845, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1815, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1845, + "src": "26658:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1814, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26658:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26657:14:1" + }, + "returnParameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [], + "src": "26679:0:1" + }, + "scope": 2783, + "src": "26629:255:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1881, + "nodeType": "Block", + "src": "27187:207:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1853, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27213:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27213:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1855, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27225:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1856, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27233:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1852, + "name": "isIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "27197:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27197:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1863, + "nodeType": "IfStatement", + "src": "27193:87:1", + "trueBody": { + "id": 1862, + "nodeType": "Block", + "src": "27240:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1859, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1858, + "name": "removeIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1845, + "src": "27248:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27248:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1861, + "nodeType": "ExpressionStatement", + "src": "27248:25:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "27286:53:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1864, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "27293:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1867, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1865, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27314:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27314:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27293:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1869, + "indexExpression": { + "argumentTypes": null, + "id": 1868, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27326:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27293:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1871, + "indexExpression": { + "argumentTypes": null, + "id": 1870, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27332:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "27293:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1873, + "nodeType": "ExpressionStatement", + "src": "27286:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1875, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27364:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27364:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1877, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27376:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1878, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1874, + "name": "SignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 293, + "src": "27350:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27350:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1880, + "nodeType": "EmitStatement", + "src": "27345:44:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized signer for a specific role and \nif the signer is indexed, remove that as well.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1847, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1882, + "src": "27150:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27150:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1849, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1882, + "src": "27166:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1848, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27166:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27149:30:1" + }, + "returnParameters": { + "id": 1851, + "nodeType": "ParameterList", + "parameters": [], + "src": "27187:0:1" + }, + "scope": 2783, + "src": "27128:266:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1904, + "nodeType": "Block", + "src": "27600:153:1", + "statements": [ + { + "assignments": [ + 1886 + ], + "declarations": [ + { + "constant": false, + "id": 1886, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1904, + "src": "27606:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27606:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1892, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27639:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27639:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "27651:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1887, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "27623:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27623:39:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27606:56:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1894, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1886, + "src": "27681:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1895, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "27689:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1893, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "27668:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27668:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1897, + "nodeType": "ExpressionStatement", + "src": "27668:32:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1899, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27729:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27729:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1901, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1886, + "src": "27741:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1898, + "name": "VoteSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 231, + "src": "27711:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27711:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1903, + "nodeType": "EmitStatement", + "src": "27706:42:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized vote signer for the account.\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1905, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1883, + "nodeType": "ParameterList", + "parameters": [], + "src": "27590:2:1" + }, + "returnParameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [], + "src": "27600:0:1" + }, + "scope": 2783, + "src": "27565:188:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1927, + "nodeType": "Block", + "src": "27968:168:1", + "statements": [ + { + "assignments": [ + 1909 + ], + "declarations": [ + { + "constant": false, + "id": 1909, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1927, + "src": "27974:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27974:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1911, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28007:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28007:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1913, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "28019:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1910, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "27991:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27991:44:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27974:61:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1917, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "28054:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1918, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "28062:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1916, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "28041:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28041:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1920, + "nodeType": "ExpressionStatement", + "src": "28041:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1922, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28112:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28112:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1924, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "28124:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1921, + "name": "ValidatorSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "28089:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28089:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1926, + "nodeType": "EmitStatement", + "src": "28084:47:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized validator signer for the account\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1928, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1906, + "nodeType": "ParameterList", + "parameters": [], + "src": "27958:2:1" + }, + "returnParameters": { + "id": 1907, + "nodeType": "ParameterList", + "parameters": [], + "src": "27968:0:1" + }, + "scope": 2783, + "src": "27928:208:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1950, + "nodeType": "Block", + "src": "28355:174:1", + "statements": [ + { + "assignments": [ + 1932 + ], + "declarations": [ + { + "constant": false, + "id": 1932, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "28361:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28361:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1938, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1934, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28394:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28394:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1936, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "28406:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1933, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "28378:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28378:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28361:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1940, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "28443:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1941, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "28451:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1939, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "28430:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28430:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1943, + "nodeType": "ExpressionStatement", + "src": "28430:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1945, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28505:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28505:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1947, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "28517:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1944, + "name": "AttestationSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 225, + "src": "28480:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28480:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1949, + "nodeType": "EmitStatement", + "src": "28475:49:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized attestation signer for the account\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1929, + "nodeType": "ParameterList", + "parameters": [], + "src": "28345:2:1" + }, + "returnParameters": { + "id": 1930, + "nodeType": "ParameterList", + "parameters": [], + "src": "28355:0:1" + }, + "scope": 2783, + "src": "28313:216:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1993, + "nodeType": "Block", + "src": "28628:269:1", + "statements": [ + { + "assignments": [ + 1961 + ], + "declarations": [ + { + "constant": false, + "id": 1961, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1993, + "src": "28634:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28634:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1965, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1962, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "28652:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1964, + "indexExpression": { + "argumentTypes": null, + "id": 1963, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28665:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28652:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28634:38:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1966, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28701:1:1", + "subdenomination": null, + "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": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28693:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28693:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "28682:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1983, + "nodeType": "IfStatement", + "src": "28678:145:1", + "trueBody": { + "id": 1982, + "nodeType": "Block", + "src": "28705:118:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1973, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28730:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1974, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28739:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1975, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1955, + "src": "28747:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1972, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "28721:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28721:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c65", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28754:39:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682", + "typeString": "literal_string \"not active authorized signer for role\"" + }, + "value": "not active authorized signer for role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682", + "typeString": "literal_string \"not active authorized signer for role\"" + } + ], + "id": 1971, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "28713:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28713:81:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "28713:81:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1980, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1959, + "id": 1981, + "nodeType": "Return", + "src": "28802:14:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1986, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28847:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1985, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "28837:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28837:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f7420616e206163636f756e74", + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28856:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484", + "typeString": "literal_string \"not an account\"" + }, + "value": "not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484", + "typeString": "literal_string \"not an account\"" + } + ], + "id": 1984, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "28829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28829:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1990, + "nodeType": "ExpressionStatement", + "src": "28829:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1991, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1959, + "id": 1992, + "nodeType": "Return", + "src": "28879:13:1" + } + ] + }, + "documentation": null, + "id": 1994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signerToAccountWithRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1953, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28566:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28566:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1955, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28582:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1954, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28565:30:1" + }, + "returnParameters": { + "id": 1959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1958, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28619:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28619:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28618:9:1" + }, + "scope": 2783, + "src": "28533:364:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2006, + "nodeType": "Block", + "src": "29277:68:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2002, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1996, + "src": "29314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2003, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "29322:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2001, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "29290:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29290:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2000, + "id": 2005, + "nodeType": "Return", + "src": "29283:57:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized attestation signer.\n@dev Fails if the `signer` is not an account or currently authorized attestation signer.\n@return The associated account.", + "id": 2007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attestationSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1996, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "29229:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29229:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29228:16:1" + }, + "returnParameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "29268:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29268:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29267:9:1" + }, + "scope": 2783, + "src": "29193:152:1", + "stateMutability": "view", + "superFunction": 9126, + "visibility": "external" + }, + { + "body": { + "id": 2019, + "nodeType": "Block", + "src": "29709:66:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2015, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2009, + "src": "29746:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2016, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "29754:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2014, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "29722:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29722:48:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2013, + "id": 2018, + "nodeType": "Return", + "src": "29715:55:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of an account or currently authorized validator signer.\n@dev Fails if the `signer` is not an account or currently authorized validator.\n@return The associated account.", + "id": 2020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "validatorSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2009, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "29663:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29663:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29662:16:1" + }, + "returnParameters": { + "id": 2013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2012, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "29700:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29700:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29699:9:1" + }, + "scope": 2783, + "src": "29629:146:1", + "stateMutability": "view", + "superFunction": 9119, + "visibility": "public" + }, + { + "body": { + "id": 2032, + "nodeType": "Block", + "src": "30134:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2028, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "30171:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2029, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "30179:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2027, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "30147:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30147:43:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2026, + "id": 2031, + "nodeType": "Return", + "src": "30140:50:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized vote signer.\n@dev Fails if the `signer` is not an account or currently authorized vote signer.\n@return The associated account.", + "id": 2033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "voteSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2022, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2033, + "src": "30086:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30086:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30085:16:1" + }, + "returnParameters": { + "id": 2026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2025, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2033, + "src": "30125:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30125:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30124:9:1" + }, + "scope": 2783, + "src": "30057:138:1", + "stateMutability": "view", + "superFunction": 9112, + "visibility": "external" + }, + { + "body": { + "id": 2065, + "nodeType": "Block", + "src": "30542:229:1", + "statements": [ + { + "assignments": [ + 2041 + ], + "declarations": [ + { + "constant": false, + "id": 2041, + "name": "authorizingAccount", + "nodeType": "VariableDeclaration", + "scope": 2065, + "src": "30548:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30548:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2045, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2042, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "30577:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2044, + "indexExpression": { + "argumentTypes": null, + "id": 2043, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30590:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30577:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30548:49:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2046, + "name": "authorizingAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2041, + "src": "30607:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30637:1:1", + "subdenomination": null, + "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": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30629:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30607:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2063, + "nodeType": "Block", + "src": "30687:80:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2056, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30713:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2055, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "30703:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30703:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30722:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 2054, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "30695:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30695:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2060, + "nodeType": "ExpressionStatement", + "src": "30695:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2061, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30754:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2039, + "id": 2062, + "nodeType": "Return", + "src": "30747:13:1" + } + ] + }, + "id": 2064, + "nodeType": "IfStatement", + "src": "30603:164:1", + "trueBody": { + "id": 2053, + "nodeType": "Block", + "src": "30641:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "authorizingAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2041, + "src": "30656:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2039, + "id": 2052, + "nodeType": "Return", + "src": "30649:25:1" + } + ] + } + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or previously authorized signer.\n@dev Fails if the `signer` is not an account or previously authorized signer.\n@return The associated account.", + "id": 2066, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2036, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2035, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "30494:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30494:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30493:16:1" + }, + "returnParameters": { + "id": 2039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2038, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "30533:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30532:9:1" + }, + "scope": 2783, + "src": "30469:302:1", + "stateMutability": "view", + "superFunction": 9133, + "visibility": "external" + }, + { + "body": { + "id": 2085, + "nodeType": "Block", + "src": "30963:92:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2073, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "30976:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2074, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "30984:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "30976:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2076, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "30998:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2077, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "31006:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "30998:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30976:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2080, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "31025:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2081, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "31033:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31025:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30976:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2072, + "id": 2084, + "nodeType": "Return", + "src": "30969:81:1" + } + ] + }, + "documentation": "@notice Checks whether the role is one of Vote, Validator or Attestation\n@param role The role to check", + "id": 2086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isLegacyRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2068, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "30922:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2067, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30921:14:1" + }, + "returnParameters": { + "id": 2072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2071, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "30957:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2070, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30957:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30956:6:1" + }, + "scope": 2783, + "src": "30900:155:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2153, + "nodeType": "Block", + "src": "31396:439:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2097, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31423:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2096, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "31410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31410:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526f6c65206973206e6f742061206c6567616379207369676e6572", + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31430:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1", + "typeString": "literal_string \"Role is not a legacy signer\"" + }, + "value": "Role is not a legacy signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1", + "typeString": "literal_string \"Role is not a legacy signer\"" + } + ], + "id": 2095, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "31402:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31402:58:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2101, + "nodeType": "ExpressionStatement", + "src": "31402:58:1" + }, + { + "assignments": [ + 2103 + ], + "declarations": [ + { + "constant": false, + "id": 2103, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "31467:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 2102, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "31467:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2107, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2104, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "31493:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2106, + "indexExpression": { + "argumentTypes": null, + "id": 2105, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "31502:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31493:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31467:44:1" + }, + { + "assignments": [ + 2109 + ], + "declarations": [ + { + "constant": false, + "id": 2109, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "31517:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31517:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2110, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "31517:14:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2111, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31541:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2112, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "31549:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31541:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2121, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31625:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2122, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "31633:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31625:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2131, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31713:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2132, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "31721:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2141, + "nodeType": "IfStatement", + "src": "31709:68:1", + "trueBody": { + "id": 2140, + "nodeType": "Block", + "src": "31733:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2134, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31741:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31750:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31750:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "31750:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31741:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2139, + "nodeType": "ExpressionStatement", + "src": "31741:29:1" + } + ] + } + }, + "id": 2142, + "nodeType": "IfStatement", + "src": "31621:156:1", + "trueBody": { + "id": 2130, + "nodeType": "Block", + "src": "31652:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2124, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31660:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2125, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31669:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2127, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "31669:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31660:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2129, + "nodeType": "ExpressionStatement", + "src": "31660:36:1" + } + ] + } + }, + "id": 2143, + "nodeType": "IfStatement", + "src": "31537:240:1", + "trueBody": { + "id": 2120, + "nodeType": "Block", + "src": "31566:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2114, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31574:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2115, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31583:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2116, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31583:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "31583:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31574:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2119, + "nodeType": "ExpressionStatement", + "src": "31574:34:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2144, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31790:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31808:1:1", + "subdenomination": null, + "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": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31800:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "31790:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2150, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31824:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "31790:40:1", + "trueExpression": { + "argumentTypes": null, + "id": 2149, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "31813:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2094, + "id": 2152, + "nodeType": "Return", + "src": "31783:47:1" + } + ] + }, + "documentation": "@notice Returns the legacy signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param _account The address of the account.\n@param role The role of the signer.", + "id": 2154, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2088, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31334:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31334:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2090, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31352:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31333:32:1" + }, + "returnParameters": { + "id": 2094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2093, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31387:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2092, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31387:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31386:9:1" + }, + "scope": 2783, + "src": "31309:526:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2180, + "nodeType": "Block", + "src": "32176:130:1", + "statements": [ + { + "assignments": [ + 2164 + ], + "declarations": [ + { + "constant": false, + "id": 2164, + "name": "defaultSigner", + "nodeType": "VariableDeclaration", + "scope": 2180, + "src": "32182:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32182:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2170, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2165, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "32206:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 2167, + "indexExpression": { + "argumentTypes": null, + "id": 2166, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "32221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32206:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2169, + "indexExpression": { + "argumentTypes": null, + "id": 2168, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "32230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32206:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32182:53:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2171, + "name": "defaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "32248:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32273:1:1", + "subdenomination": null, + "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": 2172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32265:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "32248:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2177, + "name": "defaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "32288:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "32248:53:1", + "trueExpression": { + "argumentTypes": null, + "id": 2176, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "32278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2162, + "id": 2179, + "nodeType": "Return", + "src": "32241:60:1" + } + ] + }, + "documentation": "@notice Returns the default signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.", + "id": 2181, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2156, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32115:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32115:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2158, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32132:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2157, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32132:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32114:31:1" + }, + "returnParameters": { + "id": 2162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32167:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32167:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32166:9:1" + }, + "scope": 2783, + "src": "32089:217:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2203, + "nodeType": "Block", + "src": "32647:103:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2191, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32673:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2190, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "32660:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32660:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2198, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2183, + "src": "32731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32740:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2197, + "name": "getDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2181, + "src": "32714:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32714:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "32660:85:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2194, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2183, + "src": "32697:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2195, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32706:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2193, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "32681:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32681:30:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2189, + "id": 2202, + "nodeType": "Return", + "src": "32653:92:1" + } + ] + }, + "documentation": "@notice Returns the indexed signer for the specified account and role. \nIf no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.", + "id": 2204, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2183, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32586:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32586:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2185, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32603:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32603:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32585:31:1" + }, + "returnParameters": { + "id": 2189, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2188, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32638:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32638:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32637:9:1" + }, + "scope": 2783, + "src": "32560:190:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2216, + "nodeType": "Block", + "src": "33012:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2212, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "33041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2213, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "33050:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2211, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33025:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33025:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2210, + "id": 2215, + "nodeType": "Return", + "src": "33018:43:1" + } + ] + }, + "documentation": "@notice Returns the vote signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign votes.", + "id": 2217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2206, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2217, + "src": "32965:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32965:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32964:17:1" + }, + "returnParameters": { + "id": 2210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2209, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2217, + "src": "33003:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33003:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33002:9:1" + }, + "scope": 2783, + "src": "32942:124:1", + "stateMutability": "view", + "superFunction": 9154, + "visibility": "public" + }, + { + "body": { + "id": 2229, + "nodeType": "Block", + "src": "33357:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2225, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2219, + "src": "33386:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2226, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "33395:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2224, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33370:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33370:41:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2223, + "id": 2228, + "nodeType": "Return", + "src": "33363:48:1" + } + ] + }, + "documentation": "@notice Returns the validator signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can register a validator or group.", + "id": 2230, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2219, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "33310:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33310:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33309:17:1" + }, + "returnParameters": { + "id": 2223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2222, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "33348:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33348:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33347:9:1" + }, + "scope": 2783, + "src": "33282:134:1", + "stateMutability": "view", + "superFunction": 9147, + "visibility": "public" + }, + { + "body": { + "id": 2242, + "nodeType": "Block", + "src": "33699:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2238, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "33728:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2239, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "33737:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2237, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33712:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33712:43:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2236, + "id": 2241, + "nodeType": "Return", + "src": "33705:50:1" + } + ] + }, + "documentation": "@notice Returns the attestation signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign attestations.", + "id": 2243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2232, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2243, + "src": "33652:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33652:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33651:17:1" + }, + "returnParameters": { + "id": 2236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2235, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2243, + "src": "33690:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33690:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33689:9:1" + }, + "scope": 2783, + "src": "33622:138:1", + "stateMutability": "view", + "superFunction": 9140, + "visibility": "public" + }, + { + "body": { + "id": 2259, + "nodeType": "Block", + "src": "33972:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2253, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "34001:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2247, + "src": "34010:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2252, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33985:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33985:30:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2256, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "34019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "33985:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2251, + "id": 2258, + "nodeType": "Return", + "src": "33978:48:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for one of the legacy roles", + "id": 2260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2245, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33914:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33914:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2247, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33931:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "33931:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33913:31:1" + }, + "returnParameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2250, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33966:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2249, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "33966:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33965:6:1" + }, + "scope": 2783, + "src": "33889:142:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2276, + "nodeType": "Block", + "src": "34227:60:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2270, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "34257:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2271, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2264, + "src": "34266:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2269, + "name": "getDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2181, + "src": "34240:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34240:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2273, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "34275:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "34240:42:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2268, + "id": 2275, + "nodeType": "Return", + "src": "34233:49:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for a role", + "id": 2277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2262, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34169:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34169:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2264, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34186:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2263, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "34186:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34168:31:1" + }, + "returnParameters": { + "id": 2268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2267, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34221:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2266, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34221:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34220:6:1" + }, + "scope": 2783, + "src": "34143:144:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2299, + "nodeType": "Block", + "src": "34485:103:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2287, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34511:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2286, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "34498:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34498:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2294, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2279, + "src": "34569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2295, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34578:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2293, + "name": "hasDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2277, + "src": "34552:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34552:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "34498:85:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2290, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2279, + "src": "34535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34544:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2289, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "34519:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34519:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2285, + "id": 2298, + "nodeType": "Return", + "src": "34491:92:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for the role", + "id": 2300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2279, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34427:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34427:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2281, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34444:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "34444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34426:31:1" + }, + "returnParameters": { + "id": 2285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34479:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2283, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34479:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34478:6:1" + }, + "scope": 2783, + "src": "34401:187:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2319, + "nodeType": "Block", + "src": "34863:78:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2310, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2302, + "src": "34893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2314, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2304, + "src": "34929:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 2312, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "34912:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34912:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34912:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2311, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "34902:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34902:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2309, + "name": "hasIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2300, + "src": "34876:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34876:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2308, + "id": 2318, + "nodeType": "Return", + "src": "34869:67:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has a signer\nregistered for the plaintext role.\n@dev See `hasIndexedSigner` for more gas efficient call.", + "id": 2320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2302, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34795:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34795:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2304, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34812:20:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2303, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34812:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34794:39:1" + }, + "returnParameters": { + "id": 2308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2307, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34857:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2306, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34857:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34856:6:1" + }, + "scope": 2783, + "src": "34766:175:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2332, + "nodeType": "Block", + "src": "35227:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2328, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "35256:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2329, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "35265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2327, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35240:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35240:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2326, + "id": 2331, + "nodeType": "Return", + "src": "35233:43:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated vote signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated vote signer.", + "id": 2333, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "35181:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35181:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35180:17:1" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "35221:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2324, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35221:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35220:6:1" + }, + "scope": 2783, + "src": "35148:133:1", + "stateMutability": "view", + "superFunction": 9161, + "visibility": "external" + }, + { + "body": { + "id": 2345, + "nodeType": "Block", + "src": "35582:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "35611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2342, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "35620:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2340, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35595:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35595:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2339, + "id": 2344, + "nodeType": "Return", + "src": "35588:48:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated validator signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated validator signer.", + "id": 2346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2335, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2346, + "src": "35536:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35536:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35535:17:1" + }, + "returnParameters": { + "id": 2339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2338, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2346, + "src": "35576:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35576:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35575:6:1" + }, + "scope": 2783, + "src": "35498:143:1", + "stateMutability": "view", + "superFunction": 9168, + "visibility": "external" + }, + { + "body": { + "id": 2358, + "nodeType": "Block", + "src": "35948:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2354, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "35977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2355, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "35986:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2353, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35961:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35961:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2352, + "id": 2357, + "nodeType": "Return", + "src": "35954:50:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated attestation signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated attestation signer.", + "id": 2359, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2348, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "35902:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35902:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35901:17:1" + }, + "returnParameters": { + "id": 2352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2351, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "35942:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2350, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35942:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35941:6:1" + }, + "scope": 2783, + "src": "35862:147:1", + "stateMutability": "view", + "superFunction": 9175, + "visibility": "external" + }, + { + "body": { + "id": 2371, + "nodeType": "Block", + "src": "36256:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2366, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "36269:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2368, + "indexExpression": { + "argumentTypes": null, + "id": 2367, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2361, + "src": "36278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36269:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2369, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "name", + "nodeType": "MemberAccess", + "referencedDeclaration": 105, + "src": "36269:22:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2365, + "id": 2370, + "nodeType": "Return", + "src": "36262:29:1" + } + ] + }, + "documentation": "@notice Getter for the name of an account.\n@param account The address of the account to get the name for.\n@return name The name of the account.", + "id": 2372, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getName", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2361, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2372, + "src": "36201:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36201:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36200:17:1" + }, + "returnParameters": { + "id": 2365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2364, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2372, + "src": "36241:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2363, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36241:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36240:15:1" + }, + "scope": 2783, + "src": "36184:112:1", + "stateMutability": "view", + "superFunction": 9255, + "visibility": "external" + }, + { + "body": { + "id": 2384, + "nodeType": "Block", + "src": "36572:47:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2379, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "36585:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2381, + "indexExpression": { + "argumentTypes": null, + "id": 2380, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2374, + "src": "36594:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36585:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "36585:29:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2378, + "id": 2383, + "nodeType": "Return", + "src": "36578:36:1" + } + ] + }, + "documentation": "@notice Getter for the metadata of an account.\n@param account The address of the account to get the metadata for.\n@return metadataURL The URL to access the metadata.", + "id": 2385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2374, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2385, + "src": "36517:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36517:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36516:17:1" + }, + "returnParameters": { + "id": 2378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2385, + "src": "36557:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2376, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36557:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36556:15:1" + }, + "scope": 2783, + "src": "36493:126:1", + "stateMutability": "view", + "superFunction": 9237, + "visibility": "external" + }, + { + "body": { + "id": 2523, + "nodeType": "Block", + "src": "37039:636:1", + "statements": [ + { + "assignments": [ + 2397 + ], + "declarations": [ + { + "constant": false, + "id": 2397, + "name": "totalSize", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37045:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37045:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2399, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37065:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37045:21:1" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "sizes", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37072:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37072:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2402, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37072:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2410, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2407, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37111:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37111:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "37097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 2404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2405, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37101:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 2409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37097:37:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37072:62:1" + }, + { + "body": { + "id": 2449, + "nodeType": "Block", + "src": "37202:123:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2426, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37210:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2428, + "indexExpression": { + "argumentTypes": null, + "id": 2427, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37216:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37210:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2430, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "37227:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2431, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37236:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2433, + "indexExpression": { + "argumentTypes": null, + "id": 2432, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37252:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37236:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37227:28:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "37227:40:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37221:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 2436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37221:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37221:54:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37210:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2439, + "nodeType": "ExpressionStatement", + "src": "37210:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2440, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37283:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2443, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37309:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37315:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37309:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2441, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37295:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37295:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37295:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37283:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2448, + "nodeType": "ExpressionStatement", + "src": "37283:35:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2415, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37160:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2416, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37164:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37164:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37160:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2450, + "initializationExpression": { + "assignments": [ + 2412 + ], + "declarations": [ + { + "constant": false, + "id": 2412, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "37145:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37145:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2414, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37157:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37145:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2419, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37188:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37198:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2420, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37192:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37192:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37192:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37188:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2425, + "nodeType": "ExpressionStatement", + "src": "37188:12:1" + }, + "nodeType": "ForStatement", + "src": "37140:185:1" + }, + { + "assignments": [ + 2452 + ], + "declarations": [ + { + "constant": false, + "id": 2452, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37331:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2451, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37331:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2457, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2455, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37361:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "37351:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2453, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37355:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37351:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37331:40:1" + }, + { + "assignments": [ + 2459 + ], + "declarations": [ + { + "constant": false, + "id": 2459, + "name": "pointer", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37377:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37377:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2461, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37395:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37377:19:1" + }, + { + "body": { + "id": 2517, + "nodeType": "Block", + "src": "37464:181:1", + "statements": [ + { + "body": { + "id": 2515, + "nodeType": "Block", + "src": "37520:119:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2493, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "37530:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2495, + "indexExpression": { + "argumentTypes": null, + "id": 2494, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37530:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2497, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "37552:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2501, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2498, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37561:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37561:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37552:28:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2502, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "37552:40:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37546:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37546:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 2505, + "indexExpression": { + "argumentTypes": null, + "id": 2504, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37594:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37546:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "37530:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2507, + "nodeType": "ExpressionStatement", + "src": "37530:66:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2508, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37606:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37628:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2509, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37616:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37616:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37606:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2514, + "nodeType": "ExpressionStatement", + "src": "37606:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2481, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37492:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2482, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37496:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2484, + "indexExpression": { + "argumentTypes": null, + "id": 2483, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37502:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37496:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37492:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2516, + "initializationExpression": { + "assignments": [ + 2478 + ], + "declarations": [ + { + "constant": false, + "id": 2478, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "37477:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37477:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2480, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37489:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37477:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2486, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37506:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37516:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2487, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37510:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37510:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37510:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37506:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2492, + "nodeType": "ExpressionStatement", + "src": "37506:12:1" + }, + "nodeType": "ForStatement", + "src": "37472:167:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2466, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37422:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2467, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37426:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37426:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37422:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2518, + "initializationExpression": { + "assignments": [ + 2463 + ], + "declarations": [ + { + "constant": false, + "id": 2463, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2518, + "src": "37407:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37407:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2465, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37419:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37407:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2470, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37450:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37460:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2471, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37454:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37450:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "37450:12:1" + }, + "nodeType": "ForStatement", + "src": "37402:243:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2519, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37658:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 2520, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "37665:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 2521, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "37657:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256[] memory,bytes memory)" + } + }, + "functionReturnParameters": 2395, + "id": 2522, + "nodeType": "Return", + "src": "37650:20:1" + } + ] + }, + "documentation": "@notice Getter for the metadata of multiple accounts.\n@param accountsToQuery The addresses of the accounts to get the metadata for.\n@return (stringLengths[] - the length of each string in bytes\n data - all strings concatenated\n )", + "id": 2524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "batchGetMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2388, + "name": "accountsToQuery", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "36934:34:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36934:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2387, + "length": null, + "nodeType": "ArrayTypeName", + "src": "36934:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36933:36:1" + }, + "returnParameters": { + "id": 2395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2392, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "37005:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2391, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37005:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2394, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "37023:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2393, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37023:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37004:32:1" + }, + "scope": 2783, + "src": "36905:770:1", + "stateMutability": "view", + "superFunction": 9248, + "visibility": "external" + }, + { + "body": { + "id": 2536, + "nodeType": "Block", + "src": "37998:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2531, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38011:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2533, + "indexExpression": { + "argumentTypes": null, + "id": 2532, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2526, + "src": "38020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38011:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataEncryptionKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 107, + "src": "38011:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 2530, + "id": 2535, + "nodeType": "Return", + "src": "38004:42:1" + } + ] + }, + "documentation": "@notice Getter for the data encryption key and version.\n@param account The address of the account to get the key for\n@return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.", + "id": 2537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDataEncryptionKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2526, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2537, + "src": "37944:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37944:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37943:17:1" + }, + "returnParameters": { + "id": 2530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2529, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2537, + "src": "37984:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2528, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37984:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37983:14:1" + }, + "scope": 2783, + "src": "37914:137:1", + "stateMutability": "view", + "superFunction": 9223, + "visibility": "external" + }, + { + "body": { + "id": 2549, + "nodeType": "Block", + "src": "38305:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2544, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38318:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2546, + "indexExpression": { + "argumentTypes": null, + "id": 2545, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "38327:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38318:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2547, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "walletAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 103, + "src": "38318:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2543, + "id": 2548, + "nodeType": "Return", + "src": "38311:38:1" + } + ] + }, + "documentation": "@notice Getter for the wallet address for an account\n@param account The address of the account to get the wallet address for\n@return Wallet address", + "id": 2550, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWalletAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2539, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2550, + "src": "38256:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38256:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38255:17:1" + }, + "returnParameters": { + "id": 2543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2542, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2550, + "src": "38296:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38296:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38295:9:1" + }, + "scope": 2783, + "src": "38230:124:1", + "stateMutability": "view", + "superFunction": 9230, + "visibility": "external" + }, + { + "body": { + "id": 2563, + "nodeType": "Block", + "src": "38603:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2557, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38617:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2559, + "indexExpression": { + "argumentTypes": null, + "id": 2558, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2552, + "src": "38626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38617:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "38617:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2561, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "38616:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2556, + "id": 2562, + "nodeType": "Return", + "src": "38609:33:1" + } + ] + }, + "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `true` if account exists. Returns `false` otherwise.", + "id": 2564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2552, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2564, + "src": "38559:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38559:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38558:17:1" + }, + "returnParameters": { + "id": 2556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2555, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2564, + "src": "38597:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38597:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38596:6:1" + }, + "scope": 2783, + "src": "38540:107:1", + "stateMutability": "view", + "superFunction": 9105, + "visibility": "public" + }, + { + "body": { + "id": 2578, + "nodeType": "Block", + "src": "38901:45:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "38915:25:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2571, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38916:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2573, + "indexExpression": { + "argumentTypes": null, + "id": 2572, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2566, + "src": "38925:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38916:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "38916:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2576, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "38914:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2570, + "id": 2577, + "nodeType": "Return", + "src": "38907:34:1" + } + ] + }, + "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `false` if account exists. Returns `true` otherwise.", + "id": 2579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2566, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2579, + "src": "38855:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38855:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38854:17:1" + }, + "returnParameters": { + "id": 2570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2569, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2579, + "src": "38895:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2568, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38894:6:1" + }, + "scope": 2783, + "src": "38833:113:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2595, + "nodeType": "Block", + "src": "39236:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2586, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "39250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2588, + "indexExpression": { + "argumentTypes": null, + "id": 2587, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "39263:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39250:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39282:1:1", + "subdenomination": null, + "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": 2589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39274:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "39250:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2593, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "39249:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2585, + "id": 2594, + "nodeType": "Return", + "src": "39242:43:1" + } + ] + }, + "documentation": "@notice Check if an address has been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `true` if authorized. Returns `false` otherwise.", + "id": 2596, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2581, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2596, + "src": "39191:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39191:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39190:16:1" + }, + "returnParameters": { + "id": 2585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2584, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2596, + "src": "39230:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2583, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39229:6:1" + }, + "scope": 2783, + "src": "39163:127:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2612, + "nodeType": "Block", + "src": "39587:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2603, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "39601:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2605, + "indexExpression": { + "argumentTypes": null, + "id": 2604, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "39614:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39601:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39633:1:1", + "subdenomination": null, + "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": 2606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39625:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "39601:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2610, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "39600:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2602, + "id": 2611, + "nodeType": "Return", + "src": "39593:43:1" + } + ] + }, + "documentation": "@notice Check if an address has not been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.", + "id": 2613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2598, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2613, + "src": "39542:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39542:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39541:16:1" + }, + "returnParameters": { + "id": 2602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2601, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2613, + "src": "39581:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2600, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39581:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39580:6:1" + }, + "scope": 2783, + "src": "39511:130:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2637, + "nodeType": "Block", + "src": "40103:89:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2622, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "40117:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2624, + "indexExpression": { + "argumentTypes": null, + "id": 2623, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "40130:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40117:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40149:1:1", + "subdenomination": null, + "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": 2625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40141:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40141:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "40117:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2629, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "40155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2631, + "indexExpression": { + "argumentTypes": null, + "id": 2630, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "40168:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40155:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2632, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2615, + "src": "40179:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40155:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "40117:69:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "40116:71:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2621, + "id": 2636, + "nodeType": "Return", + "src": "40109:78:1" + } + ] + }, + "documentation": "@notice Check if `signer` has not been authorized, and if it has been previously\n authorized that it was authorized by `account`.\n@param account The authorizing account address.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.", + "id": 2638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2615, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40027:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40027:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2617, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40044:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40044:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40026:33:1" + }, + "returnParameters": { + "id": 2621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2620, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40095:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2619, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "40095:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40094:6:1" + }, + "scope": 2783, + "src": "39979:213:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2671, + "nodeType": "Block", + "src": "40844:162:1", + "statements": [ + { + "assignments": [ + 2650 + ], + "declarations": [ + { + "constant": false, + "id": 2650, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2671, + "src": "40850:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40850:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2659, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2653, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "40897:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "40897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2655, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2642, + "src": "40909:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2656, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "40912:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2657, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "40915:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2651, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "40867:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 2652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7127, + "src": "40867:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40867:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40850:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2661, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2650, + "src": "40931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2662, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "40941:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40931:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 2664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40953:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 2660, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "40923:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40923:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2666, + "nodeType": "ExpressionStatement", + "src": "40923:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2668, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "40990:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2667, + "name": "authorize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "40980:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40980:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2670, + "nodeType": "ExpressionStatement", + "src": "40980:21:1" + } + ] + }, + "documentation": "@notice Authorizes some role of `msg.sender`'s account to another address.\n@param authorized The address to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that once an address is authorized, it may never be authorized again.\n@dev v, r, s constitute `authorized`'s signature on `msg.sender`.", + "id": 2672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2640, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40785:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40785:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2642, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40805:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2641, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "40805:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2644, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40814:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2643, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40814:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2646, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40825:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2645, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40825:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40784:51:1" + }, + "returnParameters": { + "id": 2648, + "nodeType": "ParameterList", + "parameters": [], + "src": "40844:0:1" + }, + "scope": 2783, + "src": "40759:247:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2710, + "nodeType": "Block", + "src": "41740:214:1", + "statements": [ + { + "assignments": [ + 2690 + ], + "declarations": [ + { + "constant": false, + "id": 2690, + "name": "structHash", + "nodeType": "VariableDeclaration", + "scope": 2710, + "src": "41746:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2689, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2700, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2694, + "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "41795:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2695, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "41829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2696, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "41838:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2697, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2678, + "src": "41846:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2692, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "41784:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "41784:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41784:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2691, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "41767:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41767:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41746:111:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2703, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "41906:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2704, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "41929:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2705, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2680, + "src": "41941:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2706, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "41944:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2707, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "41947:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2701, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "41870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfTypedDataHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 7218, + "src": "41870:35:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41870:79:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2688, + "id": 2709, + "nodeType": "Return", + "src": "41863:86:1" + } + ] + }, + "documentation": "@notice Returns the address that signed the provided role authorization.\n@param account The `account` property signed over in the EIP712 signature\n@param signer The `signer` property signed over in the EIP712 signature\n@param role The `role` property signed over in the EIP712 signature\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return The address that signed the provided role authorization.", + "id": 2711, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAuthorizationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2674, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41609:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41609:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2676, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41630:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41630:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2678, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41650:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2677, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2680, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41668:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2679, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "41668:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41681:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2681, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41681:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2684, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41696:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41603:106:1" + }, + "returnParameters": { + "id": 2688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2687, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41731:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41731:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41730:9:1" + }, + "scope": 2783, + "src": "41568:386:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2747, + "nodeType": "Block", + "src": "42674:177:1", + "statements": [ + { + "assignments": [ + 2725 + ], + "declarations": [ + { + "constant": false, + "id": 2725, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2747, + "src": "42680:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42680:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2735, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2727, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "42724:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "42724:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2729, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42736:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2730, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "42748:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2731, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2717, + "src": "42754:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2732, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2719, + "src": "42757:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2733, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2721, + "src": "42760:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2726, + "name": "getRoleAuthorizationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2711, + "src": "42697:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,address,bytes32,uint8,bytes32,bytes32) view returns (address)" + } + }, + "id": 2734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42697:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42680:82:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2737, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2725, + "src": "42776:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2738, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42786:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "42776:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42798:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 2736, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "42768:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42768:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2742, + "nodeType": "ExpressionStatement", + "src": "42768:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2744, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2743, + "name": "authorize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "42825:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42825:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2746, + "nodeType": "ExpressionStatement", + "src": "42825:21:1" + } + ] + }, + "documentation": "@notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n@param authorized The address to authorize.\n@param role The role to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that this signature is EIP712 compliant over the authorizing `account` \n(`msg.sender`), `signer` (`authorized`) and `role`.", + "id": 2748, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAddressWithRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2713, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42595:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42595:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2715, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42615:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2714, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42615:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2717, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42629:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2716, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "42629:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42638:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2718, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2721, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42649:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2720, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42594:65:1" + }, + "returnParameters": { + "id": 2723, + "nodeType": "ParameterList", + "parameters": [], + "src": "42674:0:1" + }, + "scope": 2783, + "src": "42561:290:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2781, + "nodeType": "Block", + "src": "43122:301:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2755, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43146:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43146:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2754, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "43136:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43136:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43159:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 2753, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "43128:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43128:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2760, + "nodeType": "ExpressionStatement", + "src": "43128:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2763, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43211:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2762, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "43198:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43198:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2766, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43265:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2768, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43277:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2765, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "43226:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43226:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "43198:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e74", + "id": 2771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43296:72:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24", + "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\"" + }, + "value": "Cannot re-authorize address or locked gold account for another account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24", + "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\"" + } + ], + "id": 2761, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "43183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43183:191:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2773, + "nodeType": "ExpressionStatement", + "src": "43183:191:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2774, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "43381:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2776, + "indexExpression": { + "argumentTypes": null, + "id": 2775, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43394:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "43381:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43408:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43408:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "43381:37:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2780, + "nodeType": "ExpressionStatement", + "src": "43381:37:1" + } + ] + }, + "documentation": "@notice Authorizes an address to `msg.sender`'s account\n@param authorized The address to authorize.\n@dev Fails if the address is already authorized for another account or is an account itself.", + "id": 2782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2750, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2782, + "src": "43094:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43094:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "43093:20:1" + }, + "returnParameters": { + "id": 2752, + "nodeType": "ParameterList", + "parameters": [], + "src": "43122:0:1" + }, + "scope": 2783, + "src": "43075:348:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 2784, + "src": "445:42980:1" + } + ], + "src": "0:43426:1" + }, + "legacyAST": { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol", + "exportedSymbols": { + "Accounts": [ + 2783 + ] + }, + "id": 2784, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 44541, + "src": "26:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 44659, + "src": "86:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol", + "file": "./interfaces/IAccounts.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9341, + "src": "151:36:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol", + "file": "../common/FixidityLib.sol", + "id": 62, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 3611, + "src": "189:35:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 63, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 4705, + "src": "225:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 64, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9384, + "src": "263:57:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "id": 65, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 7220, + "src": "321:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol", + "file": "../common/UsingRegistry.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 8616, + "src": "356:37:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "id": 67, + "nodeType": "ImportDirective", + "scope": 2784, + "sourceUnit": 9762, + "src": "394:49:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 68, + "name": "IAccounts", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9340, + "src": "468:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAccounts_$9340", + "typeString": "contract IAccounts" + } + }, + "id": 69, + "nodeType": "InheritanceSpecifier", + "src": "468:9:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 70, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9383, + "src": "481:22:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9383", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 71, + "nodeType": "InheritanceSpecifier", + "src": "481:22:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 72, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44658, + "src": "507:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$44658", + "typeString": "contract Ownable" + } + }, + "id": 73, + "nodeType": "InheritanceSpecifier", + "src": "507:7:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 74, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9761, + "src": "518:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$9761", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 75, + "nodeType": "InheritanceSpecifier", + "src": "518:15:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 76, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "537:13:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 77, + "nodeType": "InheritanceSpecifier", + "src": "537:13:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 78, + "name": "UsingRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8615, + "src": "554:13:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistry_$8615", + "typeString": "contract UsingRegistry" + } + }, + "id": 79, + "nodeType": "InheritanceSpecifier", + "src": "554:13:1" + } + ], + "contractDependencies": [ + 4704, + 8615, + 9340, + 9383, + 9761, + 44203, + 44658 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2783, + "linearizedBaseContracts": [ + 2783, + 8615, + 4704, + 9761, + 44658, + 44203, + 9383, + 9340 + ], + "name": "Accounts", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 82, + "libraryName": { + "contractScope": null, + "id": 80, + "name": "FixidityLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3610, + "src": "578:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FixidityLib_$3610", + "typeString": "library FixidityLib" + } + }, + "nodeType": "UsingForDirective", + "src": "572:43:1", + "typeName": { + "contractScope": null, + "id": 81, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "594:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + } + }, + { + "id": 85, + "libraryName": { + "contractScope": null, + "id": 83, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44540, + "src": "624:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$44540", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "618:27:1", + "typeName": { + "id": 84, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "Accounts.Signers", + "id": 92, + "members": [ + { + "constant": false, + "id": 87, + "name": "vote", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "871:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "871:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 89, + "name": "validator", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1249:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1249:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 91, + "name": "attestation", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1389:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1389:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Signers", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "649:764:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.SignerAuthorization", + "id": 97, + "members": [ + { + "constant": false, + "id": 94, + "name": "started", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1450:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 93, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1468:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 95, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1468:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "SignerAuthorization", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "1417:70:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.Account", + "id": 110, + "members": [ + { + "constant": false, + "id": 99, + "name": "exists", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1512:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1512:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "name": "signers", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1759:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage_ptr", + "typeString": "struct Accounts.Signers" + }, + "typeName": { + "contractScope": null, + "id": 100, + "name": "Signers", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 92, + "src": "1759:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage_ptr", + "typeString": "struct Accounts.Signers" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "1970:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1970:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2058:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 104, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2058:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2153:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2153:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 110, + "src": "2245:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 108, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Account", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "1491:777:1", + "visibility": "public" + }, + { + "canonicalName": "Accounts.PaymentDelegation", + "id": 115, + "members": [ + { + "constant": false, + "id": 112, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "2372:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2372:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 114, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "2454:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 113, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2454:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "PaymentDelegation", + "nodeType": "StructDefinition", + "scope": 2783, + "src": "2272:216:1", + "visibility": "public" + }, + { + "constant": false, + "id": 119, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2492:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account)" + }, + "typeName": { + "id": 118, + "keyType": { + "id": 116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2500:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2492:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account)" + }, + "valueType": { + "contractScope": null, + "id": 117, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "2511:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 123, + "name": "authorizedBy", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2618:47:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 122, + "keyType": { + "id": 120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2618:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2637:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 129, + "name": "defaultSigners", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2749:62:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + }, + "typeName": { + "id": 128, + "keyType": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2757:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2749:47:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + }, + "valueType": { + "id": 127, + "keyType": { + "id": 125, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2776:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2768:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueType": { + "id": 126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2787:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 137, + "name": "signerAuthorizations", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "2915:100:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))" + }, + "typeName": { + "id": 136, + "keyType": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2923:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2915:79:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))" + }, + "valueType": { + "id": 135, + "keyType": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2942:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2934:59:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization))" + }, + "valueType": { + "id": 134, + "keyType": { + "id": 132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2961:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2953:39:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization)" + }, + "valueType": { + "contractScope": null, + "id": 133, + "name": "SignerAuthorization", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 97, + "src": "2972:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage_ptr", + "typeString": "struct Accounts.SignerAuthorization" + } + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": true, + "id": 142, + "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3020:140:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 138, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c6529", + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3094:62:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b", + "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\"" + }, + "value": "AuthorizeSigner(address account,address signer,bytes32 role)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b", + "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\"" + } + ], + "id": 139, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3079:81:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 144, + "name": "eip712DomainSeparator", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3164:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 143, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 149, + "name": "offchainStorageRoots", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3268:55:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes[])" + }, + "typeName": { + "id": 148, + "keyType": { + "id": 145, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3276:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3268:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes[])" + }, + "valueType": { + "baseType": { + "id": 146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 147, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 153, + "name": "paymentDelegations", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3396:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation)" + }, + "typeName": { + "id": 152, + "keyType": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3396:37:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation)" + }, + "valueType": { + "contractScope": null, + "id": 151, + "name": "PaymentDelegation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 115, + "src": "3415:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": true, + "id": 161, + "name": "ValidatorSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3466:89:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3466:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f76616c696461746f72", + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3528:25:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2", + "typeString": "literal_string \"celo.org/core/validator\"" + }, + "value": "celo.org/core/validator" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2", + "typeString": "literal_string \"celo.org/core/validator\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 156, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3511:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3511:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3511:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 155, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3501:54:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 169, + "name": "AttestationSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3559:93:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 162, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3559:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f6174746573746174696f6e", + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3623:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5", + "typeString": "literal_string \"celo.org/core/attestation\"" + }, + "value": "celo.org/core/attestation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5", + "typeString": "literal_string \"celo.org/core/attestation\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 164, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3606:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3606:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3606:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 163, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3596:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3596:56:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 177, + "name": "VoteSigner", + "nodeType": "VariableDeclaration", + "scope": 2783, + "src": "3656:79:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 170, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63656c6f2e6f72672f636f72652f766f7465", + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3713:20:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf", + "typeString": "literal_string \"celo.org/core/vote\"" + }, + "value": "celo.org/core/vote" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf", + "typeString": "literal_string \"celo.org/core/vote\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 172, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "3696:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3696:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3696:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 171, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "3686:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3686:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": null, + "id": 183, + "name": "AttestationSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 179, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "3774:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3774:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "3799:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3799:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3773:41:1" + }, + "src": "3740:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 189, + "name": "VoteSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 185, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "3845:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3845:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "3870:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3870:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3844:41:1" + }, + "src": "3818:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 195, + "name": "ValidatorSignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 191, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "3921:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3921:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "3946:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3946:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3920:41:1" + }, + "src": "3889:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 203, + "name": "SignerAuthorized", + "nodeType": "EventDefinition", + "parameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "3988:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3988:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 199, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "4013:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4013:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 201, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 203, + "src": "4029:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4029:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3987:63:1" + }, + "src": "3965:86:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 211, + "name": "SignerAuthorizationStarted", + "nodeType": "EventDefinition", + "parameters": { + "id": 210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 205, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4087:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4087:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 207, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4112:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4112:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "4128:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4128:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4086:63:1" + }, + "src": "4054:96:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 219, + "name": "SignerAuthorizationCompleted", + "nodeType": "EventDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4188:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4188:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4213:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4213:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 217, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "4229:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4229:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4187:63:1" + }, + "src": "4153:98:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 225, + "name": "AttestationSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 225, + "src": "4285:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4285:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 223, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 225, + "src": "4310:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4310:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4284:44:1" + }, + "src": "4254:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 231, + "name": "VoteSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4356:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4356:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 229, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4381:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4381:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4355:44:1" + }, + "src": "4332:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 237, + "name": "ValidatorSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 233, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "4432:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4432:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 235, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "4457:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4457:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4431:44:1" + }, + "src": "4403:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 245, + "name": "IndexedSignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 239, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4502:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 238, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4502:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 241, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4527:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4527:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "4543:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 242, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4543:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4501:55:1" + }, + "src": "4479:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 253, + "name": "IndexedSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4587:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4587:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 249, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4612:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4612:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 251, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4631:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4586:58:1" + }, + "src": "4560:85:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 261, + "name": "DefaultSignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4671:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4671:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 257, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4696:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4696:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 259, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "4712:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4712:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4670:55:1" + }, + "src": "4648:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 269, + "name": "DefaultSignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 263, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4756:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4756:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4781:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4781:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 269, + "src": "4800:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 266, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4755:58:1" + }, + "src": "4729:85:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 277, + "name": "LegacySignerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4839:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4839:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4864:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4864:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 275, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4880:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4880:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4838:55:1" + }, + "src": "4817:77:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 285, + "name": "LegacySignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4923:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4923:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 281, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4948:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4948:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 283, + "indexed": false, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "4967:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 282, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4967:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4922:58:1" + }, + "src": "4897:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 293, + "name": "SignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 287, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5004:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5004:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "indexed": false, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5029:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5029:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "indexed": true, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 293, + "src": "5048:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5048:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5003:66:1" + }, + "src": "4984:86:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 299, + "name": "AccountDataEncryptionKeySet", + "nodeType": "EventDefinition", + "parameters": { + "id": 298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "5107:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5107:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "indexed": false, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "5132:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5132:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5106:50:1" + }, + "src": "5073:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 305, + "name": "AccountNameSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 301, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "5181:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5181:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 303, + "indexed": false, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "5206:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 302, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5206:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5180:38:1" + }, + "src": "5160:59:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 311, + "name": "AccountMetadataURLSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "5250:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 309, + "indexed": false, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "5275:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 308, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5275:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5249:45:1" + }, + "src": "5222:73:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 317, + "name": "AccountWalletAddressSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 313, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 317, + "src": "5328:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5328:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "indexed": false, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 317, + "src": "5353:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5353:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5327:48:1" + }, + "src": "5298:78:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 321, + "name": "AccountCreated", + "nodeType": "EventDefinition", + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 319, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 321, + "src": "5400:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5400:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5399:25:1" + }, + "src": "5379:46:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 327, + "name": "OffchainStorageRootAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "5459:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5459:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 325, + "indexed": false, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "5484:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 324, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5484:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5458:36:1" + }, + "src": "5428:67:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 335, + "name": "OffchainStorageRootRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 329, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5531:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 331, + "indexed": false, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5556:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 330, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5556:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "indexed": false, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 335, + "src": "5567:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5567:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5530:51:1" + }, + "src": "5498:84:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 341, + "name": "PaymentDelegationSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "5612:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5612:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "indexed": false, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "5641:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5641:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5611:47:1" + }, + "src": "5585:74:1" + }, + { + "body": { + "id": 349, + "nodeType": "Block", + "src": "5858:2:1", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 350, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 346, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "5852:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 347, + "modifierName": { + "argumentTypes": null, + "id": 345, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "5838:13:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5838:19:1" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 343, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "5820:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5820:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5819:11:1" + }, + "returnParameters": { + "id": 348, + "nodeType": "ParameterList", + "parameters": [], + "src": "5858:0:1" + }, + "scope": 2783, + "src": "5808:52:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 367, + "nodeType": "Block", + "src": "6121:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6135:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6138:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "34", + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6141:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6144:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 365, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6134:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_4_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 1,int_const 1,int_const 4,int_const 0)" + } + }, + "functionReturnParameters": 360, + "id": 366, + "nodeType": "Return", + "src": "6127:19:1" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "id": 368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [], + "src": "6059:2:1" + }, + "returnParameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 353, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6085:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 355, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6094:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6094:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 357, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6103:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 356, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6103:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 359, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "6112:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6112:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6084:36:1" + }, + "scope": 2783, + "src": "6034:117:1", + "stateMutability": "pure", + "superFunction": 9382, + "visibility": "external" + }, + { + "body": { + "id": 387, + "nodeType": "Block", + "src": "6406:107:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 376, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "6431:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6431:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 375, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44657, + "src": "6412:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6412:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6412:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 381, + "name": "registryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "6460:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 380, + "name": "setRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8432, + "src": "6448:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6448:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6448:28:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 384, + "name": "setEip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "6482:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6482:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 386, + "nodeType": "ExpressionStatement", + "src": "6482:26:1" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n@param registryAddress The address of the registry core smart contract.", + "id": 388, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 373, + "modifierName": { + "argumentTypes": null, + "id": 372, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "6394:11:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6394:11:1" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 370, + "name": "registryAddress", + "nodeType": "VariableDeclaration", + "scope": 388, + "src": "6360:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6360:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6359:25:1" + }, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [], + "src": "6406:0:1" + }, + "scope": 2783, + "src": "6340:173:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 418, + "nodeType": "Block", + "src": "6653:384:1", + "statements": [ + { + "assignments": [ + 392 + ], + "declarations": [ + { + "constant": false, + "id": 392, + "name": "chainId", + "nodeType": "VariableDeclaration", + "scope": 418, + "src": "6659:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6659:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 393, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "6659:15:1" + }, + { + "externalReferences": [ + { + "chainId": { + "declaration": 392, + "isOffset": false, + "isSlot": false, + "src": "6697:7:1", + "valueSize": 1 + } + } + ], + "id": 394, + "nodeType": "InlineAssembly", + "operations": "{ chainId := chainid() }", + "src": "6680:41:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 395, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "6727:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6809:84:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 399, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6788:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6788:115:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "43656c6f20436f726520436f6e747261637473", + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6929:21:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c", + "typeString": "literal_string \"Celo Core Contracts\"" + }, + "value": "Celo Core Contracts" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c", + "typeString": "literal_string \"Celo Core Contracts\"" + } + ], + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6923:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6923:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 402, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6913:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6913:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "312e30", + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6972:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + }, + "value": "1.0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + } + ], + "id": 407, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6962:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6962:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 410, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 392, + "src": "6988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 412, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45860, + "src": "7013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Accounts_$2783", + "typeString": "contract Accounts" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Accounts_$2783", + "typeString": "contract Accounts" + } + ], + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7005:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 397, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "6768:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6768:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6768:258:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 396, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "6751:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6751:281:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6727:305:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 417, + "nodeType": "ExpressionStatement", + "src": "6727:305:1" + } + ] + }, + "documentation": "@notice Sets the EIP712 domain separator for the Celo Accounts abstraction.", + "id": 419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setEip712DomainSeparator", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "6643:2:1" + }, + "returnParameters": { + "id": 390, + "nodeType": "ParameterList", + "parameters": [], + "src": "6653:0:1" + }, + "scope": 2783, + "src": "6610:427:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7830:185:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7840:22:1", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 435, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "7851:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7851:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 434, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "7841:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7841:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 443, + "nodeType": "IfStatement", + "src": "7836:58:1", + "trueBody": { + "id": 442, + "nodeType": "Block", + "src": "7864:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 439, + "name": "createAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "7872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$", + "typeString": "function () returns (bool)" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7872:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 441, + "nodeType": "ExpressionStatement", + "src": "7872:15:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 445, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "7907:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 444, + "name": "setName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 532, + "src": "7899:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7899:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "7899:13:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 449, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "7946:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 448, + "name": "setAccountDataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "7918:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory)" + } + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7918:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 451, + "nodeType": "ExpressionStatement", + "src": "7918:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 453, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "7987:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 454, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "8002:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 455, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 429, + "src": "8005:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 456, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "8008:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 452, + "name": "setWalletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "7970:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,uint8,bytes32,bytes32)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7970:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7970:40:1" + } + ] + }, + "documentation": "@notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n@param name A string to set as the name of the account\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).", + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 421, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7688:20:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 420, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 423, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7714:32:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 422, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 425, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7752:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7752:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7779:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 426, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7779:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7792:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 428, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7807:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 430, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7807:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7682:138:1" + }, + "returnParameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [], + "src": "7830:0:1" + }, + "scope": 2783, + "src": "7663:352:1", + "stateMutability": "nonpayable", + "superFunction": 9216, + "visibility": "external" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "8160:232:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 467, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8187:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8187:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 466, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "8174:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8174:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8224:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8224:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 470, + "name": "isNotAuthorizedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "8202:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8202:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8174:61:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420657869737473", + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8237:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870", + "typeString": "literal_string \"Account exists\"" + }, + "value": "Account exists" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870", + "typeString": "literal_string \"Account exists\"" + } + ], + "id": 465, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "8166:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8166:88:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "8166:88:1" + }, + { + "assignments": [ + 479 + ], + "declarations": [ + { + "constant": false, + "id": 479, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "8260:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 478, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "8260:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 484, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 480, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "8286:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 483, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 481, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8295:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8295:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8286:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8260:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 485, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "8312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 487, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "8312:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8329:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8312:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "8312:21:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8359:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8359:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 491, + "name": "AccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "8344:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8344:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 495, + "nodeType": "EmitStatement", + "src": "8339:31:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8383:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 464, + "id": 497, + "nodeType": "Return", + "src": "8376:11:1" + } + ] + }, + "documentation": "@notice Creates an account.\n@return True if account creation succeeded.", + "id": 499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 461, + "nodeType": "ParameterList", + "parameters": [], + "src": "8135:2:1" + }, + "returnParameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "8154:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8154:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8153:6:1" + }, + "scope": 2783, + "src": "8113:279:1", + "stateMutability": "nonpayable", + "superFunction": 9323, + "visibility": "public" + }, + { + "body": { + "id": 531, + "nodeType": "Block", + "src": "8534:180:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8558:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8558:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 505, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "8548:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8548:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8571:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 504, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "8540:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8540:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 511, + "nodeType": "ExpressionStatement", + "src": "8540:49:1" + }, + { + "assignments": [ + 513 + ], + "declarations": [ + { + "constant": false, + "id": 513, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 531, + "src": "8595:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 512, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "8595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 518, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 514, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "8621:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 517, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 515, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8630:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8630:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8621:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8595:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 519, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "8647:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 521, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "name", + "nodeType": "MemberAccess", + "referencedDeclaration": 105, + "src": "8647:12:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 522, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "8662:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "8647:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 524, + "nodeType": "ExpressionStatement", + "src": "8647:19:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 526, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "8692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 528, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "8704:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 525, + "name": "AccountNameSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "8677:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory)" + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8677:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 530, + "nodeType": "EmitStatement", + "src": "8672:37:1" + } + ] + }, + "documentation": "@notice Setter for the name of an account.\n@param name The name to set.", + "id": 532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setName", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 501, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 532, + "src": "8507:18:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 500, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8507:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8506:20:1" + }, + "returnParameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "8534:0:1" + }, + "scope": 2783, + "src": "8490:224:1", + "stateMutability": "nonpayable", + "superFunction": 9190, + "visibility": "public" + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "9477:433:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9501:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9501:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 544, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "9491:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9514:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "9483:7:1", + "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, + "names": [], + "nodeType": "FunctionCall", + "src": "9483:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "9483:49:1" + }, + { + "condition": { + "argumentTypes": null, + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9542:63:1", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9544:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 552, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9561:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9561:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9544:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 555, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9575:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9600:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9592:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9592:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9575:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9544:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 561, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9543:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 582, + "nodeType": "IfStatement", + "src": "9538:212:1", + "trueBody": { + "id": 581, + "nodeType": "Block", + "src": "9607:143:1", + "statements": [ + { + "assignments": [ + 564 + ], + "declarations": [ + { + "constant": false, + "id": 564, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "9615:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9615:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 573, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 567, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9662:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9662:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 569, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "9674:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 570, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 538, + "src": "9677:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 571, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "9680:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 565, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "9632:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7127, + "src": "9632:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9632:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9615:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 575, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "9698:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 576, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9708:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9698:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9723:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 574, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "9690:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9690:53:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "9690:53:1" + } + ] + } + }, + { + "assignments": [ + 584 + ], + "declarations": [ + { + "constant": false, + "id": 584, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9755:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 583, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "9755:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 589, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "9781:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 588, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 586, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9790:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9790:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9781:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9755:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 590, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 584, + "src": "9807:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 592, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "walletAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 103, + "src": "9807:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 593, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9831:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9807:37:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 595, + "nodeType": "ExpressionStatement", + "src": "9807:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 597, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "9879:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9879:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 599, + "name": "walletAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "9891:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 596, + "name": "AccountWalletAddressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "9855:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9855:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "EmitStatement", + "src": "9850:55:1" + } + ] + }, + "documentation": "@notice Setter for the wallet address for an account\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Wallet address can be zero. This means that the owner of the wallet\n does not want to be paid directly without interaction, and instead wants users to\ncontact them, using the data encryption key, and arrange a payment.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).", + "id": 603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setWalletAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 534, + "name": "walletAddress", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9416:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9416:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 536, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9439:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 535, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9439:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 538, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9448:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9448:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 540, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "9459:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 539, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9459:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9415:54:1" + }, + "returnParameters": { + "id": 542, + "nodeType": "ParameterList", + "parameters": [], + "src": "9477:0:1" + }, + "scope": 2783, + "src": "9390:520:1", + "stateMutability": "nonpayable", + "superFunction": 9201, + "visibility": "public" + }, + { + "body": { + "id": 635, + "nodeType": "Block", + "src": "10158:258:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 609, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10172:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10172:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3333", + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10200:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33_by_1", + "typeString": "int_const 33" + }, + "value": "33" + }, + "src": "10172:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6461746120656e6372797074696f6e206b6579206c656e677468203c3d203332", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10204:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa", + "typeString": "literal_string \"data encryption key length <= 32\"" + }, + "value": "data encryption key length <= 32" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa", + "typeString": "literal_string \"data encryption key length <= 32\"" + } + ], + "id": 608, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10164:75:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 615, + "nodeType": "ExpressionStatement", + "src": "10164:75:1" + }, + { + "assignments": [ + 617 + ], + "declarations": [ + { + "constant": false, + "id": 617, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "10245:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 616, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "10245:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 622, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "10271:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 621, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 619, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10280:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10280:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10271:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10245:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 623, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "10297:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataEncryptionKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 107, + "src": "10297:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 626, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10325:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "10297:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "10297:45:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 630, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10381:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10381:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 632, + "name": "dataEncryptionKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10393:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 629, + "name": "AccountDataEncryptionKeySet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 299, + "src": "10353:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10353:58:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "EmitStatement", + "src": "10348:63:1" + } + ] + }, + "documentation": "@notice Setter for the data encryption key and version.\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.", + "id": 636, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAccountDataEncryptionKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "name": "dataEncryptionKey", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10119:30:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 604, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10119:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10118:32:1" + }, + "returnParameters": { + "id": 607, + "nodeType": "ParameterList", + "parameters": [], + "src": "10158:0:1" + }, + "scope": 2783, + "src": "10082:334:1", + "stateMutability": "nonpayable", + "superFunction": 9180, + "visibility": "public" + }, + { + "body": { + "id": 668, + "nodeType": "Block", + "src": "10602:208:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10626:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10626:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 642, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "10616:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10616:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10639:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 641, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10608:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 648, + "nodeType": "ExpressionStatement", + "src": "10608:49:1" + }, + { + "assignments": [ + 650 + ], + "declarations": [ + { + "constant": false, + "id": 650, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 668, + "src": "10663:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 649, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "10663:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 655, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 651, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "10689:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 654, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 652, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10698:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10698:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10689:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10663:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "10715:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "10715:19:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 659, + "name": "metadataURL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "10737:11:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "10715:33:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "10715:33:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 663, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "10781:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10781:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 665, + "name": "metadataURL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "10793:11:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 662, + "name": "AccountMetadataURLSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "10759:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory)" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10759:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 667, + "nodeType": "EmitStatement", + "src": "10754:51:1" + } + ] + }, + "documentation": "@notice Setter for the metadata of an account.\n@param metadataURL The URL to access the metadata.", + "id": 669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 638, + "name": "metadataURL", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "10564:27:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 637, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10564:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10563:29:1" + }, + "returnParameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [], + "src": "10602:0:1" + }, + "scope": 2783, + "src": "10540:270:1", + "stateMutability": "nonpayable", + "superFunction": 9185, + "visibility": "external" + }, + { + "body": { + "id": 696, + "nodeType": "Block", + "src": "10985:160:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 676, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 675, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "10999:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10999:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11022:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 674, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "10991:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10991:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "10991:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 687, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 671, + "src": "11084:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 682, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11046:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 685, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 683, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11067:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11067:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11046:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11046:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes_storage_$returns$_t_uint256_$", + "typeString": "function (bytes storage ref) returns (uint256)" + } + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11046:42:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "11046:42:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11124:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11124:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 671, + "src": "11136:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 690, + "name": "OffchainStorageRootAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "11099:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11099:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 695, + "nodeType": "EmitStatement", + "src": "11094:46:1" + } + ] + }, + "documentation": "@notice Adds a new CIP8 storage root.\n@param url The URL pointing to the offchain storage root.", + "id": 697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addStorageRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 671, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 697, + "src": "10956:18:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 670, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10956:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10955:20:1" + }, + "returnParameters": { + "id": 673, + "nodeType": "ParameterList", + "parameters": [], + "src": "10985:0:1" + }, + "scope": 2783, + "src": "10932:213:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 768, + "nodeType": "Block", + "src": "11553:484:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 704, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11577:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11577:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 703, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "11567:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11590:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 702, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "11559:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11559:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 709, + "nodeType": "ExpressionStatement", + "src": "11559:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 711, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11622:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11630:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 715, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 713, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11651:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11651:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11630:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11630:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11622:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c69642073746f7261676520726f6f7420696e646578", + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11671:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c", + "typeString": "literal_string \"Invalid storage root index\"" + }, + "value": "Invalid storage root index" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c", + "typeString": "literal_string \"Invalid storage root index\"" + } + ], + "id": 710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "11614:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11614:86:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 720, + "nodeType": "ExpressionStatement", + "src": "11614:86:1" + }, + { + "assignments": [ + 722 + ], + "declarations": [ + { + "constant": false, + "id": 722, + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "11706:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 730, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 723, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11726:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 726, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 724, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11747:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11747:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11726:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11726:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11768:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11726:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11706:63:1" + }, + { + "assignments": [ + 732 + ], + "declarations": [ + { + "constant": false, + "id": 732, + "name": "url", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "11775:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 731, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11775:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 739, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 733, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 736, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 734, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11815:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11815:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11794:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 738, + "indexExpression": { + "argumentTypes": null, + "id": 737, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11827:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11794:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11775:58:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 740, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11839:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 744, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 741, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11860:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11839:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 745, + "indexExpression": { + "argumentTypes": null, + "id": 743, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "11872:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11839:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 746, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11881:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 749, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 747, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11902:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11902:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11881:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 751, + "indexExpression": { + "argumentTypes": null, + "id": 750, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "11914:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11881:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "src": "11839:85:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 753, + "nodeType": "ExpressionStatement", + "src": "11839:85:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "11930:41:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 754, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "11930:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 757, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 755, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "11951:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11951:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11930:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 758, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11930:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "11930:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "12009:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12009:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 764, + "name": "url", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "12021:3:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 765, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "12026:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 761, + "name": "OffchainStorageRootRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "11982:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes memory,uint256)" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11982:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 767, + "nodeType": "EmitStatement", + "src": "11977:55:1" + } + ] + }, + "documentation": "@notice Removes a CIP8 storage root.\n@param index The index of the storage root to be removed in the account's\nlist of storage roots.\n@dev The order of storage roots may change after this operation (the last\nstorage root will be moved to `index`), be aware of this if removing\nmultiple storage roots at a time.", + "id": 769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeStorageRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 699, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 769, + "src": "11529:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11528:15:1" + }, + "returnParameters": { + "id": 701, + "nodeType": "ParameterList", + "parameters": [], + "src": "11553:0:1" + }, + "scope": 2783, + "src": "11502:535:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 898, + "nodeType": "Block", + "src": "12352:730:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 781, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12376:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 780, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "12366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12366:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12386:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 779, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "12358:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12358:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "12358:46:1" + }, + { + "assignments": [ + 787 + ], + "declarations": [ + { + "constant": false, + "id": 787, + "name": "numberRoots", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12410:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 792, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 788, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12432:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 790, + "indexExpression": { + "argumentTypes": null, + "id": 789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12453:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12432:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 791, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12432:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12410:58:1" + }, + { + "assignments": [ + 794 + ], + "declarations": [ + { + "constant": false, + "id": 794, + "name": "totalLength", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12474:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 796, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12474:23:1" + }, + { + "body": { + "id": 819, + "nodeType": "Block", + "src": "12545:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 807, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12553:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 810, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12583:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 812, + "indexExpression": { + "argumentTypes": null, + "id": 811, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12583:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 814, + "indexExpression": { + "argumentTypes": null, + "id": 813, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12613:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12583:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12583:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 808, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12567:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "12567:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12567:56:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12553:70:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 818, + "nodeType": "ExpressionStatement", + "src": "12553:70:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 801, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12523:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 802, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12527:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12523:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 820, + "initializationExpression": { + "assignments": [ + 798 + ], + "declarations": [ + { + "constant": false, + "id": 798, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 820, + "src": "12508:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12508:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 800, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12520:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12508:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12540:3:1", + "subExpression": { + "argumentTypes": null, + "id": 804, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "12540:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 806, + "nodeType": "ExpressionStatement", + "src": "12540:3:1" + }, + "nodeType": "ForStatement", + "src": "12503:127:1" + }, + { + "assignments": [ + 822 + ], + "declarations": [ + { + "constant": false, + "id": 822, + "name": "concatenated", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12636:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 821, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 827, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 825, + "name": "totalLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "12674:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12664:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 823, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12668:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12664:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12636:50:1" + }, + { + "assignments": [ + 829 + ], + "declarations": [ + { + "constant": false, + "id": 829, + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12692:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12692:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 831, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12712:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12692:21:1" + }, + { + "assignments": [ + 835 + ], + "declarations": [ + { + "constant": false, + "id": 835, + "name": "lengths", + "nodeType": "VariableDeclaration", + "scope": 898, + "src": "12719:24:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 834, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12719:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 841, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 839, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12760:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12746:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12750:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 837, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12750:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12746:26:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12719:53:1" + }, + { + "body": { + "id": 892, + "nodeType": "Block", + "src": "12820:221:1", + "statements": [ + { + "assignments": [ + 853 + ], + "declarations": [ + { + "constant": false, + "id": 853, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "12828:18:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 852, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12828:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 859, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 854, + "name": "offchainStorageRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "12849:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$", + "typeString": "mapping(address => bytes storage ref[] storage ref)" + } + }, + "id": 856, + "indexExpression": { + "argumentTypes": null, + "id": 855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "12870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12849:29:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", + "typeString": "bytes storage ref[] storage ref" + } + }, + "id": 858, + "indexExpression": { + "argumentTypes": null, + "id": 857, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12879:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12849:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12828:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 860, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "12889:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 862, + "indexExpression": { + "argumentTypes": null, + "id": 861, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12897:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12889:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 863, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "12902:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12902:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12889:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 866, + "nodeType": "ExpressionStatement", + "src": "12889:24:1" + }, + { + "body": { + "id": 890, + "nodeType": "Block", + "src": "12962:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "concatenated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "12972:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "12985:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12972:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 882, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "12998:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 884, + "indexExpression": { + "argumentTypes": null, + "id": 883, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "13003:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12998:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "12972:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 886, + "nodeType": "ExpressionStatement", + "src": "12972:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "13015:11:1", + "subExpression": { + "argumentTypes": null, + "id": 887, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "13015:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 889, + "nodeType": "ExpressionStatement", + "src": "13015:11:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 871, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "12941:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 872, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "12945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 874, + "indexExpression": { + "argumentTypes": null, + "id": 873, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12953:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12945:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12941:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 891, + "initializationExpression": { + "assignments": [ + 868 + ], + "declarations": [ + { + "constant": false, + "id": 868, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 891, + "src": "12926:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 870, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12938:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12926:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12957:3:1", + "subExpression": { + "argumentTypes": null, + "id": 876, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 868, + "src": "12957:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 878, + "nodeType": "ExpressionStatement", + "src": "12957:3:1" + }, + "nodeType": "ForStatement", + "src": "12921:114:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 846, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12798:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 847, + "name": "numberRoots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12802:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12798:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 893, + "initializationExpression": { + "assignments": [ + 843 + ], + "declarations": [ + { + "constant": false, + "id": 843, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 893, + "src": "12783:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12783:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 845, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12795:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12783:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12815:3:1", + "subExpression": { + "argumentTypes": null, + "id": 849, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "12815:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 851, + "nodeType": "ExpressionStatement", + "src": "12815:3:1" + }, + "nodeType": "ForStatement", + "src": "12778:263:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 894, + "name": "concatenated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "13055:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 895, + "name": "lengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 835, + "src": "13069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 896, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13054:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(bytes memory,uint256[] memory)" + } + }, + "functionReturnParameters": 778, + "id": 897, + "nodeType": "Return", + "src": "13047:30:1" + } + ] + }, + "documentation": "@notice Returns the full list of offchain storage roots for an account.\n@param account The account whose storage roots to return.\n@return List of storage root URLs.", + "id": 899, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOffchainStorageRoots", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12266:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12265:17:1" + }, + "returnParameters": { + "id": 778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 774, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12318:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 773, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12318:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 777, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "12332:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 776, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12332:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12317:32:1" + }, + "scope": 2783, + "src": "12233:849:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 957, + "nodeType": "Block", + "src": "13579:407:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 908, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "13603:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13603:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 907, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "13593:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13593:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13616:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13585:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13585:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 913, + "nodeType": "ExpressionStatement", + "src": "13585:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 915, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13647:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13670:1:1", + "subdenomination": null, + "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": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13662:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13662:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13647:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42656e65666963696172792063616e6e6f74206265206164647265737320307830", + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13674:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0", + "typeString": "literal_string \"Beneficiary cannot be address 0x0\"" + }, + "value": "Beneficiary cannot be address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0", + "typeString": "literal_string \"Beneficiary cannot be address 0x0\"" + } + ], + "id": 914, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13639:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13639:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 922, + "nodeType": "ExpressionStatement", + "src": "13639:71:1" + }, + { + "assignments": [ + 926 + ], + "declarations": [ + { + "constant": false, + "id": 926, + "name": "f", + "nodeType": "VariableDeclaration", + "scope": 957, + "src": "13716:29:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 925, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "13716:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 929, + "name": "fraction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "13765:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 927, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "13748:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "13748:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13748:26:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13716:58:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 935, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "13794:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "13794:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 933, + "name": "f", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "13788:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lte", + "nodeType": "MemberAccess", + "referencedDeclaration": 3579, + "src": "13788:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (bool)" + } + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13788:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4672616374696f6e206d757374206e6f742062652067726561746572207468616e2031", + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13817:37:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe", + "typeString": "literal_string \"Fraction must not be greater than 1\"" + }, + "value": "Fraction must not be greater than 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe", + "typeString": "literal_string \"Fraction must not be greater than 1\"" + } + ], + "id": 932, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "13780:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13780:75:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 941, + "nodeType": "ExpressionStatement", + "src": "13780:75:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "13861:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 943, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "13880:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13880:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13861:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 947, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13912:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 948, + "name": "f", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "13925:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "id": 946, + "name": "PaymentDelegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "13894:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$", + "typeString": "type(struct Accounts.PaymentDelegation storage pointer)" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13894:33:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory", + "typeString": "struct Accounts.PaymentDelegation memory" + } + }, + "src": "13861:66:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "id": 951, + "nodeType": "ExpressionStatement", + "src": "13861:66:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 953, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "13959:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 954, + "name": "fraction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "13972:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 952, + "name": "PaymentDelegationSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "13938:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13938:43:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 956, + "nodeType": "EmitStatement", + "src": "13933:48:1" + } + ] + }, + "documentation": "@notice Sets validator payment delegation settings.\n@param beneficiary The address that should receive a portion of validator\npayments.\n@param fraction The fraction of the validator's payment that should be\ndiverted to `beneficiary` every epoch, given as FixidityLib value. Must not\nbe greater than 1.\n@dev Use `deletePaymentDelegation` to unset the payment delegation.", + "id": 958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setPaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 901, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "13533:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 903, + "name": "fraction", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "13554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13532:39:1" + }, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [], + "src": "13579:0:1" + }, + "scope": 2783, + "src": "13503:483:1", + "stateMutability": "nonpayable", + "superFunction": 9330, + "visibility": "public" + }, + { + "body": { + "id": 991, + "nodeType": "Block", + "src": "14144:198:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 963, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "14168:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14168:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 962, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "14158:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14158:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14181:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 961, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "14150:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14150:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 968, + "nodeType": "ExpressionStatement", + "src": "14150:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 969, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "14204:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 972, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 970, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "14223:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14223:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14204:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14263:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14255:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14286:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 977, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "14269:11:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "14269:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14269:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "id": 973, + "name": "PaymentDelegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "14237:17:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$", + "typeString": "type(struct Accounts.PaymentDelegation storage pointer)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14237:52:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory", + "typeString": "struct Accounts.PaymentDelegation memory" + } + }, + "src": "14204:85:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "14204:85:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14329:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14321:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14335:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 984, + "name": "PaymentDelegationSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "14300:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14300:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "EmitStatement", + "src": "14295:42:1" + } + ] + }, + "documentation": "@notice Removes a validator's payment delegation by setting benficiary and\nfraction to 0.", + "id": 992, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deletePaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [], + "src": "14134:2:1" + }, + "returnParameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [], + "src": "14144:0:1" + }, + "scope": 2783, + "src": "14102:240:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1015, + "nodeType": "Block", + "src": "14617:144:1", + "statements": [ + { + "assignments": [ + 1002 + ], + "declarations": [ + { + "constant": false, + "id": 1002, + "name": "delegation", + "nodeType": "VariableDeclaration", + "scope": 1015, + "src": "14623:36:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + }, + "typeName": { + "contractScope": null, + "id": 1001, + "name": "PaymentDelegation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 115, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1006, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1003, + "name": "paymentDelegations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "14662:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$", + "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)" + } + }, + "id": 1005, + "indexExpression": { + "argumentTypes": null, + "id": 1004, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "14681:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14662:27:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage", + "typeString": "struct Accounts.PaymentDelegation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14623:66:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1007, + "name": "delegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "14703:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation storage pointer" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "beneficiary", + "nodeType": "MemberAccess", + "referencedDeclaration": 112, + "src": "14703:22:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1009, + "name": "delegation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "14727:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr", + "typeString": "struct Accounts.PaymentDelegation storage pointer" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fraction", + "nodeType": "MemberAccess", + "referencedDeclaration": 114, + "src": "14727:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "14727:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14727:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1013, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14702:54:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 1000, + "id": 1014, + "nodeType": "Return", + "src": "14695:61:1" + } + ] + }, + "documentation": "@notice Gets validator payment delegation settings.\n@param account Account of the validator.\n@return Beneficiary address and fraction of payment delegated.", + "id": 1016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPaymentDelegation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 994, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14559:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14559:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14558:17:1" + }, + "returnParameters": { + "id": 1000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 997, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14599:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14599:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "14608:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14598:18:1" + }, + "scope": 2783, + "src": "14529:232:1", + "stateMutability": "view", + "superFunction": 9339, + "visibility": "external" + }, + { + "body": { + "id": 1139, + "nodeType": "Block", + "src": "15004:929:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1025, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15028:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15028:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1024, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "15018:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15018:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15041:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 1023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15010:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1030, + "nodeType": "ExpressionStatement", + "src": "15010:48:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1033, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15085:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1032, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "15072:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15072:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f7420617574686f72697a65206163636f756e74206173207369676e6572", + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15094:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b", + "typeString": "literal_string \"Cannot authorize account as signer\"" + }, + "value": "Cannot authorize account as signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b", + "typeString": "literal_string \"Cannot authorize account as signer\"" + } + ], + "id": 1031, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15064:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15064:67:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1037, + "nodeType": "ExpressionStatement", + "src": "15064:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1040, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15191:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15191:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1042, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15203:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1039, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "15152:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15152:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f742061207369676e657220666f722074686973206163636f756e74", + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15218:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4", + "typeString": "literal_string \"Not a signer for this account\"" + }, + "value": "Not a signer for this account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4", + "typeString": "literal_string \"Not a signer for this account\"" + } + ], + "id": 1038, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15137:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15137:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1046, + "nodeType": "ExpressionStatement", + "src": "15137:118:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15278:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15278:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1051, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15290:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1052, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15298:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1048, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "15269:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15269:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c74", + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15305:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff", + "typeString": "literal_string \"Must authorize signer before setting as default\"" + }, + "value": "Must authorize signer before setting as default" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff", + "typeString": "literal_string \"Must authorize signer before setting as default\"" + } + ], + "id": 1047, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "15261:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15261:94:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1056, + "nodeType": "ExpressionStatement", + "src": "15261:94:1" + }, + { + "assignments": [ + 1058 + ], + "declarations": [ + { + "constant": false, + "id": 1058, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "15362:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1057, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "15362:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1063, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1059, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "15388:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1062, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1060, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15397:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15397:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15388:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15362:46:1" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15431:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1064, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "15418:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15418:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1130, + "nodeType": "Block", + "src": "15764:111:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1114, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "15772:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1118, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15787:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15787:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15772:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1119, + "indexExpression": { + "argumentTypes": null, + "id": 1117, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15799:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15772:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1120, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15807:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15772:41:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1122, + "nodeType": "ExpressionStatement", + "src": "15772:41:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1124, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15843:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15843:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1126, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15855:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1127, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15863:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1123, + "name": "DefaultSignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "15826:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15826:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1129, + "nodeType": "EmitStatement", + "src": "15821:47:1" + } + ] + }, + "id": 1131, + "nodeType": "IfStatement", + "src": "15414:461:1", + "trueBody": { + "id": 1113, + "nodeType": "Block", + "src": "15438:320:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1067, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15450:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1068, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "15458:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15450:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1079, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15528:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1080, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "15536:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15528:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15620:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1092, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "15628:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "15620:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1103, + "nodeType": "IfStatement", + "src": "15616:82:1", + "trueBody": { + "id": 1102, + "nodeType": "Block", + "src": "15645:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1094, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15655:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "15655:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1099, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15683:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15655:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1101, + "nodeType": "ExpressionStatement", + "src": "15655:34:1" + } + ] + } + }, + "id": 1104, + "nodeType": "IfStatement", + "src": "15524:174:1", + "trueBody": { + "id": 1090, + "nodeType": "Block", + "src": "15555:55:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1082, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15565:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "15565:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1087, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15595:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15565:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1089, + "nodeType": "ExpressionStatement", + "src": "15565:36:1" + } + ] + } + }, + "id": 1105, + "nodeType": "IfStatement", + "src": "15446:252:1", + "trueBody": { + "id": 1078, + "nodeType": "Block", + "src": "15470:48:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1070, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "15480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1073, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "15480:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "15480:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1075, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15503:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15480:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "15480:29:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1107, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15726:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1109, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15738:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1110, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15746:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1106, + "name": "LegacySignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 277, + "src": "15710:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15710:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1112, + "nodeType": "EmitStatement", + "src": "15705:46:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1133, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "15903:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15903:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1135, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "15915:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1136, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "15923:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1132, + "name": "IndexedSignerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "15886:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15886:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1138, + "nodeType": "EmitStatement", + "src": "15881:47:1" + } + ] + }, + "documentation": "@notice Set the indexed signer for a specific role\n@param signer the address to set as default\n@param role the role to register a default signer for", + "id": 1140, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1018, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "14967:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14967:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1020, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "14983:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14983:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14966:30:1" + }, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [], + "src": "15004:0:1" + }, + "scope": 2783, + "src": "14941:992:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1182, + "nodeType": "Block", + "src": "16548:238:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1154, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16579:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1155, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16587:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1156, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1146, + "src": "16593:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1157, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1148, + "src": "16596:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1158, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "16599:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1153, + "name": "authorizeAddressWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2748, + "src": "16554:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16554:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1160, + "nodeType": "ExpressionStatement", + "src": "16554:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1161, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "16607:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1166, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1162, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16628:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16628:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16607:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1164, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16640:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16607:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1168, + "indexExpression": { + "argumentTypes": null, + "id": 1165, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16646:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16607:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16693:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16716:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1169, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "16656:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "16656:71:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "16607:120:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1174, + "nodeType": "ExpressionStatement", + "src": "16607:120:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1176, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16756:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16756:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1178, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "16768:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1179, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "16776:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1175, + "name": "SignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "16739:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16739:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1181, + "nodeType": "EmitStatement", + "src": "16734:47:1" + } + ] + }, + "documentation": "@notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n and `signer`.", + "id": 1183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeSignerWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1142, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16474:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16474:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1144, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16490:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1143, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1146, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1145, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16504:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1148, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16513:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1147, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1150, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1183, + "src": "16524:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1149, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16524:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16473:61:1" + }, + "returnParameters": { + "id": 1152, + "nodeType": "ParameterList", + "parameters": [], + "src": "16548:0:1" + }, + "scope": 2783, + "src": "16436:350:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1224, + "nodeType": "Block", + "src": "16927:224:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1197, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "16950:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1198, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "16958:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1199, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "16961:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1200, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "16964:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1196, + "name": "authorizeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "16933:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,uint8,bytes32,bytes32)" + } + }, + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16933:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1202, + "nodeType": "ExpressionStatement", + "src": "16933:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1203, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "16972:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1208, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "16993:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16993:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16972:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1209, + "indexExpression": { + "argumentTypes": null, + "id": 1206, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "17005:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16972:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1210, + "indexExpression": { + "argumentTypes": null, + "id": 1207, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "17011:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16972:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17058:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17081:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1211, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "17021:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "17021:71:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "16972:120:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1216, + "nodeType": "ExpressionStatement", + "src": "16972:120:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1218, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "17121:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17121:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "17133:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "17141:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1217, + "name": "SignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "17104:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17104:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1223, + "nodeType": "EmitStatement", + "src": "17099:47:1" + } + ] + }, + "documentation": null, + "id": 1225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1185, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16839:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16839:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1187, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16859:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1186, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1189, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16877:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1188, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16877:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1191, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16890:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1190, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16890:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1193, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "16905:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16833:85:1" + }, + "returnParameters": { + "id": 1195, + "nodeType": "ParameterList", + "parameters": [], + "src": "16927:0:1" + }, + "scope": 2783, + "src": "16790:361:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1257, + "nodeType": "Block", + "src": "17650:168:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1239, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17691:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1240, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "17699:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1241, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1229, + "src": "17711:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1242, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1231, + "src": "17714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1243, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "17717:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1238, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "17656:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17656:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1245, + "nodeType": "ExpressionStatement", + "src": "17656:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1247, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17742:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1248, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "17750:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1246, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "17725:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17725:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1250, + "nodeType": "ExpressionStatement", + "src": "17725:36:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1252, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "17794:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17794:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1254, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "17806:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1251, + "name": "VoteSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "17773:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17773:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1256, + "nodeType": "EmitStatement", + "src": "17768:45:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign votes on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1258, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1236, + "modifierName": { + "argumentTypes": null, + "id": 1235, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "17635:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "17635:12:1" + } + ], + "name": "authorizeVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1227, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17571:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17571:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1229, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17587:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1228, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "17587:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1231, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17596:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17596:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1233, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1258, + "src": "17607:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1232, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17607:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17570:47:1" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [], + "src": "17650:0:1" + }, + "scope": 2783, + "src": "17542:276:1", + "stateMutability": "nonpayable", + "superFunction": 9266, + "visibility": "external" + }, + { + "body": { + "id": 1301, + "nodeType": "Block", + "src": "18335:275:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1272, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18376:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1273, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "18384:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1274, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "18401:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1275, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "18404:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1276, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1266, + "src": "18407:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1271, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "18341:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18341:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1278, + "nodeType": "ExpressionStatement", + "src": "18341:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1280, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18432:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1281, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "18440:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1279, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "18415:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18415:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1283, + "nodeType": "ExpressionStatement", + "src": "18415:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18471:40:1", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1288, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "18500:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18500:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1285, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "18472:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18472:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isValidator", + "nodeType": "MemberAccess", + "referencedDeclaration": 31013, + "src": "18472:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18472:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572", + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18513:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2", + "typeString": "literal_string \"Cannot authorize validator signer\"" + }, + "value": "Cannot authorize validator signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2", + "typeString": "literal_string \"Cannot authorize validator signer\"" + } + ], + "id": 1284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "18463:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18463:86:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "18463:86:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1296, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "18586:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18586:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1298, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "18598:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1295, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "18560:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18560:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1300, + "nodeType": "EmitStatement", + "src": "18555:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1302, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1269, + "modifierName": { + "argumentTypes": null, + "id": 1268, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "18320:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18320:12:1" + } + ], + "name": "authorizeValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1260, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18256:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18256:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1262, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18272:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1261, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "18272:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1264, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18281:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1263, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18281:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1266, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "18292:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1265, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18292:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18255:47:1" + }, + "returnParameters": { + "id": 1270, + "nodeType": "ParameterList", + "parameters": [], + "src": "18335:0:1" + }, + "scope": 2783, + "src": "18222:388:1", + "stateMutability": "nonpayable", + "superFunction": 9277, + "visibility": "external" + }, + { + "body": { + "id": 1348, + "nodeType": "Block", + "src": "19260:325:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1318, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19301:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1319, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "19309:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1320, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "19326:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1321, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1308, + "src": "19329:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1322, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "19332:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1317, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "19266:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19266:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1324, + "nodeType": "ExpressionStatement", + "src": "19266:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1326, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19357:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1327, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "19365:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1325, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "19340:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19340:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "19340:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "19440:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19440:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1336, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19452:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1337, + "name": "ecdsaPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1312, + "src": "19460:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1331, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "19403:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19403:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateEcdsaPublicKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 30952, + "src": "19403:36:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,bytes memory) external returns (bool)" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19403:72:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c656420746f20757064617465204543445341207075626c6963206b6579", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19483:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98", + "typeString": "literal_string \"Failed to update ECDSA public key\"" + }, + "value": "Failed to update ECDSA public key" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98", + "typeString": "literal_string \"Failed to update ECDSA public key\"" + } + ], + "id": 1330, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "19388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19388:136:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "19388:136:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1343, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "19561:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19561:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1345, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "19573:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1342, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "19535:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19535:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1347, + "nodeType": "EmitStatement", + "src": "19530:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1349, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1315, + "modifierName": { + "argumentTypes": null, + "id": 1314, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "19247:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19247:12:1" + } + ], + "name": "authorizeValidatorSignerWithPublicKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19141:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19141:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1306, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19161:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1305, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "19161:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1308, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19174:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19174:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1310, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19189:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1309, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19189:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1312, + "name": "ecdsaPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "19204:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1311, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19204:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19135:102:1" + }, + "returnParameters": { + "id": 1316, + "nodeType": "ParameterList", + "parameters": [], + "src": "19260:0:1" + }, + "scope": 2783, + "src": "19089:496:1", + "stateMutability": "nonpayable", + "superFunction": 9290, + "visibility": "external" + }, + { + "body": { + "id": 1401, + "nodeType": "Block", + "src": "20557:341:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1369, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20598:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1370, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "20606:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1371, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1353, + "src": "20623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1372, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "20626:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1373, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "20629:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1368, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "20563:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20563:68:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1375, + "nodeType": "ExpressionStatement", + "src": "20563:68:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1377, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20654:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1378, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "20662:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1376, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "20637:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20637:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1380, + "nodeType": "ExpressionStatement", + "src": "20637:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1385, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "20733:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20733:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1387, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20745:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1388, + "name": "ecdsaPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "20753:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 1389, + "name": "blsPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "20769:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 1390, + "name": "blsPop", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "20783:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1382, + "name": "getValidators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8614, + "src": "20700:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$", + "typeString": "function () view returns (contract IValidators)" + } + }, + "id": 1383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20700:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IValidators_$31061", + "typeString": "contract IValidators" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePublicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 30967, + "src": "20700:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,bytes memory,bytes memory,bytes memory) external returns (bool)" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20700:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c656420746f207570646174652076616c696461746f72206b657973", + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20798:33:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb", + "typeString": "literal_string \"Failed to update validator keys\"" + }, + "value": "Failed to update validator keys" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb", + "typeString": "literal_string \"Failed to update validator keys\"" + } + ], + "id": 1381, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "20685:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20685:152:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1394, + "nodeType": "ExpressionStatement", + "src": "20685:152:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1396, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "20874:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1398, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "20886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1395, + "name": "ValidatorSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "20848:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20848:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1400, + "nodeType": "EmitStatement", + "src": "20843:50:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n proof of possession. 96 bytes.\n@param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n account address. 48 bytes.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1402, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1366, + "modifierName": { + "argumentTypes": null, + "id": 1365, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "20544:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20544:12:1" + } + ], + "name": "authorizeValidatorSignerWithKeys", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1351, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20378:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20378:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1353, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20398:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1352, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "20398:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1355, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20411:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1354, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20411:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1357, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20426:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1356, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20426:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1359, + "name": "ecdsaPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20441:29:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1358, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20441:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1361, + "name": "blsPublicKey", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20476:27:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1360, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20476:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1363, + "name": "blsPop", + "nodeType": "VariableDeclaration", + "scope": 1402, + "src": "20509:21:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1362, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20509:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20372:162:1" + }, + "returnParameters": { + "id": 1367, + "nodeType": "ParameterList", + "parameters": [], + "src": "20557:0:1" + }, + "scope": 2783, + "src": "20331:567:1", + "stateMutability": "nonpayable", + "superFunction": 9307, + "visibility": "external" + }, + { + "body": { + "id": 1432, + "nodeType": "Block", + "src": "21386:189:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1414, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21427:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1415, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "21435:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1416, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "21454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1417, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "21457:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1418, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "21460:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1413, + "name": "legacyAuthorizeSignerWithSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1225, + "src": "21392:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32,uint8,bytes32,bytes32)" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21392:70:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1420, + "nodeType": "ExpressionStatement", + "src": "21392:70:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1422, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21485:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1423, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "21493:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1421, + "name": "setIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "21468:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21468:43:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1425, + "nodeType": "ExpressionStatement", + "src": "21468:43:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1427, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21551:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21551:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1429, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "21563:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1426, + "name": "AttestationSignerAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "21523:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21523:47:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1431, + "nodeType": "EmitStatement", + "src": "21518:52:1" + } + ] + }, + "documentation": "@notice Authorizes an address to sign attestations on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.", + "id": 1433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1404, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21332:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21332:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1406, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21348:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1405, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "21348:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1408, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21357:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21357:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1410, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "21368:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1409, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21368:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21331:47:1" + }, + "returnParameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [], + "src": "21386:0:1" + }, + "scope": 2783, + "src": "21296:279:1", + "stateMutability": "nonpayable", + "superFunction": 9318, + "visibility": "public" + }, + { + "body": { + "id": 1482, + "nodeType": "Block", + "src": "21859:404:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1442, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21883:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21883:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1441, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "21873:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21873:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21896:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 1440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "21865:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21865:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "21865:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1450, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "21948:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1449, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "21935:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21935:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1453, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "21998:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1455, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22010:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1452, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "21959:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21959:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21935:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572", + "id": 1458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22025:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + }, + "value": "Cannot re-authorize address signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "21920:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21920:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1460, + "nodeType": "ExpressionStatement", + "src": "21920:147:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1461, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22074:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1466, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1462, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22095:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22095:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22074:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1464, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "22107:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22074:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1468, + "indexExpression": { + "argumentTypes": null, + "id": 1465, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22113:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22074:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22160:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22183:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1469, + "name": "SignerAuthorization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "22123:19:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$", + "typeString": "type(struct Accounts.SignerAuthorization storage pointer)" + } + }, + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "started", + "completed" + ], + "nodeType": "FunctionCall", + "src": "22123:72:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory", + "typeString": "struct Accounts.SignerAuthorization memory" + } + }, + "src": "22074:121:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1474, + "nodeType": "ExpressionStatement", + "src": "22074:121:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1476, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22233:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22233:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1478, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "22245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1479, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "22253:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1475, + "name": "SignerAuthorizationStarted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "22206:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22206:52:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1481, + "nodeType": "EmitStatement", + "src": "22201:57:1" + } + ] + }, + "documentation": "@notice Begin the process of authorizing an address to sign on behalf of the account\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.", + "id": 1483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1435, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "21822:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21822:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1437, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "21838:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1436, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21838:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21821:30:1" + }, + "returnParameters": { + "id": 1439, + "nodeType": "ParameterList", + "parameters": [], + "src": "21859:0:1" + }, + "scope": 2783, + "src": "21797:466:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1552, + "nodeType": "Block", + "src": "22568:524:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1492, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22592:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1491, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "22582:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22582:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 1494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22602:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 1490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22574:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22574:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1496, + "nodeType": "ExpressionStatement", + "src": "22574:46:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22654:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22654:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1498, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "22641:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22641:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1503, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1504, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22717:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22717:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1502, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "22669:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22669:59:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22641:87:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572", + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22736:36:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + }, + "value": "Cannot re-authorize address signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd", + "typeString": "literal_string \"Cannot re-authorize address signer\"" + } + ], + "id": 1497, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22626:152:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1510, + "nodeType": "ExpressionStatement", + "src": "22626:152:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1512, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22799:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1514, + "indexExpression": { + "argumentTypes": null, + "id": 1513, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22820:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "22829:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1519, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1517, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22835:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22799:47:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1520, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "started", + "nodeType": "MemberAccess", + "referencedDeclaration": 94, + "src": "22799:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22858:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "22799:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e657220617574686f72697a6174696f6e206e6f742073746172746564", + "id": 1523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22870:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7", + "typeString": "literal_string \"Signer authorization not started\"" + }, + "value": "Signer authorization not started" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7", + "typeString": "literal_string \"Signer authorization not started\"" + } + ], + "id": 1511, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "22784:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22784:126:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1525, + "nodeType": "ExpressionStatement", + "src": "22784:126:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1526, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "22917:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1529, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1527, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22930:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22930:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22917:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1530, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22944:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22917:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1532, + "nodeType": "ExpressionStatement", + "src": "22917:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1533, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "22957:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1538, + "indexExpression": { + "argumentTypes": null, + "id": 1534, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "22978:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1539, + "indexExpression": { + "argumentTypes": null, + "id": 1535, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "22987:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1540, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "22993:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22993:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22957:47:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "completed", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "22957:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23017:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "22957:64:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1544, + "nodeType": "ExpressionStatement", + "src": "22957:64:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1546, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "23061:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1547, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "23070:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23070:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1549, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "23082:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1545, + "name": "SignerAuthorizationCompleted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "23032:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23032:55:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1551, + "nodeType": "EmitStatement", + "src": "23027:60:1" + } + ] + }, + "documentation": "@notice Finish the process of authorizing an address to sign on behalf of the account. \n@param account The address of account that authorized signing.\n@param role The role to finish authorizing for.", + "id": 1553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "completeSignerAuthorization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1485, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "22530:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22530:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1487, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "22547:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22547:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "22529:31:1" + }, + "returnParameters": { + "id": 1489, + "nodeType": "ParameterList", + "parameters": [], + "src": "22568:0:1" + }, + "scope": 2783, + "src": "22493:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1612, + "nodeType": "Block", + "src": "23477:381:1", + "statements": [ + { + "assignments": [ + 1565 + ], + "declarations": [ + { + "constant": false, + "id": 1565, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1612, + "src": "23483:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1564, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "23483:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1569, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1566, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "23509:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1568, + "indexExpression": { + "argumentTypes": null, + "id": 1567, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "23518:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23509:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23483:44:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1570, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23537:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1571, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "23545:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23537:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1573, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23564:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23564:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1575, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "23564:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1576, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23593:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23564:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23537:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1582, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23637:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1583, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "23645:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1585, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23666:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23666:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1587, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "23666:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1588, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23697:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23666:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23637:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1594, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "23741:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1595, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "23749:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "23741:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1597, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "23763:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "23763:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "23763:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1600, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "23787:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23763:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23741:52:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1608, + "nodeType": "Block", + "src": "23827:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23842:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1563, + "id": 1607, + "nodeType": "Return", + "src": "23835:12:1" + } + ] + }, + "id": 1609, + "nodeType": "IfStatement", + "src": "23737:117:1", + "trueBody": { + "id": 1605, + "nodeType": "Block", + "src": "23795:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23810:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1604, + "nodeType": "Return", + "src": "23803:11:1" + } + ] + } + }, + "id": 1610, + "nodeType": "IfStatement", + "src": "23633:221:1", + "trueBody": { + "id": 1593, + "nodeType": "Block", + "src": "23705:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23720:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1592, + "nodeType": "Return", + "src": "23713:11:1" + } + ] + } + }, + "id": 1611, + "nodeType": "IfStatement", + "src": "23533:321:1", + "trueBody": { + "id": 1581, + "nodeType": "Block", + "src": "23601:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23616:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1563, + "id": 1580, + "nodeType": "Return", + "src": "23609:11:1" + } + ] + } + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as the legacy signer for role\n@param _account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1555, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23388:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23388:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1557, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23406:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23406:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1559, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23422:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1558, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23422:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "23387:48:1" + }, + "returnParameters": { + "id": 1563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1613, + "src": "23469:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23469:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "23468:6:1" + }, + "scope": 2783, + "src": "23364:494:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1632, + "nodeType": "Block", + "src": "24243:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1624, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "24256:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1626, + "indexExpression": { + "argumentTypes": null, + "id": 1625, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "24271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24256:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1628, + "indexExpression": { + "argumentTypes": null, + "id": 1627, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1619, + "src": "24280:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24256:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1629, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "24289:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24256:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1623, + "id": 1631, + "nodeType": "Return", + "src": "24249:46:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as the default signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1615, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24155:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24155:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1617, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24172:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24172:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1619, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24188:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1618, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24188:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24154:47:1" + }, + "returnParameters": { + "id": 1623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1622, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1633, + "src": "24235:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1621, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24235:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24234:6:1" + }, + "scope": 2783, + "src": "24130:170:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1659, + "nodeType": "Block", + "src": "24684:139:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1645, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24716:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1644, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "24703:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24703:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1653, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "24796:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1654, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1637, + "src": "24805:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1655, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24813:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1652, + "name": "isDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "24780:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24780:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "24703:115:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1648, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "24747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1649, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1637, + "src": "24756:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1650, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "24764:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1647, + "name": "isLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1613, + "src": "24732:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24732:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1643, + "id": 1658, + "nodeType": "Return", + "src": "24690:128:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as an indexed signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1660, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24596:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24596:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1637, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24613:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24613:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1639, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24629:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1638, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24595:47:1" + }, + "returnParameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1642, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1660, + "src": "24676:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1641, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24675:6:1" + }, + "scope": 2783, + "src": "24571:252:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1693, + "nodeType": "Block", + "src": "25177:161:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1672, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1673, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25220:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1674, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1666, + "src": "25228:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1671, + "name": "isLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1613, + "src": "25196:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25196:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1676, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "25244:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1678, + "indexExpression": { + "argumentTypes": null, + "id": 1677, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25265:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:29:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1680, + "indexExpression": { + "argumentTypes": null, + "id": 1679, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1666, + "src": "25274:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1682, + "indexExpression": { + "argumentTypes": null, + "id": 1681, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25280:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25244:43:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "id": 1683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "completed", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "25244:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1684, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "25301:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1686, + "indexExpression": { + "argumentTypes": null, + "id": 1685, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "25314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25301:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1687, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "25325:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25301:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "25244:88:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1690, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "25243:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "25196:137:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1670, + "id": 1692, + "nodeType": "Return", + "src": "25183:150:1" + } + ] + }, + "documentation": "@notice Whether or not the signer has been registered as a signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1662, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25103:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25103:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1664, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25120:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25120:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1666, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25136:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25136:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25102:47:1" + }, + "returnParameters": { + "id": 1670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1694, + "src": "25171:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1668, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25170:6:1" + }, + "scope": 2783, + "src": "25085:253:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1726, + "nodeType": "Block", + "src": "25508:168:1", + "statements": [ + { + "assignments": [ + 1700 + ], + "declarations": [ + { + "constant": false, + "id": 1700, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1726, + "src": "25514:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25514:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1707, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1701, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "25531:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1704, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1702, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25546:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25546:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25531:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1706, + "indexExpression": { + "argumentTypes": null, + "id": 1705, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25558:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25531:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25514:49:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1708, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "25569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 1712, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1709, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25584:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25584:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25569:26:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1713, + "indexExpression": { + "argumentTypes": null, + "id": 1711, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25596:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "25569:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25612:1:1", + "subdenomination": null, + "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": 1714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25604:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "25569:45:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1718, + "nodeType": "ExpressionStatement", + "src": "25569:45:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "25646:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25646:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1722, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1700, + "src": "25658:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1723, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "25666:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1719, + "name": "DefaultSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "25625:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25625:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1725, + "nodeType": "EmitStatement", + "src": "25620:51:1" + } + ] + }, + "documentation": "@notice Removes the signer for a default role.\n@param role The role that has been authorized.", + "id": 1727, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1696, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1727, + "src": "25487:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1695, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25487:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25486:14:1" + }, + "returnParameters": { + "id": 1698, + "nodeType": "ParameterList", + "parameters": [], + "src": "25508:0:1" + }, + "scope": 2783, + "src": "25458:218:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1812, + "nodeType": "Block", + "src": "25967:514:1", + "statements": [ + { + "assignments": [ + 1733 + ], + "declarations": [ + { + "constant": false, + "id": 1733, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1812, + "src": "25973:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 1732, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "25973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1738, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1734, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "25999:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 1737, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1735, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26008:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26008:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25999:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25973:46:1" + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1812, + "src": "26026:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26026:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1741, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "26026:14:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1742, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26050:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1743, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "26058:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26050:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1762, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26180:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1763, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "26188:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26180:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1782, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26316:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1783, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "26324:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "26316:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1802, + "nodeType": "IfStatement", + "src": "26312:109:1", + "trueBody": { + "id": 1801, + "nodeType": "Block", + "src": "26336:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1785, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1786, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26353:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1787, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26353:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "26353:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26344:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1790, + "nodeType": "ExpressionStatement", + "src": "26344:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1791, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26381:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26381:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "26381:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26412:1:1", + "subdenomination": null, + "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": 1796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26404:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26381:33:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1800, + "nodeType": "ExpressionStatement", + "src": "26381:33:1" + } + ] + } + }, + "id": 1803, + "nodeType": "IfStatement", + "src": "26176:245:1", + "trueBody": { + "id": 1781, + "nodeType": "Block", + "src": "26207:99:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1765, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26215:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1766, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26224:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26224:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "26224:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26215:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1770, + "nodeType": "ExpressionStatement", + "src": "26215:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1771, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26259:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26259:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "26259:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26297:1:1", + "subdenomination": null, + "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": 1776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26289:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26259:40:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1780, + "nodeType": "ExpressionStatement", + "src": "26259:40:1" + } + ] + } + }, + "id": 1804, + "nodeType": "IfStatement", + "src": "26046:375:1", + "trueBody": { + "id": 1761, + "nodeType": "Block", + "src": "26075:95:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1745, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26083:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1746, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26092:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26092:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "26092:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26083:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1750, + "nodeType": "ExpressionStatement", + "src": "26083:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1751, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "26125:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 1754, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "26125:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "26125:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26161:1:1", + "subdenomination": null, + "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": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26153:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26153:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26125:38:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1760, + "nodeType": "ExpressionStatement", + "src": "26125:38:1" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1806, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26451:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26451:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1808, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "26463:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1809, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "26471:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1805, + "name": "LegacySignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "26431:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26431:45:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1811, + "nodeType": "EmitStatement", + "src": "26426:50:1" + } + ] + }, + "documentation": "@notice Remove one of the Validator, Attestation or \nVote signers from an account. Should only be called from\nmethods that check the role is a legacy signer.\n@param role The role that has been authorized.", + "id": 1813, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1729, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1813, + "src": "25945:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1728, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25944:14:1" + }, + "returnParameters": { + "id": 1731, + "nodeType": "ParameterList", + "parameters": [], + "src": "25967:0:1" + }, + "scope": 2783, + "src": "25917:564:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1844, + "nodeType": "Block", + "src": "26679:205:1", + "statements": [ + { + "assignments": [ + 1819 + ], + "declarations": [ + { + "constant": false, + "id": 1819, + "name": "oldSigner", + "nodeType": "VariableDeclaration", + "scope": 1844, + "src": "26685:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1818, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26685:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1825, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1821, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26722:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1823, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26734:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1820, + "name": "getIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "26705:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26705:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26685:54:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1827, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26758:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1826, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "26745:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26745:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1833, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26813:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1832, + "name": "removeDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1727, + "src": "26793:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26793:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "26745:73:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26785:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1829, + "name": "removeLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1813, + "src": "26766:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26766:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1836, + "nodeType": "ExpressionStatement", + "src": "26745:73:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1838, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "26851:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26851:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1840, + "name": "oldSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "26863:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1841, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "26874:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1837, + "name": "IndexedSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "26830:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1843, + "nodeType": "EmitStatement", + "src": "26825:54:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized and indexed signer \nfor a specific role\n@param role The role of the signer.", + "id": 1845, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1815, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1845, + "src": "26658:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1814, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26658:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26657:14:1" + }, + "returnParameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [], + "src": "26679:0:1" + }, + "scope": 2783, + "src": "26629:255:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1881, + "nodeType": "Block", + "src": "27187:207:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1853, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27213:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27213:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1855, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27225:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1856, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27233:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1852, + "name": "isIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "27197:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27197:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1863, + "nodeType": "IfStatement", + "src": "27193:87:1", + "trueBody": { + "id": 1862, + "nodeType": "Block", + "src": "27240:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1859, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1858, + "name": "removeIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1845, + "src": "27248:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27248:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1861, + "nodeType": "ExpressionStatement", + "src": "27248:25:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "27286:53:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1864, + "name": "signerAuthorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 137, + "src": "27293:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))" + } + }, + "id": 1867, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1865, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27314:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27314:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27293:32:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))" + } + }, + "id": 1869, + "indexExpression": { + "argumentTypes": null, + "id": 1868, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27326:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27293:38:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$", + "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)" + } + }, + "id": 1871, + "indexExpression": { + "argumentTypes": null, + "id": 1870, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27332:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "27293:46:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage", + "typeString": "struct Accounts.SignerAuthorization storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1873, + "nodeType": "ExpressionStatement", + "src": "27286:53:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1875, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27364:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27364:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1877, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1847, + "src": "27376:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1878, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "27384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1874, + "name": "SignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 293, + "src": "27350:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,address,bytes32)" + } + }, + "id": 1879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27350:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1880, + "nodeType": "EmitStatement", + "src": "27345:44:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized signer for a specific role and \nif the signer is indexed, remove that as well.\n@param signer The address of the signer.\n@param role The role that has been authorized.", + "id": 1882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1847, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1882, + "src": "27150:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27150:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1849, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1882, + "src": "27166:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1848, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27166:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27149:30:1" + }, + "returnParameters": { + "id": 1851, + "nodeType": "ParameterList", + "parameters": [], + "src": "27187:0:1" + }, + "scope": 2783, + "src": "27128:266:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1904, + "nodeType": "Block", + "src": "27600:153:1", + "statements": [ + { + "assignments": [ + 1886 + ], + "declarations": [ + { + "constant": false, + "id": 1886, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1904, + "src": "27606:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27606:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1892, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27639:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27639:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "27651:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1887, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "27623:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27623:39:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27606:56:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1894, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1886, + "src": "27681:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1895, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "27689:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1893, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "27668:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27668:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1897, + "nodeType": "ExpressionStatement", + "src": "27668:32:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1899, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "27729:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27729:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1901, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1886, + "src": "27741:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1898, + "name": "VoteSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 231, + "src": "27711:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27711:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1903, + "nodeType": "EmitStatement", + "src": "27706:42:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized vote signer for the account.\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1905, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1883, + "nodeType": "ParameterList", + "parameters": [], + "src": "27590:2:1" + }, + "returnParameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [], + "src": "27600:0:1" + }, + "scope": 2783, + "src": "27565:188:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1927, + "nodeType": "Block", + "src": "27968:168:1", + "statements": [ + { + "assignments": [ + 1909 + ], + "declarations": [ + { + "constant": false, + "id": 1909, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1927, + "src": "27974:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27974:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1911, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28007:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28007:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1913, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "28019:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1910, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "27991:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27991:44:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27974:61:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1917, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "28054:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1918, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "28062:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1916, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "28041:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28041:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1920, + "nodeType": "ExpressionStatement", + "src": "28041:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1922, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28112:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28112:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1924, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "28124:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1921, + "name": "ValidatorSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "28089:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28089:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1926, + "nodeType": "EmitStatement", + "src": "28084:47:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized validator signer for the account\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1928, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1906, + "nodeType": "ParameterList", + "parameters": [], + "src": "27958:2:1" + }, + "returnParameters": { + "id": 1907, + "nodeType": "ParameterList", + "parameters": [], + "src": "27968:0:1" + }, + "scope": 2783, + "src": "27928:208:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1950, + "nodeType": "Block", + "src": "28355:174:1", + "statements": [ + { + "assignments": [ + 1932 + ], + "declarations": [ + { + "constant": false, + "id": 1932, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "28361:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28361:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1938, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1934, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28394:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28394:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1936, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "28406:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1933, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "28378:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28378:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28361:63:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1940, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "28443:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1941, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "28451:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1939, + "name": "removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "28430:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28430:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1943, + "nodeType": "ExpressionStatement", + "src": "28430:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1945, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "28505:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28505:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1947, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "28517:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1944, + "name": "AttestationSignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 225, + "src": "28480:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28480:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1949, + "nodeType": "EmitStatement", + "src": "28475:49:1" + } + ] + }, + "documentation": "@notice Removes the currently authorized attestation signer for the account\nNote that the signers cannot be reauthorized after they have been removed.", + "id": 1951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1929, + "nodeType": "ParameterList", + "parameters": [], + "src": "28345:2:1" + }, + "returnParameters": { + "id": 1930, + "nodeType": "ParameterList", + "parameters": [], + "src": "28355:0:1" + }, + "scope": 2783, + "src": "28313:216:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1993, + "nodeType": "Block", + "src": "28628:269:1", + "statements": [ + { + "assignments": [ + 1961 + ], + "declarations": [ + { + "constant": false, + "id": 1961, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1993, + "src": "28634:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28634:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1965, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1962, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "28652:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1964, + "indexExpression": { + "argumentTypes": null, + "id": 1963, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28665:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28652:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28634:38:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1966, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28701:1:1", + "subdenomination": null, + "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": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28693:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28693:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "28682:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1983, + "nodeType": "IfStatement", + "src": "28678:145:1", + "trueBody": { + "id": 1982, + "nodeType": "Block", + "src": "28705:118:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1973, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28730:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1974, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28739:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1975, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1955, + "src": "28747:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1972, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "28721:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,address,bytes32) view returns (bool)" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28721:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c65", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28754:39:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682", + "typeString": "literal_string \"not active authorized signer for role\"" + }, + "value": "not active authorized signer for role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682", + "typeString": "literal_string \"not active authorized signer for role\"" + } + ], + "id": 1971, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "28713:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28713:81:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "28713:81:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1980, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "28809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1959, + "id": 1981, + "nodeType": "Return", + "src": "28802:14:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1986, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28847:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1985, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "28837:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28837:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6e6f7420616e206163636f756e74", + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28856:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484", + "typeString": "literal_string \"not an account\"" + }, + "value": "not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484", + "typeString": "literal_string \"not an account\"" + } + ], + "id": 1984, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "28829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28829:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1990, + "nodeType": "ExpressionStatement", + "src": "28829:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 1991, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28886:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1959, + "id": 1992, + "nodeType": "Return", + "src": "28879:13:1" + } + ] + }, + "documentation": null, + "id": 1994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signerToAccountWithRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1953, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28566:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28566:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1955, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28582:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1954, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28565:30:1" + }, + "returnParameters": { + "id": 1959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1958, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "28619:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28619:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28618:9:1" + }, + "scope": 2783, + "src": "28533:364:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2006, + "nodeType": "Block", + "src": "29277:68:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2002, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1996, + "src": "29314:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2003, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "29322:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2001, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "29290:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29290:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2000, + "id": 2005, + "nodeType": "Return", + "src": "29283:57:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized attestation signer.\n@dev Fails if the `signer` is not an account or currently authorized attestation signer.\n@return The associated account.", + "id": 2007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attestationSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1996, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "29229:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29229:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29228:16:1" + }, + "returnParameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "29268:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29268:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29267:9:1" + }, + "scope": 2783, + "src": "29193:152:1", + "stateMutability": "view", + "superFunction": 9126, + "visibility": "external" + }, + { + "body": { + "id": 2019, + "nodeType": "Block", + "src": "29709:66:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2015, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2009, + "src": "29746:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2016, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "29754:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2014, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "29722:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29722:48:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2013, + "id": 2018, + "nodeType": "Return", + "src": "29715:55:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of an account or currently authorized validator signer.\n@dev Fails if the `signer` is not an account or currently authorized validator.\n@return The associated account.", + "id": 2020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "validatorSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2009, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "29663:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29663:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29662:16:1" + }, + "returnParameters": { + "id": 2013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2012, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "29700:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29700:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29699:9:1" + }, + "scope": 2783, + "src": "29629:146:1", + "stateMutability": "view", + "superFunction": 9119, + "visibility": "public" + }, + { + "body": { + "id": 2032, + "nodeType": "Block", + "src": "30134:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2028, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "30171:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2029, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "30179:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2027, + "name": "signerToAccountWithRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "30147:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30147:43:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2026, + "id": 2031, + "nodeType": "Return", + "src": "30140:50:1" + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized vote signer.\n@dev Fails if the `signer` is not an account or currently authorized vote signer.\n@return The associated account.", + "id": 2033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "voteSignerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2022, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2033, + "src": "30086:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30086:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30085:16:1" + }, + "returnParameters": { + "id": 2026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2025, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2033, + "src": "30125:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30125:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30124:9:1" + }, + "scope": 2783, + "src": "30057:138:1", + "stateMutability": "view", + "superFunction": 9112, + "visibility": "external" + }, + { + "body": { + "id": 2065, + "nodeType": "Block", + "src": "30542:229:1", + "statements": [ + { + "assignments": [ + 2041 + ], + "declarations": [ + { + "constant": false, + "id": 2041, + "name": "authorizingAccount", + "nodeType": "VariableDeclaration", + "scope": 2065, + "src": "30548:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30548:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2045, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2042, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "30577:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2044, + "indexExpression": { + "argumentTypes": null, + "id": 2043, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30590:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30577:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30548:49:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2046, + "name": "authorizingAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2041, + "src": "30607:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30637:1:1", + "subdenomination": null, + "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": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30629:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30607:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2063, + "nodeType": "Block", + "src": "30687:80:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2056, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30713:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2055, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "30703:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30703:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e206163636f756e74", + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30722:16:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + }, + "value": "Not an account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3", + "typeString": "literal_string \"Not an account\"" + } + ], + "id": 2054, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "30695:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30695:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2060, + "nodeType": "ExpressionStatement", + "src": "30695:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2061, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "30754:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2039, + "id": 2062, + "nodeType": "Return", + "src": "30747:13:1" + } + ] + }, + "id": 2064, + "nodeType": "IfStatement", + "src": "30603:164:1", + "trueBody": { + "id": 2053, + "nodeType": "Block", + "src": "30641:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "authorizingAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2041, + "src": "30656:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2039, + "id": 2052, + "nodeType": "Return", + "src": "30649:25:1" + } + ] + } + } + ] + }, + "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or previously authorized signer.\n@dev Fails if the `signer` is not an account or previously authorized signer.\n@return The associated account.", + "id": 2066, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signerToAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2036, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2035, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "30494:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30494:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30493:16:1" + }, + "returnParameters": { + "id": 2039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2038, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "30533:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30532:9:1" + }, + "scope": 2783, + "src": "30469:302:1", + "stateMutability": "view", + "superFunction": 9133, + "visibility": "external" + }, + { + "body": { + "id": 2085, + "nodeType": "Block", + "src": "30963:92:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2073, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "30976:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2074, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "30984:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "30976:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2076, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "30998:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2077, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "31006:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "30998:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30976:45:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2080, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "31025:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2081, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "31033:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31025:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30976:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2072, + "id": 2084, + "nodeType": "Return", + "src": "30969:81:1" + } + ] + }, + "documentation": "@notice Checks whether the role is one of Vote, Validator or Attestation\n@param role The role to check", + "id": 2086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isLegacyRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2068, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "30922:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2067, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30921:14:1" + }, + "returnParameters": { + "id": 2072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2071, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "30957:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2070, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30957:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30956:6:1" + }, + "scope": 2783, + "src": "30900:155:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2153, + "nodeType": "Block", + "src": "31396:439:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2097, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31423:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2096, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "31410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31410:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526f6c65206973206e6f742061206c6567616379207369676e6572", + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31430:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1", + "typeString": "literal_string \"Role is not a legacy signer\"" + }, + "value": "Role is not a legacy signer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1", + "typeString": "literal_string \"Role is not a legacy signer\"" + } + ], + "id": 2095, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "31402:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31402:58:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2101, + "nodeType": "ExpressionStatement", + "src": "31402:58:1" + }, + { + "assignments": [ + 2103 + ], + "declarations": [ + { + "constant": false, + "id": 2103, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "31467:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + }, + "typeName": { + "contractScope": null, + "id": 2102, + "name": "Account", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 110, + "src": "31467:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2107, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2104, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "31493:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2106, + "indexExpression": { + "argumentTypes": null, + "id": 2105, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "31502:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31493:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31467:44:1" + }, + { + "assignments": [ + 2109 + ], + "declarations": [ + { + "constant": false, + "id": 2109, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "31517:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31517:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2110, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "31517:14:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2111, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31541:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2112, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "31549:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31541:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2121, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31625:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2122, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "31633:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31625:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2131, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "31713:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2132, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "31721:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "31713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2141, + "nodeType": "IfStatement", + "src": "31709:68:1", + "trueBody": { + "id": 2140, + "nodeType": "Block", + "src": "31733:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2134, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31741:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31750:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31750:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "vote", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "31750:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31741:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2139, + "nodeType": "ExpressionStatement", + "src": "31741:29:1" + } + ] + } + }, + "id": 2142, + "nodeType": "IfStatement", + "src": "31621:156:1", + "trueBody": { + "id": 2130, + "nodeType": "Block", + "src": "31652:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2124, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31660:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2125, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31669:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2127, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "attestation", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "31669:27:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31660:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2129, + "nodeType": "ExpressionStatement", + "src": "31660:36:1" + } + ] + } + }, + "id": 2143, + "nodeType": "IfStatement", + "src": "31537:240:1", + "trueBody": { + "id": 2120, + "nodeType": "Block", + "src": "31566:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2114, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31574:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2115, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "31583:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage_ptr", + "typeString": "struct Accounts.Account storage pointer" + } + }, + "id": 2116, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signers", + "nodeType": "MemberAccess", + "referencedDeclaration": 101, + "src": "31583:15:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Signers_$92_storage", + "typeString": "struct Accounts.Signers storage ref" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "validator", + "nodeType": "MemberAccess", + "referencedDeclaration": 89, + "src": "31583:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31574:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2119, + "nodeType": "ExpressionStatement", + "src": "31574:34:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2144, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31790:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31808:1:1", + "subdenomination": null, + "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": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31800:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "31790:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2150, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "31824:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "31790:40:1", + "trueExpression": { + "argumentTypes": null, + "id": 2149, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "31813:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2094, + "id": 2152, + "nodeType": "Return", + "src": "31783:47:1" + } + ] + }, + "documentation": "@notice Returns the legacy signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param _account The address of the account.\n@param role The role of the signer.", + "id": 2154, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2088, + "name": "_account", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31334:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31334:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2090, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31352:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31333:32:1" + }, + "returnParameters": { + "id": 2094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2093, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "31387:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2092, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31387:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31386:9:1" + }, + "scope": 2783, + "src": "31309:526:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2180, + "nodeType": "Block", + "src": "32176:130:1", + "statements": [ + { + "assignments": [ + 2164 + ], + "declarations": [ + { + "constant": false, + "id": 2164, + "name": "defaultSigner", + "nodeType": "VariableDeclaration", + "scope": 2180, + "src": "32182:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32182:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2170, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2165, + "name": "defaultSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "32206:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$", + "typeString": "mapping(address => mapping(bytes32 => address))" + } + }, + "id": 2167, + "indexExpression": { + "argumentTypes": null, + "id": 2166, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "32221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32206:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2169, + "indexExpression": { + "argumentTypes": null, + "id": 2168, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "32230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32206:29:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32182:53:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2171, + "name": "defaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "32248:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32273:1:1", + "subdenomination": null, + "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": 2172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32265:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "32248:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2177, + "name": "defaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "32288:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "32248:53:1", + "trueExpression": { + "argumentTypes": null, + "id": 2176, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "32278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2162, + "id": 2179, + "nodeType": "Return", + "src": "32241:60:1" + } + ] + }, + "documentation": "@notice Returns the default signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.", + "id": 2181, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2156, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32115:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32115:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2158, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32132:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2157, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32132:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32114:31:1" + }, + "returnParameters": { + "id": 2162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2181, + "src": "32167:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32167:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32166:9:1" + }, + "scope": 2783, + "src": "32089:217:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2203, + "nodeType": "Block", + "src": "32647:103:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2191, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32673:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2190, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "32660:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32660:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2198, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2183, + "src": "32731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32740:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2197, + "name": "getDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2181, + "src": "32714:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32714:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "32660:85:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2194, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2183, + "src": "32697:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2195, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "32706:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2193, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "32681:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32681:30:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2189, + "id": 2202, + "nodeType": "Return", + "src": "32653:92:1" + } + ] + }, + "documentation": "@notice Returns the indexed signer for the specified account and role. \nIf no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.", + "id": 2204, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2183, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32586:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32586:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2185, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32603:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32603:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32585:31:1" + }, + "returnParameters": { + "id": 2189, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2188, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2204, + "src": "32638:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32638:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32637:9:1" + }, + "scope": 2783, + "src": "32560:190:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2216, + "nodeType": "Block", + "src": "33012:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2212, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "33041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2213, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "33050:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2211, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33025:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33025:36:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2210, + "id": 2215, + "nodeType": "Return", + "src": "33018:43:1" + } + ] + }, + "documentation": "@notice Returns the vote signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign votes.", + "id": 2217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2206, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2217, + "src": "32965:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32965:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32964:17:1" + }, + "returnParameters": { + "id": 2210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2209, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2217, + "src": "33003:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33003:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33002:9:1" + }, + "scope": 2783, + "src": "32942:124:1", + "stateMutability": "view", + "superFunction": 9154, + "visibility": "public" + }, + { + "body": { + "id": 2229, + "nodeType": "Block", + "src": "33357:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2225, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2219, + "src": "33386:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2226, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "33395:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2224, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33370:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33370:41:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2223, + "id": 2228, + "nodeType": "Return", + "src": "33363:48:1" + } + ] + }, + "documentation": "@notice Returns the validator signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can register a validator or group.", + "id": 2230, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2219, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "33310:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33310:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33309:17:1" + }, + "returnParameters": { + "id": 2223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2222, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "33348:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33348:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33347:9:1" + }, + "scope": 2783, + "src": "33282:134:1", + "stateMutability": "view", + "superFunction": 9147, + "visibility": "public" + }, + { + "body": { + "id": 2242, + "nodeType": "Block", + "src": "33699:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2238, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "33728:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2239, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "33737:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2237, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33712:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33712:43:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2236, + "id": 2241, + "nodeType": "Return", + "src": "33705:50:1" + } + ] + }, + "documentation": "@notice Returns the attestation signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign attestations.", + "id": 2243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2232, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2243, + "src": "33652:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33652:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33651:17:1" + }, + "returnParameters": { + "id": 2236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2235, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2243, + "src": "33690:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33690:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33689:9:1" + }, + "scope": 2783, + "src": "33622:138:1", + "stateMutability": "view", + "superFunction": 9140, + "visibility": "public" + }, + { + "body": { + "id": 2259, + "nodeType": "Block", + "src": "33972:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2253, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "34001:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2247, + "src": "34010:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2252, + "name": "getLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "33985:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33985:30:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2256, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "34019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "33985:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2251, + "id": 2258, + "nodeType": "Return", + "src": "33978:48:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for one of the legacy roles", + "id": 2260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasLegacySigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2245, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33914:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33914:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2247, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33931:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "33931:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33913:31:1" + }, + "returnParameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2250, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "33966:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2249, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "33966:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33965:6:1" + }, + "scope": 2783, + "src": "33889:142:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2276, + "nodeType": "Block", + "src": "34227:60:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2270, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "34257:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2271, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2264, + "src": "34266:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2269, + "name": "getDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2181, + "src": "34240:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view returns (address)" + } + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34240:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2273, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "34275:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "34240:42:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2268, + "id": 2275, + "nodeType": "Return", + "src": "34233:49:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for a role", + "id": 2277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasDefaultSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2262, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34169:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34169:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2264, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34186:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2263, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "34186:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34168:31:1" + }, + "returnParameters": { + "id": 2268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2267, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "34221:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2266, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34221:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34220:6:1" + }, + "scope": 2783, + "src": "34143:144:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2299, + "nodeType": "Block", + "src": "34485:103:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2287, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34511:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2286, + "name": "isLegacyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "34498:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34498:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2294, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2279, + "src": "34569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2295, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34578:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2293, + "name": "hasDefaultSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2277, + "src": "34552:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34552:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "34498:85:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2290, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2279, + "src": "34535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "34544:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2289, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "34519:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34519:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2285, + "id": 2298, + "nodeType": "Return", + "src": "34491:92:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for the role", + "id": 2300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasIndexedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2279, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34427:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34427:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2281, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34444:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "34444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34426:31:1" + }, + "returnParameters": { + "id": 2285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "34479:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2283, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34479:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34478:6:1" + }, + "scope": 2783, + "src": "34401:187:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2319, + "nodeType": "Block", + "src": "34863:78:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2310, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2302, + "src": "34893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2314, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2304, + "src": "34929:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 2312, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "34912:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34912:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34912:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2311, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "34902:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34902:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2309, + "name": "hasIndexedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2300, + "src": "34876:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34876:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2308, + "id": 2318, + "nodeType": "Return", + "src": "34869:67:1" + } + ] + }, + "documentation": "@notice Checks whether or not the account has a signer\nregistered for the plaintext role.\n@dev See `hasIndexedSigner` for more gas efficient call.", + "id": 2320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2302, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34795:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34795:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2304, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34812:20:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2303, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34812:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34794:39:1" + }, + "returnParameters": { + "id": 2308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2307, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2320, + "src": "34857:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2306, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34857:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "34856:6:1" + }, + "scope": 2783, + "src": "34766:175:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2332, + "nodeType": "Block", + "src": "35227:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2328, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "35256:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2329, + "name": "VoteSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "35265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2327, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35240:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35240:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2326, + "id": 2331, + "nodeType": "Return", + "src": "35233:43:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated vote signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated vote signer.", + "id": 2333, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedVoteSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "35181:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35181:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35180:17:1" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "35221:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2324, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35221:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35220:6:1" + }, + "scope": 2783, + "src": "35148:133:1", + "stateMutability": "view", + "superFunction": 9161, + "visibility": "external" + }, + { + "body": { + "id": 2345, + "nodeType": "Block", + "src": "35582:59:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "35611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2342, + "name": "ValidatorSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "35620:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2340, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35595:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35595:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2339, + "id": 2344, + "nodeType": "Return", + "src": "35588:48:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated validator signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated validator signer.", + "id": 2346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedValidatorSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2335, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2346, + "src": "35536:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35536:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35535:17:1" + }, + "returnParameters": { + "id": 2339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2338, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2346, + "src": "35576:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35576:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35575:6:1" + }, + "scope": 2783, + "src": "35498:143:1", + "stateMutability": "view", + "superFunction": 9168, + "visibility": "external" + }, + { + "body": { + "id": 2358, + "nodeType": "Block", + "src": "35948:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2354, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "35977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2355, + "name": "AttestationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "35986:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2353, + "name": "hasLegacySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "35961:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (address,bytes32) view returns (bool)" + } + }, + "id": 2356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35961:43:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2352, + "id": 2357, + "nodeType": "Return", + "src": "35954:50:1" + } + ] + }, + "documentation": "@notice Returns if account has specified a dedicated attestation signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated attestation signer.", + "id": 2359, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasAuthorizedAttestationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2348, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "35902:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35902:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35901:17:1" + }, + "returnParameters": { + "id": 2352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2351, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "35942:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2350, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35942:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "35941:6:1" + }, + "scope": 2783, + "src": "35862:147:1", + "stateMutability": "view", + "superFunction": 9175, + "visibility": "external" + }, + { + "body": { + "id": 2371, + "nodeType": "Block", + "src": "36256:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2366, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "36269:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2368, + "indexExpression": { + "argumentTypes": null, + "id": 2367, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2361, + "src": "36278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36269:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2369, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "name", + "nodeType": "MemberAccess", + "referencedDeclaration": 105, + "src": "36269:22:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2365, + "id": 2370, + "nodeType": "Return", + "src": "36262:29:1" + } + ] + }, + "documentation": "@notice Getter for the name of an account.\n@param account The address of the account to get the name for.\n@return name The name of the account.", + "id": 2372, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getName", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2361, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2372, + "src": "36201:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36201:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36200:17:1" + }, + "returnParameters": { + "id": 2365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2364, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2372, + "src": "36241:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2363, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36241:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36240:15:1" + }, + "scope": 2783, + "src": "36184:112:1", + "stateMutability": "view", + "superFunction": 9255, + "visibility": "external" + }, + { + "body": { + "id": 2384, + "nodeType": "Block", + "src": "36572:47:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2379, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "36585:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2381, + "indexExpression": { + "argumentTypes": null, + "id": 2380, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2374, + "src": "36594:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36585:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "36585:29:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2378, + "id": 2383, + "nodeType": "Return", + "src": "36578:36:1" + } + ] + }, + "documentation": "@notice Getter for the metadata of an account.\n@param account The address of the account to get the metadata for.\n@return metadataURL The URL to access the metadata.", + "id": 2385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2374, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2385, + "src": "36517:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36517:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36516:17:1" + }, + "returnParameters": { + "id": 2378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2385, + "src": "36557:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2376, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36557:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36556:15:1" + }, + "scope": 2783, + "src": "36493:126:1", + "stateMutability": "view", + "superFunction": 9237, + "visibility": "external" + }, + { + "body": { + "id": 2523, + "nodeType": "Block", + "src": "37039:636:1", + "statements": [ + { + "assignments": [ + 2397 + ], + "declarations": [ + { + "constant": false, + "id": 2397, + "name": "totalSize", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37045:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37045:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2399, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37065:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37045:21:1" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "sizes", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37072:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37072:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2402, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37072:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2410, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2407, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37111:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37111:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "37097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 2404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2405, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37101:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 2409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37097:37:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37072:62:1" + }, + { + "body": { + "id": 2449, + "nodeType": "Block", + "src": "37202:123:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2426, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37210:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2428, + "indexExpression": { + "argumentTypes": null, + "id": 2427, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37216:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37210:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2430, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "37227:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2431, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37236:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2433, + "indexExpression": { + "argumentTypes": null, + "id": 2432, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37252:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37236:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37227:28:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "37227:40:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37221:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 2436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37221:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37221:54:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37210:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2439, + "nodeType": "ExpressionStatement", + "src": "37210:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2440, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37283:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2443, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37309:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37315:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37309:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2441, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37295:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37295:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37295:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37283:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2448, + "nodeType": "ExpressionStatement", + "src": "37283:35:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2415, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37160:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2416, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37164:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37164:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37160:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2450, + "initializationExpression": { + "assignments": [ + 2412 + ], + "declarations": [ + { + "constant": false, + "id": 2412, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "37145:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37145:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2414, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37157:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37145:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2419, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37188:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37198:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2420, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "37192:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37192:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37192:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37188:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2425, + "nodeType": "ExpressionStatement", + "src": "37188:12:1" + }, + "nodeType": "ForStatement", + "src": "37140:185:1" + }, + { + "assignments": [ + 2452 + ], + "declarations": [ + { + "constant": false, + "id": 2452, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37331:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2451, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37331:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2457, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2455, + "name": "totalSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "37361:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "37351:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2453, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37355:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37351:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37331:40:1" + }, + { + "assignments": [ + 2459 + ], + "declarations": [ + { + "constant": false, + "id": 2459, + "name": "pointer", + "nodeType": "VariableDeclaration", + "scope": 2523, + "src": "37377:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37377:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2461, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37395:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37377:19:1" + }, + { + "body": { + "id": 2517, + "nodeType": "Block", + "src": "37464:181:1", + "statements": [ + { + "body": { + "id": 2515, + "nodeType": "Block", + "src": "37520:119:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2493, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "37530:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2495, + "indexExpression": { + "argumentTypes": null, + "id": 2494, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37530:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2497, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "37552:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2501, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2498, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37561:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37577:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37561:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37552:28:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2502, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "metadataURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 109, + "src": "37552:40:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37546:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37546:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 2505, + "indexExpression": { + "argumentTypes": null, + "id": 2504, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37594:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37546:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "37530:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2507, + "nodeType": "ExpressionStatement", + "src": "37530:66:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2508, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37606:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37628:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2509, + "name": "pointer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "37616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37616:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37616:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37606:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2514, + "nodeType": "ExpressionStatement", + "src": "37606:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2481, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37492:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2482, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37496:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2484, + "indexExpression": { + "argumentTypes": null, + "id": 2483, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37502:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37496:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37492:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2516, + "initializationExpression": { + "assignments": [ + 2478 + ], + "declarations": [ + { + "constant": false, + "id": 2478, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "37477:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37477:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2480, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37489:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37477:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2486, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37506:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37516:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2487, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "37510:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37510:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37510:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37506:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2492, + "nodeType": "ExpressionStatement", + "src": "37506:12:1" + }, + "nodeType": "ForStatement", + "src": "37472:167:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2466, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37422:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2467, + "name": "accountsToQuery", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "37426:15:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "37426:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37422:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2518, + "initializationExpression": { + "assignments": [ + 2463 + ], + "declarations": [ + { + "constant": false, + "id": 2463, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2518, + "src": "37407:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37407:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2465, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37419:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "37407:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2470, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37450:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37460:1:1", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 2471, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "37454:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44380, + "src": "37454:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37450:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "37450:12:1" + }, + "nodeType": "ForStatement", + "src": "37402:243:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2519, + "name": "sizes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "37658:5:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 2520, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "37665:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 2521, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "37657:13:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256[] memory,bytes memory)" + } + }, + "functionReturnParameters": 2395, + "id": 2522, + "nodeType": "Return", + "src": "37650:20:1" + } + ] + }, + "documentation": "@notice Getter for the metadata of multiple accounts.\n@param accountsToQuery The addresses of the accounts to get the metadata for.\n@return (stringLengths[] - the length of each string in bytes\n data - all strings concatenated\n )", + "id": 2524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "batchGetMetadataURL", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2388, + "name": "accountsToQuery", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "36934:34:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36934:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2387, + "length": null, + "nodeType": "ArrayTypeName", + "src": "36934:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "36933:36:1" + }, + "returnParameters": { + "id": 2395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2392, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "37005:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2391, + "length": null, + "nodeType": "ArrayTypeName", + "src": "37005:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2394, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "37023:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2393, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37023:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37004:32:1" + }, + "scope": 2783, + "src": "36905:770:1", + "stateMutability": "view", + "superFunction": 9248, + "visibility": "external" + }, + { + "body": { + "id": 2536, + "nodeType": "Block", + "src": "37998:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2531, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38011:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2533, + "indexExpression": { + "argumentTypes": null, + "id": 2532, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2526, + "src": "38020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38011:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataEncryptionKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 107, + "src": "38011:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 2530, + "id": 2535, + "nodeType": "Return", + "src": "38004:42:1" + } + ] + }, + "documentation": "@notice Getter for the data encryption key and version.\n@param account The address of the account to get the key for\n@return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.", + "id": 2537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDataEncryptionKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2526, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2537, + "src": "37944:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37944:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37943:17:1" + }, + "returnParameters": { + "id": 2530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2529, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2537, + "src": "37984:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2528, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37984:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "37983:14:1" + }, + "scope": 2783, + "src": "37914:137:1", + "stateMutability": "view", + "superFunction": 9223, + "visibility": "external" + }, + { + "body": { + "id": 2549, + "nodeType": "Block", + "src": "38305:49:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2544, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38318:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2546, + "indexExpression": { + "argumentTypes": null, + "id": 2545, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "38327:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38318:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2547, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "walletAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 103, + "src": "38318:31:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2543, + "id": 2548, + "nodeType": "Return", + "src": "38311:38:1" + } + ] + }, + "documentation": "@notice Getter for the wallet address for an account\n@param account The address of the account to get the wallet address for\n@return Wallet address", + "id": 2550, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWalletAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2539, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2550, + "src": "38256:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38256:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38255:17:1" + }, + "returnParameters": { + "id": 2543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2542, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2550, + "src": "38296:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38296:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38295:9:1" + }, + "scope": 2783, + "src": "38230:124:1", + "stateMutability": "view", + "superFunction": 9230, + "visibility": "external" + }, + { + "body": { + "id": 2563, + "nodeType": "Block", + "src": "38603:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2557, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38617:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2559, + "indexExpression": { + "argumentTypes": null, + "id": 2558, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2552, + "src": "38626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38617:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "38617:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2561, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "38616:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2556, + "id": 2562, + "nodeType": "Return", + "src": "38609:33:1" + } + ] + }, + "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `true` if account exists. Returns `false` otherwise.", + "id": 2564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2552, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2564, + "src": "38559:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38559:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38558:17:1" + }, + "returnParameters": { + "id": 2556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2555, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2564, + "src": "38597:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38597:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38596:6:1" + }, + "scope": 2783, + "src": "38540:107:1", + "stateMutability": "view", + "superFunction": 9105, + "visibility": "public" + }, + { + "body": { + "id": 2578, + "nodeType": "Block", + "src": "38901:45:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "38915:25:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2571, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "38916:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$", + "typeString": "mapping(address => struct Accounts.Account storage ref)" + } + }, + "id": 2573, + "indexExpression": { + "argumentTypes": null, + "id": 2572, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2566, + "src": "38925:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38916:17:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Account_$110_storage", + "typeString": "struct Accounts.Account storage ref" + } + }, + "id": 2574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 99, + "src": "38916:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2576, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "38914:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2570, + "id": 2577, + "nodeType": "Return", + "src": "38907:34:1" + } + ] + }, + "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `false` if account exists. Returns `true` otherwise.", + "id": 2579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2566, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2579, + "src": "38855:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38855:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38854:17:1" + }, + "returnParameters": { + "id": 2570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2569, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2579, + "src": "38895:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2568, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "38894:6:1" + }, + "scope": 2783, + "src": "38833:113:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2595, + "nodeType": "Block", + "src": "39236:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2586, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "39250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2588, + "indexExpression": { + "argumentTypes": null, + "id": 2587, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "39263:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39250:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39282:1:1", + "subdenomination": null, + "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": 2589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39274:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "39250:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2593, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "39249:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2585, + "id": 2594, + "nodeType": "Return", + "src": "39242:43:1" + } + ] + }, + "documentation": "@notice Check if an address has been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `true` if authorized. Returns `false` otherwise.", + "id": 2596, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2581, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2596, + "src": "39191:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39191:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39190:16:1" + }, + "returnParameters": { + "id": 2585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2584, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2596, + "src": "39230:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2583, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39230:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39229:6:1" + }, + "scope": 2783, + "src": "39163:127:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2612, + "nodeType": "Block", + "src": "39587:54:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2603, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "39601:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2605, + "indexExpression": { + "argumentTypes": null, + "id": 2604, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "39614:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39601:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39633:1:1", + "subdenomination": null, + "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": 2606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39625:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "39601:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2610, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "39600:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2602, + "id": 2611, + "nodeType": "Return", + "src": "39593:43:1" + } + ] + }, + "documentation": "@notice Check if an address has not been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.", + "id": 2613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAuthorizedSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2598, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2613, + "src": "39542:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39542:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39541:16:1" + }, + "returnParameters": { + "id": 2602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2601, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2613, + "src": "39581:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2600, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39581:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "39580:6:1" + }, + "scope": 2783, + "src": "39511:130:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2637, + "nodeType": "Block", + "src": "40103:89:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2622, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "40117:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2624, + "indexExpression": { + "argumentTypes": null, + "id": 2623, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "40130:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40117:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40149:1:1", + "subdenomination": null, + "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": 2625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40141:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40141:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "40117:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2629, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "40155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2631, + "indexExpression": { + "argumentTypes": null, + "id": 2630, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "40168:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40155:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2632, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2615, + "src": "40179:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40155:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "40117:69:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "40116:71:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2621, + "id": 2636, + "nodeType": "Return", + "src": "40109:78:1" + } + ] + }, + "documentation": "@notice Check if `signer` has not been authorized, and if it has been previously\n authorized that it was authorized by `account`.\n@param account The authorizing account address.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.", + "id": 2638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2615, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40027:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40027:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2617, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40044:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40044:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40026:33:1" + }, + "returnParameters": { + "id": 2621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2620, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "40095:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2619, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "40095:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40094:6:1" + }, + "scope": 2783, + "src": "39979:213:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2671, + "nodeType": "Block", + "src": "40844:162:1", + "statements": [ + { + "assignments": [ + 2650 + ], + "declarations": [ + { + "constant": false, + "id": 2650, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2671, + "src": "40850:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40850:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2659, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2653, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "40897:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "40897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2655, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2642, + "src": "40909:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2656, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "40912:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2657, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "40915:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2651, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "40867:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 2652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7127, + "src": "40867:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40867:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40850:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2661, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2650, + "src": "40931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2662, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "40941:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40931:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 2664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40953:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 2660, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "40923:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40923:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2666, + "nodeType": "ExpressionStatement", + "src": "40923:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2668, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "40990:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2667, + "name": "authorize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "40980:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40980:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2670, + "nodeType": "ExpressionStatement", + "src": "40980:21:1" + } + ] + }, + "documentation": "@notice Authorizes some role of `msg.sender`'s account to another address.\n@param authorized The address to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that once an address is authorized, it may never be authorized again.\n@dev v, r, s constitute `authorized`'s signature on `msg.sender`.", + "id": 2672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2640, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40785:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40785:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2642, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40805:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2641, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "40805:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2644, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40814:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2643, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40814:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2646, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2672, + "src": "40825:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2645, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40825:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "40784:51:1" + }, + "returnParameters": { + "id": 2648, + "nodeType": "ParameterList", + "parameters": [], + "src": "40844:0:1" + }, + "scope": 2783, + "src": "40759:247:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2710, + "nodeType": "Block", + "src": "41740:214:1", + "statements": [ + { + "assignments": [ + 2690 + ], + "declarations": [ + { + "constant": false, + "id": 2690, + "name": "structHash", + "nodeType": "VariableDeclaration", + "scope": 2710, + "src": "41746:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2689, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2700, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2694, + "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "41795:32:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2695, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2674, + "src": "41829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2696, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "41838:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2697, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2678, + "src": "41846:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2692, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45783, + "src": "41784:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "41784:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41784:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2691, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45790, + "src": "41767:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41767:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41746:111:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2703, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "41906:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2704, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "41929:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2705, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2680, + "src": "41941:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2706, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "41944:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2707, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "41947:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2701, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7219, + "src": "41870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$", + "typeString": "type(library Signatures)" + } + }, + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfTypedDataHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 7218, + "src": "41870:35:1", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41870:79:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2688, + "id": 2709, + "nodeType": "Return", + "src": "41863:86:1" + } + ] + }, + "documentation": "@notice Returns the address that signed the provided role authorization.\n@param account The `account` property signed over in the EIP712 signature\n@param signer The `signer` property signed over in the EIP712 signature\n@param role The `role` property signed over in the EIP712 signature\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return The address that signed the provided role authorization.", + "id": 2711, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAuthorizationSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2674, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41609:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41609:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2676, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41630:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41630:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2678, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41650:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2677, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41650:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2680, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41668:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2679, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "41668:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41681:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2681, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41681:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2684, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41696:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41603:106:1" + }, + "returnParameters": { + "id": 2688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2687, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2711, + "src": "41731:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41731:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "41730:9:1" + }, + "scope": 2783, + "src": "41568:386:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2747, + "nodeType": "Block", + "src": "42674:177:1", + "statements": [ + { + "assignments": [ + 2725 + ], + "declarations": [ + { + "constant": false, + "id": 2725, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2747, + "src": "42680:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42680:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2735, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2727, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "42724:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "42724:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2729, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42736:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2730, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "42748:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2731, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2717, + "src": "42754:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2732, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2719, + "src": "42757:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2733, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2721, + "src": "42760:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2726, + "name": "getRoleAuthorizationSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2711, + "src": "42697:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,address,bytes32,uint8,bytes32,bytes32) view returns (address)" + } + }, + "id": 2734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42697:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42680:82:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2737, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2725, + "src": "42776:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2738, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42786:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "42776:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207369676e6174757265", + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42798:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + }, + "value": "Invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7", + "typeString": "literal_string \"Invalid signature\"" + } + ], + "id": 2736, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "42768:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42768:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2742, + "nodeType": "ExpressionStatement", + "src": "42768:50:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2744, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2743, + "name": "authorize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "42825:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42825:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2746, + "nodeType": "ExpressionStatement", + "src": "42825:21:1" + } + ] + }, + "documentation": "@notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n@param authorized The address to authorize.\n@param role The role to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that this signature is EIP712 compliant over the authorizing `account` \n(`msg.sender`), `signer` (`authorized`) and `role`.", + "id": 2748, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeAddressWithRole", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2713, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42595:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42595:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2715, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42615:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2714, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42615:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2717, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42629:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2716, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "42629:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42638:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2718, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2721, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2748, + "src": "42649:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2720, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "42594:65:1" + }, + "returnParameters": { + "id": 2723, + "nodeType": "ParameterList", + "parameters": [], + "src": "42674:0:1" + }, + "scope": 2783, + "src": "42561:290:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2781, + "nodeType": "Block", + "src": "43122:301:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2755, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43146:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43146:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2754, + "name": "isAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "43136:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43136:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e6b6e6f776e206163636f756e74", + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43159:17:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + }, + "value": "Unknown account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f", + "typeString": "literal_string \"Unknown account\"" + } + ], + "id": 2753, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "43128:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43128:49:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2760, + "nodeType": "ExpressionStatement", + "src": "43128:49:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2763, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43211:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2762, + "name": "isNotAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "43198:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43198:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2766, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43265:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2768, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43277:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2765, + "name": "isNotAuthorizedSignerForAnotherAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "43226:38:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43226:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "43198:90:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e74", + "id": 2771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43296:72:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24", + "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\"" + }, + "value": "Cannot re-authorize address or locked gold account for another account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24", + "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\"" + } + ], + "id": 2761, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45799, + 45800 + ], + "referencedDeclaration": 45800, + "src": "43183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43183:191:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2773, + "nodeType": "ExpressionStatement", + "src": "43183:191:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 2779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2774, + "name": "authorizedBy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "43381:12:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 2776, + "indexExpression": { + "argumentTypes": null, + "id": 2775, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2750, + "src": "43394:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "43381:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45796, + "src": "43408:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "43408:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "43381:37:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2780, + "nodeType": "ExpressionStatement", + "src": "43381:37:1" + } + ] + }, + "documentation": "@notice Authorizes an address to `msg.sender`'s account\n@param authorized The address to authorize.\n@dev Fails if the address is already authorized for another account or is an account itself.", + "id": 2782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2750, + "name": "authorized", + "nodeType": "VariableDeclaration", + "scope": 2782, + "src": "43094:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43094:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "43093:20:1" + }, + "returnParameters": { + "id": 2752, + "nodeType": "ParameterList", + "parameters": [], + "src": "43122:0:1" + }, + "scope": 2783, + "src": "43075:348:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 2784, + "src": "445:42980:1" + } + ], + "src": "0:43426:1" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.23", + "updatedAt": "2022-10-10T05:02:35.305Z", + "devdoc": { + "methods": { + "addStorageRoot(bytes)": { + "params": { + "url": "The URL pointing to the offchain storage root." + } + }, + "attestationSignerToAccount(address)": { + "details": "Fails if the `signer` is not an account or currently authorized attestation signer.", + "params": { + "signer": "The address of the account or currently authorized attestation signer." + }, + "return": "The associated account." + }, + "authorizeAttestationSigner(address,uint8,bytes32,bytes32)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender`.", + "params": { + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "authorizeSigner(address,bytes32)": { + "params": { + "role": "The role to authorize signing for.", + "signer": "The address of the signing key to authorize." + } + }, + "authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)": { + "details": "v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` and `signer`.", + "params": { + "r": "Output value r of the ECDSA signature.", + "role": "The role to authorize signing for.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "authorizeValidatorSigner(address,uint8,bytes32,bytes32)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender`.", + "params": { + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender`.", + "params": { + "blsPop": "The BLS public key proof-of-possession, which consists of a signature on the account address. 48 bytes.", + "blsPublicKey": "The BLS public key that the validator is using for consensus, should pass proof of possession. 96 bytes.", + "ecdsaPublicKey": "The ECDSA public key corresponding to `signer`.", + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender`.", + "params": { + "ecdsaPublicKey": "The ECDSA public key corresponding to `signer`.", + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "authorizeVoteSigner(address,uint8,bytes32,bytes32)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender`.", + "params": { + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "signer": "The address of the signing key to authorize.", + "v": "The recovery id of the incoming ECDSA signature." + } + }, + "batchGetMetadataURL(address[])": { + "params": { + "accountsToQuery": "The addresses of the accounts to get the metadata for." + }, + "return": "(stringLengths[] - the length of each string in bytes data - all strings concatenated )" + }, + "completeSignerAuthorization(address,bytes32)": { + "params": { + "account": "The address of account that authorized signing.", + "role": "The role to finish authorizing for." + } + }, + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization" + } + }, + "createAccount()": { + "return": "True if account creation succeeded." + }, + "getAttestationSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "The address with which the account can sign attestations." + }, + "getDataEncryptionKey(address)": { + "params": { + "account": "The address of the account to get the key for" + }, + "return": "dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed." + }, + "getDefaultSigner(address,bytes32)": { + "params": { + "account": "The address of the account.", + "role": "The role of the signer." + } + }, + "getIndexedSigner(address,bytes32)": { + "params": { + "account": "The address of the account.", + "role": "The role of the signer." + } + }, + "getLegacySigner(address,bytes32)": { + "params": { + "_account": "The address of the account.", + "role": "The role of the signer." + } + }, + "getMetadataURL(address)": { + "params": { + "account": "The address of the account to get the metadata for." + }, + "return": "metadataURL The URL to access the metadata." + }, + "getName(address)": { + "params": { + "account": "The address of the account to get the name for." + }, + "return": "name The name of the account." + }, + "getOffchainStorageRoots(address)": { + "params": { + "account": "The account whose storage roots to return." + }, + "return": "List of storage root URLs." + }, + "getPaymentDelegation(address)": { + "params": { + "account": "Account of the validator." + }, + "return": "Beneficiary address and fraction of payment delegated." + }, + "getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)": { + "params": { + "account": "The `account` property signed over in the EIP712 signature", + "r": "Output value r of the ECDSA signature.", + "role": "The `role` property signed over in the EIP712 signature", + "s": "Output value s of the ECDSA signature.", + "signer": "The `signer` property signed over in the EIP712 signature", + "v": "The recovery id of the incoming ECDSA signature." + }, + "return": "The address that signed the provided role authorization." + }, + "getValidatorSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "The address with which the account can register a validator or group." + }, + "getVersionNumber()": { + "return": "The storage, major, minor, and patch version of the contract." + }, + "getVoteSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "The address with which the account can sign votes." + }, + "getWalletAddress(address)": { + "params": { + "account": "The address of the account to get the wallet address for" + }, + "return": "Wallet address" + }, + "hasAuthorizedAttestationSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "Whether the account has specified a dedicated attestation signer." + }, + "hasAuthorizedSigner(address,string)": { + "details": "See `hasIndexedSigner` for more gas efficient call." + }, + "hasAuthorizedValidatorSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "Whether the account has specified a dedicated validator signer." + }, + "hasAuthorizedVoteSigner(address)": { + "params": { + "account": "The address of the account." + }, + "return": "Whether the account has specified a dedicated vote signer." + }, + "initialize(address)": { + "params": { + "registryAddress": "The address of the registry core smart contract." + } + }, + "isAccount(address)": { + "params": { + "account": "The address of the account" + }, + "return": "Returns `true` if account exists. Returns `false` otherwise." + }, + "isAuthorizedSigner(address)": { + "params": { + "signer": "The possibly authorized address." + }, + "return": "Returns `true` if authorized. Returns `false` otherwise." + }, + "isDefaultSigner(address,address,bytes32)": { + "params": { + "account": "The address of account that authorized signing.", + "role": "The role that has been authorized.", + "signer": "The address of the signer." + } + }, + "isIndexedSigner(address,address,bytes32)": { + "params": { + "account": "The address of account that authorized signing.", + "role": "The role that has been authorized.", + "signer": "The address of the signer." + } + }, + "isLegacyRole(bytes32)": { + "params": { + "role": "The role to check" + } + }, + "isLegacySigner(address,address,bytes32)": { + "params": { + "_account": "The address of account that authorized signing.", + "role": "The role that has been authorized.", + "signer": "The address of the signer." + } + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "isSigner(address,address,bytes32)": { + "params": { + "account": "The address of account that authorized signing.", + "role": "The role that has been authorized.", + "signer": "The address of the signer." + } + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "removeDefaultSigner(bytes32)": { + "params": { + "role": "The role that has been authorized." + } + }, + "removeIndexedSigner(bytes32)": { + "params": { + "role": "The role of the signer." + } + }, + "removeSigner(address,bytes32)": { + "params": { + "role": "The role that has been authorized.", + "signer": "The address of the signer." + } + }, + "removeStorageRoot(uint256)": { + "details": "The order of storage roots may change after this operation (the last storage root will be moved to `index`), be aware of this if removing multiple storage roots at a time.", + "params": { + "index": "The index of the storage root to be removed in the account's list of storage roots." + } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "setAccount(string,bytes,address,uint8,bytes32,bytes32)": { + "details": "v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).", + "params": { + "dataEncryptionKey": "secp256k1 public key for data encryption. Preferably compressed.", + "name": "A string to set as the name of the account", + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "v": "The recovery id of the incoming ECDSA signature.", + "walletAddress": "The wallet address to set for the account" + } + }, + "setAccountDataEncryptionKey(bytes)": { + "params": { + "dataEncryptionKey": "secp256k1 public key for data encryption. Preferably compressed." + } + }, + "setIndexedSigner(address,bytes32)": { + "params": { + "role": "the role to register a default signer for", + "signer": "the address to set as default" + } + }, + "setMetadataURL(string)": { + "params": { + "metadataURL": "The URL to access the metadata." + } + }, + "setName(string)": { + "params": { + "name": "The name to set." + } + }, + "setPaymentDelegation(address,uint256)": { + "details": "Use `deletePaymentDelegation` to unset the payment delegation.", + "params": { + "beneficiary": "The address that should receive a portion of validator payments.", + "fraction": "The fraction of the validator's payment that should be diverted to `beneficiary` every epoch, given as FixidityLib value. Must not be greater than 1." + } + }, + "setRegistry(address)": { + "params": { + "registryAddress": "The address of a registry contract for routing to other contracts." + } + }, + "setWalletAddress(address,uint8,bytes32,bytes32)": { + "details": "Wallet address can be zero. This means that the owner of the wallet does not want to be paid directly without interaction, and instead wants users to contact them, using the data encryption key, and arrange a payment.v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).", + "params": { + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "v": "The recovery id of the incoming ECDSA signature.", + "walletAddress": "The wallet address to set for the account" + } + }, + "signerToAccount(address)": { + "details": "Fails if the `signer` is not an account or previously authorized signer.", + "params": { + "signer": "The address of the account or previously authorized signer." + }, + "return": "The associated account." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "validatorSignerToAccount(address)": { + "details": "Fails if the `signer` is not an account or currently authorized validator.", + "params": { + "signer": "The address of an account or currently authorized validator signer." + }, + "return": "The associated account." + }, + "voteSignerToAccount(address)": { + "details": "Fails if the `signer` is not an account or currently authorized vote signer.", + "params": { + "signer": "The address of the account or currently authorized vote signer." + }, + "return": "The associated account." + } + } + }, + "userdoc": { + "methods": { + "addStorageRoot(bytes)": { + "notice": "Adds a new CIP8 storage root." + }, + "attestationSignerToAccount(address)": { + "notice": "Returns the account associated with `signer`." + }, + "authorizeAttestationSigner(address,uint8,bytes32,bytes32)": { + "notice": "Authorizes an address to sign attestations on behalf of the account." + }, + "authorizeSigner(address,bytes32)": { + "notice": "Begin the process of authorizing an address to sign on behalf of the account" + }, + "authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)": { + "notice": "Authorizes an address to act as a signer, for `role`, on behalf of the account." + }, + "authorizeValidatorSigner(address,uint8,bytes32,bytes32)": { + "notice": "Authorizes an address to sign consensus messages on behalf of the account." + }, + "authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)": { + "notice": "Authorizes an address to sign consensus messages on behalf of the account." + }, + "authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)": { + "notice": "Authorizes an address to sign consensus messages on behalf of the account." + }, + "authorizeVoteSigner(address,uint8,bytes32,bytes32)": { + "notice": "Authorizes an address to sign votes on behalf of the account." + }, + "batchGetMetadataURL(address[])": { + "notice": "Getter for the metadata of multiple accounts." + }, + "completeSignerAuthorization(address,bytes32)": { + "notice": "Finish the process of authorizing an address to sign on behalf of the account. " + }, + "constructor": "Sets initialized == true on implementation contracts", + "createAccount()": { + "notice": "Creates an account." + }, + "deletePaymentDelegation()": { + "notice": "Removes a validator's payment delegation by setting benficiary and fraction to 0." + }, + "getAttestationSigner(address)": { + "notice": "Returns the attestation signer for the specified account." + }, + "getDataEncryptionKey(address)": { + "notice": "Getter for the data encryption key and version." + }, + "getDefaultSigner(address,bytes32)": { + "notice": "Returns the default signer for the specified account and role. If no signer has been specified it will return the account itself." + }, + "getIndexedSigner(address,bytes32)": { + "notice": "Returns the indexed signer for the specified account and role. If no signer has been specified it will return the account itself." + }, + "getLegacySigner(address,bytes32)": { + "notice": "Returns the legacy signer for the specified account and role. If no signer has been specified it will return the account itself." + }, + "getMetadataURL(address)": { + "notice": "Getter for the metadata of an account." + }, + "getName(address)": { + "notice": "Getter for the name of an account." + }, + "getOffchainStorageRoots(address)": { + "notice": "Returns the full list of offchain storage roots for an account." + }, + "getPaymentDelegation(address)": { + "notice": "Gets validator payment delegation settings." + }, + "getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)": { + "notice": "Returns the address that signed the provided role authorization." + }, + "getValidatorSigner(address)": { + "notice": "Returns the validator signer for the specified account." + }, + "getVersionNumber()": { + "notice": "Returns the storage, major, minor, and patch version of the contract." + }, + "getVoteSigner(address)": { + "notice": "Returns the vote signer for the specified account." + }, + "getWalletAddress(address)": { + "notice": "Getter for the wallet address for an account" + }, + "hasAuthorizedAttestationSigner(address)": { + "notice": "Returns if account has specified a dedicated attestation signer." + }, + "hasAuthorizedSigner(address,string)": { + "notice": "Checks whether or not the account has a signer registered for the plaintext role." + }, + "hasAuthorizedValidatorSigner(address)": { + "notice": "Returns if account has specified a dedicated validator signer." + }, + "hasAuthorizedVoteSigner(address)": { + "notice": "Returns if account has specified a dedicated vote signer." + }, + "hasDefaultSigner(address,bytes32)": { + "notice": "Checks whether or not the account has an indexed signer registered for a role" + }, + "hasIndexedSigner(address,bytes32)": { + "notice": "Checks whether or not the account has an indexed signer registered for the role" + }, + "hasLegacySigner(address,bytes32)": { + "notice": "Checks whether or not the account has an indexed signer registered for one of the legacy roles" + }, + "initialize(address)": { + "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy." + }, + "isAccount(address)": { + "notice": "Check if an account already exists." + }, + "isAuthorizedSigner(address)": { + "notice": "Check if an address has been an authorized signer for an account." + }, + "isDefaultSigner(address,address,bytes32)": { + "notice": "Whether or not the signer has been registered as the default signer for role" + }, + "isIndexedSigner(address,address,bytes32)": { + "notice": "Whether or not the signer has been registered as an indexed signer for role" + }, + "isLegacyRole(bytes32)": { + "notice": "Checks whether the role is one of Vote, Validator or Attestation" + }, + "isLegacySigner(address,address,bytes32)": { + "notice": "Whether or not the signer has been registered as the legacy signer for role" + }, + "isSigner(address,address,bytes32)": { + "notice": "Whether or not the signer has been registered as a signer for role" + }, + "removeAttestationSigner()": { + "notice": "Removes the currently authorized attestation signer for the account Note that the signers cannot be reauthorized after they have been removed." + }, + "removeDefaultSigner(bytes32)": { + "notice": "Removes the signer for a default role." + }, + "removeIndexedSigner(bytes32)": { + "notice": "Removes the currently authorized and indexed signer for a specific role" + }, + "removeSigner(address,bytes32)": { + "notice": "Removes the currently authorized signer for a specific role and if the signer is indexed, remove that as well." + }, + "removeStorageRoot(uint256)": { + "notice": "Removes a CIP8 storage root." + }, + "removeValidatorSigner()": { + "notice": "Removes the currently authorized validator signer for the account Note that the signers cannot be reauthorized after they have been removed." + }, + "removeVoteSigner()": { + "notice": "Removes the currently authorized vote signer for the account. Note that the signers cannot be reauthorized after they have been removed." + }, + "setAccount(string,bytes,address,uint8,bytes32,bytes32)": { + "notice": "Convenience Setter for the dataEncryptionKey and wallet address for an account" + }, + "setAccountDataEncryptionKey(bytes)": { + "notice": "Setter for the data encryption key and version." + }, + "setEip712DomainSeparator()": { + "notice": "Sets the EIP712 domain separator for the Celo Accounts abstraction." + }, + "setIndexedSigner(address,bytes32)": { + "notice": "Set the indexed signer for a specific role" + }, + "setMetadataURL(string)": { + "notice": "Setter for the metadata of an account." + }, + "setName(string)": { + "notice": "Setter for the name of an account." + }, + "setPaymentDelegation(address,uint256)": { + "notice": "Sets validator payment delegation settings." + }, + "setRegistry(address)": { + "notice": "Updates the address pointing to a Registry contract." + }, + "setWalletAddress(address,uint8,bytes32,bytes32)": { + "notice": "Setter for the wallet address for an account" + }, + "signerToAccount(address)": { + "notice": "Returns the account associated with `signer`." + }, + "validatorSignerToAccount(address)": { + "notice": "Returns the account associated with `signer`." + }, + "voteSignerToAccount(address)": { + "notice": "Returns the account associated with `signer`." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/Escrow.json b/celo-social-connect-dapp/packages/react-app/abis/Escrow.json new file mode 100644 index 00000000..ab2df242 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/Escrow.json @@ -0,0 +1,31778 @@ +{ + "contractName": "Escrow", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trustedIssuer", + "type": "address" + } + ], + "name": "DefaultTrustedIssuerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trustedIssuer", + "type": "address" + } + ], + "name": "DefaultTrustedIssuerRemoved", + "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": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "by", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "paymentId", + "type": "address" + } + ], + "name": "Revocation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "paymentId", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "minAttestations", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "paymentId", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "trustedIssuers", + "type": "address[]" + } + ], + "name": "TrustedIssuersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "paymentId", + "type": "address" + } + ], + "name": "TrustedIssuersUnset", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "paymentId", + "type": "address" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "defaultTrustedIssuers", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "escrowedPayments", + "outputs": [ + { + "internalType": "bytes32", + "name": "recipientIdentifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sentIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "receivedIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirySeconds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAttestations", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "receivedPaymentIds", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "sentPaymentIds", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "trustedIssuersPerPayment", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "trustedIssuer", + "type": "address" + } + ], + "name": "addDefaultTrustedIssuer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "trustedIssuer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "removeDefaultTrustedIssuer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirySeconds", + "type": "uint256" + }, + { + "internalType": "address", + "name": "paymentId", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minAttestations", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirySeconds", + "type": "uint256" + }, + { + "internalType": "address", + "name": "paymentId", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minAttestations", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "trustedIssuers", + "type": "address[]" + } + ], + "name": "transferWithTrustedIssuers", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "paymentId", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "paymentId", + "type": "address" + } + ], + "name": "revoke", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + } + ], + "name": "getReceivedPaymentIds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "getSentPaymentIds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "paymentId", + "type": "address" + } + ], + "name": "getTrustedIssuersPerPayment", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getDefaultTrustedIssuers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"DefaultTrustedIssuerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"DefaultTrustedIssuerRemoved\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"TrustedIssuersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"TrustedIssuersUnset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_TRUSTED_ISSUERS_PER_PAYMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"addDefaultTrustedIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultTrustedIssuers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"escrowedPayments\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipientIdentifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sentIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receivedIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getDefaultTrustedIssuers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"getReceivedPaymentIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getSentPaymentIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"getTrustedIssuersPerPayment\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"receivedPaymentIds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"removeDefaultTrustedIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"revoke\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sentPaymentIds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"transferWithTrustedIssuers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"trustedIssuersPerPayment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"addDefaultTrustedIssuer(address)\":{\"details\":\"Throws if trustedIssuer is null or already in defaultTrustedIssuers.Throws if defaultTrustedIssuers is already at max allowed length.\",\"params\":{\"trustedIssuer\":\"Address of the trustedIssuer to add.\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getDefaultTrustedIssuers()\":{\"return\":\"An array of addresses of trusted issuers.\"},\"getReceivedPaymentIds(bytes32)\":{\"params\":{\"identifier\":\"The hash of an identifier of the receiver of the escrowed payment.\"},\"return\":\"An array containing all the IDs of the Escrowed Payments that were received by the specified receiver.\"},\"getSentPaymentIds(address)\":{\"params\":{\"sender\":\"The address of the sender of the escrowed payments.\"},\"return\":\"An array containing all the IDs of the Escrowed Payments that were sent by the specified sender.\"},\"getTrustedIssuersPerPayment(address)\":{\"params\":{\"paymentId\":\"The ID of the payment to get.\"},\"return\":\"An array of addresses of trusted issuers set for an escrowed payment.\"},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeDefaultTrustedIssuer(address,uint256)\":{\"details\":\"Throws if trustedIssuer is not in defaultTrustedIssuers at index.\",\"params\":{\"index\":\"Index of trustedIssuer in defaultTrustedIssuers.\",\"trustedIssuer\":\"Address of the trustedIssuer to remove.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revoke(address)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if msg.sender is not the sender of payment.Throws if redeem time hasn't been reached yet.\",\"params\":{\"paymentId\":\"The ID for the EscrowedPayment struct that contains all relevant information.\"}},\"transfer(bytes32,address,uint256,uint256,address,uint256)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.If minAttestations is 0, trustedIssuers will be set to empty list.msg.sender needs to have already approved this contract to transfer\",\"params\":{\"expirySeconds\":\"The number of seconds before the sender can revoke the payment.\",\"identifier\":\"The hashed identifier of a user to transfer to.\",\"minAttestations\":\"The min number of attestations required to withdraw the payment.\",\"paymentId\":\"The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.\",\"token\":\"The token to be transferred.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if transfer succeeded.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.Throws if minAttestations == 0 but trustedIssuers are provided.msg.sender needs to have already approved this contract to transfer.\",\"params\":{\"expirySeconds\":\"The number of seconds before the sender can revoke the payment.\",\"identifier\":\"The hashed identifier of a user to transfer to.\",\"minAttestations\":\"The min number of attestations required to withdraw the payment.\",\"paymentId\":\"The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.\",\"token\":\"The token to be transferred.\",\"trustedIssuers\":\"Array of issuers whose attestations in FederatedAttestations.sol will be accepted to prove ownership over an identifier.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if transfer succeeded.\"},\"withdraw(address,uint8,bytes32,bytes32)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if msg.sender does not prove ownership of the withdraw key.\",\"params\":{\"paymentId\":\"The ID for the EscrowedPayment struct that contains all relevant information.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"},\"return\":\"True if withdraw succeeded.\"}}},\"userdoc\":{\"methods\":{\"addDefaultTrustedIssuer(address)\":{\"notice\":\"Add an address to the defaultTrustedIssuers list.\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"getDefaultTrustedIssuers()\":{\"notice\":\"Gets trusted issuers set as default for payments by `transfer` function.\"},\"getReceivedPaymentIds(bytes32)\":{\"notice\":\"Gets array of all Escrowed Payments received by identifier.\"},\"getSentPaymentIds(address)\":{\"notice\":\"Gets array of all Escrowed Payment IDs sent by sender.\"},\"getTrustedIssuersPerPayment(address)\":{\"notice\":\"Gets array of all trusted issuers set per paymentId.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"removeDefaultTrustedIssuer(address,uint256)\":{\"notice\":\"Remove an address from the defaultTrustedIssuers list.\"},\"revoke(address)\":{\"notice\":\"Revokes tokens for a sender who is redeeming a payment after it has expired.\"},\"transfer(bytes32,address,uint256,uint256,address,uint256)\":{\"notice\":\"Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and minAttestations). Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`. (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\"},\"transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])\":{\"notice\":\"Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and attestations completed by trustedIssuers).\"},\"withdraw(address,uint8,bytes32,bytes32)\":{\"notice\":\"Withdraws tokens for a verified user.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/Escrow.sol\":\"Escrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.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 GSN 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 */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"content\":\"pragma solidity ^0.5.0;\\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 ECDSA {\\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 * NOTE: This call _does not revert_ if the signature is invalid, or\\n * if the signer is otherwise unable to be retrieved. In those scenarios,\\n * the zero address is returned.\\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 // Check the signature length\\n if (signature.length != 65) {\\n return (address(0));\\n }\\n\\n // Divide the signature in r, s and v variables\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n // solhint-disable-next-line no-inline-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\\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 (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): 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);\\n }\\n\\n if (v != 27 && v != 28) {\\n return address(0);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n return ecrecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * replicates the behavior of the\\n * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\\n * JSON-RPC method.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n}\\n\",\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\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 * 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 */\\ncontract Ownable is Context {\\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 constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = 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 onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../../GSN/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.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 {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 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 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public returns (bool) {\\n _approve(_msgSender(), 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 * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\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 returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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 returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is 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 * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, 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 * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(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 {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is 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(address owner, address spender, uint256 amount) internal {\\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 Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n}\\n\",\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\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 `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.sol\\\";\\nimport \\\"../../utils/Address.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 ERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using SafeMath for uint256;\\n using Address for address;\\n\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n function safeApprove(IERC20 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 // solhint-disable-next-line max-line-length\\n require((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 function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \\\"SafeERC20: decreased allowance below zero\\\");\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\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(IERC20 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.\\n\\n // A Solidity high level call has three parts:\\n // 1. The target address is checked to verify it contains contract code\\n // 2. The call itself is made, and success asserted\\n // 3. The return value is decoded, which in turn checks the size of the returned data.\\n // solhint-disable-next-line max-line-length\\n require(address(token).isContract(), \\\"SafeERC20: call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = address(token).call(data);\\n require(success, \\\"SafeERC20: low-level call failed\\\");\\n\\n if (returndata.length > 0) { // Return data is optional\\n // solhint-disable-next-line max-line-length\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\"},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\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 */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/Signatures.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\\\";\\n\\nlibrary Signatures {\\n /**\\n * @notice Given a signed address, returns the signer of the address.\\n * @param message The address that was signed.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfAddress(address message, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes32 hash = keccak256(abi.encodePacked(message));\\n return getSignerOfMessageHash(hash, v, r, s);\\n }\\n\\n /**\\n * @notice Given a message hash, returns the signer of the address.\\n * @param messageHash The hash of a message.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfMessageHash(bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = ECDSA.toEthSignedMessageHash(messageHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash, construct the typed data hash\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @return The EIP712 typed data hash\\n */\\n function toEthSignedTypedDataHash(bytes32 eip712DomainSeparator, bytes32 structHash)\\n public\\n pure\\n returns (bytes32)\\n {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", eip712DomainSeparator, structHash));\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash and a signature return the signer\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfTypedDataHash(\\n bytes32 eip712DomainSeparator,\\n bytes32 structHash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public pure returns (address) {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = toEthSignedTypedDataHash(eip712DomainSeparator, structHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n}\\n\",\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"./UsingRegistryV2.sol\\\";\\n\\ncontract UsingRegistryV2BackwardsCompatible is UsingRegistryV2 {\\n // Placeholder for registry storage var in UsingRegistry and cannot be renamed\\n // without breaking release tooling.\\n // Use `registryContract` (in UsingRegistryV2) for the actual registry address.\\n IRegistry public registry;\\n}\\n\",\"keccak256\":\"0xaf5d48c4925ba115a205f17c90ad7921d81d381f98b683fc49ef5db8e8ca12c8\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/common/libraries/ReentrancyGuard.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title Helps contracts guard against reentrancy attacks.\\n * @author Remco Bloemen , Eenae \\n * @dev If you mark a function `nonReentrant`, you should also\\n * mark it `external`.\\n */\\ncontract ReentrancyGuard {\\n /// @dev counter to allow mutex lock with only one SSTORE operation\\n uint256 private _guardCounter;\\n\\n constructor() internal {\\n // The counter starts at one to prevent changing it from zero to a non-zero\\n // value, which is a more expensive operation.\\n _guardCounter = 1;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and make it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _guardCounter += 1;\\n uint256 localCounter = _guardCounter;\\n _;\\n require(localCounter == _guardCounter, \\\"reentrant call\\\");\\n }\\n}\\n\",\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/Escrow.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAttestations.sol\\\";\\nimport \\\"./interfaces/IFederatedAttestations.sol\\\";\\nimport \\\"./interfaces/IEscrow.sol\\\";\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\nimport \\\"../common/UsingRegistryV2BackwardsCompatible.sol\\\";\\nimport \\\"../common/Signatures.sol\\\";\\nimport \\\"../common/libraries/ReentrancyGuard.sol\\\";\\n\\ncontract Escrow is\\n IEscrow,\\n ICeloVersionedContract,\\n ReentrancyGuard,\\n Ownable,\\n Initializable,\\n // Maintain storage alignment since Escrow was initially deployed with UsingRegistry.sol\\n UsingRegistryV2BackwardsCompatible\\n{\\n using SafeMath for uint256;\\n using SafeERC20 for ERC20;\\n\\n event DefaultTrustedIssuerAdded(address indexed trustedIssuer);\\n event DefaultTrustedIssuerRemoved(address indexed trustedIssuer);\\n\\n event Transfer(\\n address indexed from,\\n bytes32 indexed identifier,\\n address indexed token,\\n uint256 value,\\n address paymentId,\\n uint256 minAttestations\\n );\\n\\n event TrustedIssuersSet(address indexed paymentId, address[] trustedIssuers);\\n event TrustedIssuersUnset(address indexed paymentId);\\n\\n event Withdrawal(\\n bytes32 indexed identifier,\\n // Note that in previous versions of Escrow.sol, `to` referenced\\n // the original sender of the payment\\n address indexed to,\\n address indexed token,\\n uint256 value,\\n address paymentId\\n );\\n\\n event Revocation(\\n bytes32 indexed identifier,\\n address indexed by,\\n address indexed token,\\n uint256 value,\\n address paymentId\\n );\\n\\n struct EscrowedPayment {\\n bytes32 recipientIdentifier;\\n address sender;\\n address token;\\n uint256 value;\\n uint256 sentIndex; // Location of this payment in sender's list of sent payments.\\n uint256 receivedIndex; // Location of this payment in receivers's list of received payments.\\n uint256 timestamp;\\n uint256 expirySeconds;\\n uint256 minAttestations;\\n }\\n\\n // Maps unique payment IDs to escrowed payments.\\n // These payment IDs are the temporary wallet addresses created with the escrowed payments.\\n mapping(address => EscrowedPayment) public escrowedPayments;\\n\\n // Maps receivers' identifiers to a list of received escrowed payment IDs.\\n mapping(bytes32 => address[]) public receivedPaymentIds;\\n\\n // Maps senders' addresses to a list of sent escrowed payment IDs.\\n mapping(address => address[]) public sentPaymentIds;\\n\\n // Maps payment ID to a list of issuers whose attestations will be accepted.\\n mapping(address => address[]) public trustedIssuersPerPayment;\\n\\n // Governable list of trustedIssuers to set for payments by default.\\n address[] public defaultTrustedIssuers;\\n\\n // Based on benchmarking of FederatedAttestations lookup gas consumption\\n // in the worst case (with a significant amount of buffer).\\n uint256 public constant MAX_TRUSTED_ISSUERS_PER_PAYMENT = 100;\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts\\n * @param test Set to true to skip implementation initialization\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 2, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n }\\n\\n /**\\n * @notice Add an address to the defaultTrustedIssuers list.\\n * @param trustedIssuer Address of the trustedIssuer to add.\\n * @dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\\n * @dev Throws if defaultTrustedIssuers is already at max allowed length.\\n */\\n function addDefaultTrustedIssuer(address trustedIssuer) external onlyOwner {\\n require(address(0) != trustedIssuer, \\\"trustedIssuer can't be null\\\");\\n require(\\n defaultTrustedIssuers.length.add(1) <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\\n \\\"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\\\"\\n );\\n\\n // Ensure list of trusted issuers is unique\\n for (uint256 i = 0; i < defaultTrustedIssuers.length; i = i.add(1)) {\\n require(\\n defaultTrustedIssuers[i] != trustedIssuer,\\n \\\"trustedIssuer already in defaultTrustedIssuers\\\"\\n );\\n }\\n defaultTrustedIssuers.push(trustedIssuer);\\n emit DefaultTrustedIssuerAdded(trustedIssuer);\\n }\\n\\n /**\\n * @notice Remove an address from the defaultTrustedIssuers list.\\n * @param trustedIssuer Address of the trustedIssuer to remove.\\n * @param index Index of trustedIssuer in defaultTrustedIssuers.\\n * @dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.\\n */\\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external onlyOwner {\\n uint256 numDefaultTrustedIssuers = defaultTrustedIssuers.length;\\n require(index < numDefaultTrustedIssuers, \\\"index is invalid\\\");\\n require(\\n defaultTrustedIssuers[index] == trustedIssuer,\\n \\\"trustedIssuer does not match address found at defaultTrustedIssuers[index]\\\"\\n );\\n if (index != numDefaultTrustedIssuers - 1) {\\n // Swap last index with index-to-remove\\n defaultTrustedIssuers[index] = defaultTrustedIssuers[numDefaultTrustedIssuers - 1];\\n }\\n defaultTrustedIssuers.pop();\\n emit DefaultTrustedIssuerRemoved(trustedIssuer);\\n }\\n\\n /**\\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\\n * identifier and 0 minAttestations) and without (with identifier and minAttestations).\\n * Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\\n * (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev If minAttestations is 0, trustedIssuers will be set to empty list.\\n * @dev msg.sender needs to have already approved this contract to transfer\\n */\\n // solhint-disable-next-line no-simple-event-func-name\\n function transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations\\n ) external nonReentrant returns (bool) {\\n address[] memory trustedIssuers;\\n // If minAttestations == 0, trustedIssuers should remain empty\\n if (minAttestations > 0) {\\n trustedIssuers = defaultTrustedIssuers;\\n }\\n return\\n _transfer(\\n identifier,\\n token,\\n value,\\n expirySeconds,\\n paymentId,\\n minAttestations,\\n trustedIssuers\\n );\\n }\\n\\n /**\\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\\n * identifier and 0 minAttestations) and without (with identifier\\n * and attestations completed by trustedIssuers).\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\\n * will be accepted to prove ownership over an identifier.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\\n * @dev msg.sender needs to have already approved this contract to transfer.\\n */\\n function transferWithTrustedIssuers(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] calldata trustedIssuers\\n ) external nonReentrant returns (bool) {\\n return\\n _transfer(\\n identifier,\\n token,\\n value,\\n expirySeconds,\\n paymentId,\\n minAttestations,\\n trustedIssuers\\n );\\n }\\n\\n /**\\n * @notice Withdraws tokens for a verified user.\\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n * @return True if withdraw succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if msg.sender does not prove ownership of the withdraw key.\\n */\\n function withdraw(address paymentId, uint8 v, bytes32 r, bytes32 s)\\n external\\n nonReentrant\\n returns (bool)\\n {\\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\\n require(signer == paymentId, \\\"Failed to prove ownership of the withdraw key\\\");\\n EscrowedPayment memory payment = escrowedPayments[paymentId];\\n require(payment.token != address(0) && payment.value > 0, \\\"Invalid withdraw value.\\\");\\n\\n // Due to an old bug, there may exist payments with no identifier and minAttestations > 0\\n // So ensure that these fail the attestations check, as they previously would have\\n if (payment.minAttestations > 0) {\\n bool passedCheck = false;\\n address[] memory trustedIssuers = trustedIssuersPerPayment[paymentId];\\n address attestationsAddress = registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID);\\n\\n if (trustedIssuers.length > 0) {\\n passedCheck =\\n hasCompletedV1AttestationsAsTrustedIssuer(\\n attestationsAddress,\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.minAttestations,\\n trustedIssuers\\n ) ||\\n hasCompletedV2Attestations(payment.recipientIdentifier, msg.sender, trustedIssuers);\\n } else {\\n // This is for backwards compatibility, not default/fallback behavior\\n passedCheck = hasCompletedV1Attestations(\\n attestationsAddress,\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.minAttestations\\n );\\n }\\n require(\\n passedCheck,\\n \\\"This account does not have the required attestations to withdraw this payment.\\\"\\n );\\n }\\n\\n deletePayment(paymentId);\\n\\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\\n\\n emit Withdrawal(\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.token,\\n payment.value,\\n paymentId\\n );\\n\\n return true;\\n }\\n\\n /**\\n * @notice Revokes tokens for a sender who is redeeming a payment after it has expired.\\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if msg.sender is not the sender of payment.\\n * @dev Throws if redeem time hasn't been reached yet.\\n */\\n function revoke(address paymentId) external nonReentrant returns (bool) {\\n EscrowedPayment memory payment = escrowedPayments[paymentId];\\n require(payment.sender == msg.sender, \\\"Only sender of payment can attempt to revoke payment.\\\");\\n require(\\n now >= (payment.timestamp.add(payment.expirySeconds)),\\n \\\"Transaction not redeemable for sender yet.\\\"\\n );\\n\\n deletePayment(paymentId);\\n\\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\\n\\n emit Revocation(\\n payment.recipientIdentifier,\\n payment.sender,\\n payment.token,\\n payment.value,\\n paymentId\\n );\\n\\n return true;\\n\\n }\\n\\n /**\\n * @notice Gets array of all Escrowed Payments received by identifier.\\n * @param identifier The hash of an identifier of the receiver of the escrowed payment.\\n * @return An array containing all the IDs of the Escrowed Payments that were received\\n * by the specified receiver.\\n */\\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory) {\\n return receivedPaymentIds[identifier];\\n }\\n\\n /**\\n * @notice Gets array of all Escrowed Payment IDs sent by sender.\\n * @param sender The address of the sender of the escrowed payments.\\n * @return An array containing all the IDs of the Escrowed Payments that were sent by the\\n * specified sender.\\n */\\n function getSentPaymentIds(address sender) external view returns (address[] memory) {\\n return sentPaymentIds[sender];\\n }\\n\\n /**\\n * @notice Gets array of all trusted issuers set per paymentId.\\n * @param paymentId The ID of the payment to get.\\n * @return An array of addresses of trusted issuers set for an escrowed payment.\\n */\\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory) {\\n return trustedIssuersPerPayment[paymentId];\\n }\\n\\n /**\\n * @notice Gets trusted issuers set as default for payments by `transfer` function.\\n * @return An array of addresses of trusted issuers.\\n */\\n function getDefaultTrustedIssuers() public view returns (address[] memory) {\\n return defaultTrustedIssuers;\\n }\\n\\n /**\\n * @notice Checks if account has completed minAttestations for identifier in Attestations.sol.\\n * @param attestationsAddress The address of Attestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param minAttestations The minimum number of attestations to have completed.\\n * @return Whether or not attestations in Attestations.sol\\n * exceeds minAttestations for (identifier, account).\\n */\\n function hasCompletedV1Attestations(\\n address attestationsAddress,\\n bytes32 identifier,\\n address account,\\n uint256 minAttestations\\n ) internal view returns (bool) {\\n IAttestations attestations = IAttestations(attestationsAddress);\\n (uint64 completedAttestations, ) = attestations.getAttestationStats(identifier, account);\\n return (uint256(completedAttestations) >= minAttestations);\\n }\\n\\n /**\\n * @notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\\n * contract and applies the escrow V1 check against minAttestations.\\n * @param attestationsAddress The address of Attestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param minAttestations The minimum number of attestations to have completed.\\n * @param trustedIssuers The trustedIssuer addresses to search through.\\n * @return Whether or not a trustedIssuer is Attestations.sol & attestations\\n * exceed minAttestations for (identifier, account).\\n */\\n function hasCompletedV1AttestationsAsTrustedIssuer(\\n address attestationsAddress,\\n bytes32 identifier,\\n address account,\\n uint256 minAttestations,\\n address[] memory trustedIssuers\\n ) internal view returns (bool) {\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n if (trustedIssuers[i] != attestationsAddress) {\\n continue;\\n }\\n // This can be false; one of the several trustedIssuers listed needs to prove attestations\\n return hasCompletedV1Attestations(attestationsAddress, identifier, account, minAttestations);\\n }\\n return false;\\n }\\n\\n /**\\n * @notice Checks if there are attestations for account <-> identifier from\\n * any of trustedIssuers in FederatedAttestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param trustedIssuers Issuer addresses whose attestations to trust.\\n * @return Whether or not attestations exist in FederatedAttestations.sol\\n * for (identifier, account).\\n */\\n function hasCompletedV2Attestations(\\n bytes32 identifier,\\n address account,\\n address[] memory trustedIssuers\\n ) internal view returns (bool) {\\n // Check for an attestation from a trusted issuer\\n IFederatedAttestations federatedAttestations = getFederatedAttestations();\\n (, address[] memory accounts, , , ) = federatedAttestations.lookupAttestations(\\n identifier,\\n trustedIssuers\\n );\\n // Check if an attestation was found for recipientIdentifier -> account\\n for (uint256 i = 0; i < accounts.length; i = i.add(1)) {\\n if (accounts[i] == account) {\\n return true;\\n }\\n }\\n return false;\\n }\\n\\n /**\\n * @notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\\n * enable backwards-compatible function signature for `transfer`,\\n * and since `transfer` cannot directly call `transferWithTrustedIssuers`\\n * due to reentrancy guard.\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\\n * will be accepted to prove ownership over an identifier.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\\n * @dev msg.sender needs to have already approved this contract to transfer.\\n */\\n function _transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] memory trustedIssuers\\n ) private returns (bool) {\\n require(token != address(0) && value > 0 && expirySeconds > 0, \\\"Invalid transfer inputs.\\\");\\n require(\\n !(identifier == 0 && minAttestations > 0),\\n \\\"Invalid privacy inputs: Can't require attestations if no identifier\\\"\\n );\\n // Withdraw logic with trustedIssuers in FederatedAttestations disregards\\n // minAttestations, so ensure that this is not set to 0 to prevent confusing behavior\\n // This also implies: if identifier == 0 => trustedIssuers.length == 0\\n require(\\n !(minAttestations == 0 && trustedIssuers.length > 0),\\n \\\"trustedIssuers may only be set when attestations are required\\\"\\n );\\n\\n // Ensure that withdrawal will not fail due to exceeding trustedIssuer limit\\n // in FederatedAttestations.lookupAttestations\\n require(\\n trustedIssuers.length <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\\n \\\"Too many trustedIssuers provided\\\"\\n );\\n\\n IAttestations attestations = getAttestations();\\n require(\\n minAttestations <= attestations.getMaxAttestations(),\\n \\\"minAttestations larger than limit\\\"\\n );\\n\\n uint256 sentIndex = sentPaymentIds[msg.sender].push(paymentId).sub(1);\\n uint256 receivedIndex = receivedPaymentIds[identifier].push(paymentId).sub(1);\\n\\n EscrowedPayment storage newPayment = escrowedPayments[paymentId];\\n require(newPayment.timestamp == 0, \\\"paymentId already used\\\");\\n newPayment.recipientIdentifier = identifier;\\n newPayment.sender = msg.sender;\\n newPayment.token = token;\\n newPayment.value = value;\\n newPayment.sentIndex = sentIndex;\\n newPayment.receivedIndex = receivedIndex;\\n newPayment.timestamp = block.timestamp;\\n newPayment.expirySeconds = expirySeconds;\\n newPayment.minAttestations = minAttestations;\\n\\n // Avoid unnecessary storage write\\n if (trustedIssuers.length > 0) {\\n trustedIssuersPerPayment[paymentId] = trustedIssuers;\\n }\\n\\n ERC20(token).safeTransferFrom(msg.sender, address(this), value);\\n emit Transfer(msg.sender, identifier, token, value, paymentId, minAttestations);\\n // Split into a second event for ABI backwards compatibility\\n emit TrustedIssuersSet(paymentId, trustedIssuers);\\n return true;\\n }\\n\\n /**\\n * @notice Deletes the payment from its receiver's and sender's lists of payments,\\n * and zeroes out all the data in the struct.\\n * @param paymentId The ID of the payment to be deleted.\\n */\\n function deletePayment(address paymentId) private {\\n EscrowedPayment storage payment = escrowedPayments[paymentId];\\n address[] storage received = receivedPaymentIds[payment.recipientIdentifier];\\n address[] storage sent = sentPaymentIds[payment.sender];\\n\\n escrowedPayments[received[received.length - 1]].receivedIndex = payment.receivedIndex;\\n received[payment.receivedIndex] = received[received.length - 1];\\n received.length = received.length.sub(1);\\n\\n escrowedPayments[sent[sent.length - 1]].sentIndex = payment.sentIndex;\\n sent[payment.sentIndex] = sent[sent.length - 1];\\n sent.length = sent.length.sub(1);\\n\\n delete escrowedPayments[paymentId];\\n delete trustedIssuersPerPayment[paymentId];\\n emit TrustedIssuersUnset(paymentId);\\n }\\n}\\n\",\"keccak256\":\"0xdad4bd7ddec99e0abef1fca83aa0eb1b66e9e6bb5b7e7caccb20e899b27706e5\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IEscrow.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IEscrow {\\n function transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations\\n ) external returns (bool);\\n function transferWithTrustedIssuers(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] calldata trustedIssuers\\n ) external returns (bool);\\n function withdraw(address paymentID, uint8 v, bytes32 r, bytes32 s) external returns (bool);\\n function revoke(address paymentID) external returns (bool);\\n\\n // view functions\\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory);\\n function getSentPaymentIds(address sender) external view returns (address[] memory);\\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory);\\n function getDefaultTrustedIssuers() external view returns (address[] memory);\\n function MAX_TRUSTED_ISSUERS_PER_PAYMENT() external view returns (uint256);\\n\\n // onlyOwner functions\\n function addDefaultTrustedIssuer(address trustedIssuer) external;\\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external;\\n}\\n\",\"keccak256\":\"0xdf3bb49c05fca0dca025939bcacf045b8b788dcbb7c3f1fdc798575f59cdb0a3\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200471738038062004717833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060016000819055506000620000636200012b60201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080620001235760018060146101000a81548160ff0219169083151502179055505b505062000133565b600033905090565b6145d480620001436000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063696e3fb1116100de5780638129fc1c116100975780638f80c33e116100715780638f80c33e146109b1578063e1d9a08014610a29578063f2fde38b14610ab7578063f782878914610afb57610173565b80638129fc1c1461093b5780638da5cb5b146109455780638f32d59b1461098f57610173565b8063696e3fb114610735578063702cb75d14610779578063715018a61461081d57806371f7f6d41461082757806374a8f103146108955780637b103999146108f157610173565b806354255be01161013057806354255be0146104525780635b57b65b146104855780635cb516e9146105085780635fb2076f1461059657806360a2a152146105b4578063680d782c1461064d57610173565b8063158ef93e1461017857806318d465321461019a5780631ea153dd1461023357806328c1f99b1461032c5780632c21c7f6146103765780633e68d5d7146103d5575b600080fd5b610180610b49565b604051808215151515815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561021f578082015181840152602081019050610204565b505050509050019250505060405180910390f35b610312600480360360e081101561024957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102ce57600080fd5b8201836020820111156102e057600080fd5b8035906020019184602083028401116401000000008311171561030257600080fd5b9091929391929390505050610c29565b604051808215151515815260200191505060405180910390f35b610334610d17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e610d1d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103c15780820151818401526020810190506103a6565b505050509050019250505060405180910390f35b610438600480360360808110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b61045a6114e7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6104b16004803603602081101561049b57600080fd5b810190808035906020019092919050505061150e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104f45780820151818401526020810190506104d9565b505050509050019250505060405180910390f35b6105546004803603604081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6115fa565b6040518082815260200191505060405180910390f35b6105f6600480360360208110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ff565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063957808201518184015260208101905061061e565b505050509050019250505060405180910390f35b61068f6004803603602081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b6107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175a565b005b610803600480360360c081101561078f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a80565b604051808215151515815260200191505060405180910390f35b610825611bc1565b005b6108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b604051808215151515815260200191505060405180910390f35b6108f96120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610943612120565b005b61094d6121c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109976121f2565b604051808215151515815260200191505060405180910390f35b6109e7600480360360408110156109c757600080fd5b810190808035906020019092919080359060200190929190505050612251565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7560048036036040811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061229c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af960048036036020811015610acd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e7565b005b610b4760048036036040811015610b1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236d565b005b600160149054906101000a900460ff1681565b6060600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610c1d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bd3575b50505050509050919050565b600060016000808282540192505081905550600080549050610c918a8a8a8a8a8a8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612644565b91506000548114610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5098975050505050505050565b61ce1081565b60606007805480602002602001604051908101604052809291908181526020018280548015610da157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d57575b5050505050905090565b600060016000808282540192505081905550600080549050600073__Signatures____________________________6396ef41a1338888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015610e5e57600080fd5b505af4158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614468602d913960400191505060405180910390fd5b610f27614158565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16141580156110ab575060008160600151115b61111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642077697468647261772076616c75652e00000000000000000081525060200191505060405180910390fd5b6000816101000151111561137f5760008090506060600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156111f157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111a7575b50505050509050600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b8101908080519060200190929190505050905060008251111561130d576112f08185600001513387610100015186612dc4565b80611306575061130584600001513384612e5e565b5b9250611325565b611322818560000151338761010001516132ba565b92505b8261137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e81526020018061451d604e913960600191505060405180910390fd5b5050505b611388886133ae565b6113bb338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1682600001517fab4f92d461fdbd1af5db2375223d65edb43bcb99129b19ab4954004883e5202584606001518c604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a460019350505060005481146114de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50949350505050565b60008060008060016002600080839350829250819150809050935093509350935090919293565b6060600460008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156115a357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611559575b50505050509050919050565b600660205281600052604060002081815481106115c857fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156116c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611676575b50505050509050919050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154908060070154908060080154905089565b6117626121f2565b6117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f747275737465644973737565722063616e2774206265206e756c6c000000000081525060200191505060405180910390fd5b6064611892600160078054905061392690919063ffffffff16565b11156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001806143ad604a913960600191505060405180910390fd5b60008090505b6007805490508110156119d3578173ffffffffffffffffffffffffffffffffffffffff166007828154811061192057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061443a602e913960400191505060405180910390fd5b6119cc60018261392690919063ffffffff16565b90506118ef565b5060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508073ffffffffffffffffffffffffffffffffffffffff167fad14c01336ff6a84f45f0edc75306d67694dbe035d43d40805d363bf42a1fcf960405160405180910390a250565b60006001600080828254019250508190555060008054905060606000841115611b2d576007805480602002602001604051908101604052809291908181526020018280548015611b2557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611adb575b505050505090505b611b3c89898989898987612644565b9250506000548114611bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b509695505050505050565b611bc96121f2565b611c3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078181548110611d0957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060016000808282540192505081905550600080549050611d58614158565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061456b6035913960400191505060405180910390fd5b611f3a8160e001518260c0015161392690919063ffffffff16565b421015611f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614383602a913960400191505060405180910390fd5b611f9b846133ae565b611fce338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1682600001517f6c464fad8039e6f09ec3a57a29f132cf2573d166833256960e2407eefff8f592846060015188604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a4600192505060005481146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff16156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506121c6336139ae565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612235613af4565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6004602052816000526040600020818154811061226a57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560205281600052604060002081815481106122b557fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122ef6121f2565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61236a816139ae565b50565b6123756121f2565b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006007805490509050808210612466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e64657820697320696e76616c69640000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166007838154811061248a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180614339604a913960600191505060405180910390fd5b6001810382146125bc576007600182038154811061253b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007838154811061257357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60078054806125c757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558273ffffffffffffffffffffffffffffffffffffffff167f73b0b5acdae4b4df2c8d85a2b1c23acc9e729494c0a1dab7f81e3d73f0c84c0860405160405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126825750600086115b801561268e5750600085115b612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207472616e7366657220696e707574732e000000000000000081525060200191505060405180910390fd5b6000801b881480156127125750600083115b15612768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806143f76043913960600191505060405180910390fd5b600083148015612779575060008251115b156127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806144b6603d913960400191505060405180910390fd5b606482511115612847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546f6f206d616e792074727573746564497373756572732070726f766964656481525060200191505060405180910390fd5b6000612851613afc565b90508073ffffffffffffffffffffffffffffffffffffffff16637796a6846040518163ffffffff1660e01b815260040160206040518083038186803b15801561289957600080fd5b505afa1580156128ad573d6000803e3d6000fd5b505050506040513d60208110156128c357600080fd5b810190808051906020019092919050505084111561292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144956021913960400191505060405180910390fd5b60006129e36001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000612a706001600460008e81526020019081526020016000208990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015414612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061796d656e74496420616c726561647920757365640000000000000000000081525060200191505060405180910390fd5b8b8160000181905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160030181905550828160040181905550818160050181905550428160060181905550888160070181905550868160080181905550600086511115612c535785600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190612c519291906141d3565b505b612c8033308c8e73ffffffffffffffffffffffffffffffffffffffff16613c21909392919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff168c3373ffffffffffffffffffffffffffffffffffffffff167f0fc2463e82c3b8a7868e75b68a76a144816d772687e5b09f45c02db37eedf4f68d8c8c604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a48773ffffffffffffffffffffffffffffffffffffffff167fcab1568169bf0442f60fe89e06961cd74fbb1630c0ef54cd00562ff0ded2c2c0876040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015612d9e578082015181840152602081019050612d83565b505050509050019250505060405180910390a26001945050505050979650505050505050565b600080600090505b8251811015612e4f578673ffffffffffffffffffffffffffffffffffffffff16838281518110612df857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612e2057612e34565b612e2c878787876132ba565b915050612e55565b612e4860018261392690919063ffffffff16565b9050612dcc565b50600090505b95945050505050565b600080612e69613d27565b905060608173ffffffffffffffffffffffffffffffffffffffff1663a862e12e87866040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612ee3578082015181840152602081019050612ec8565b50505050905001935050505060006040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060a0811015612f4557600080fd5b8101908080516040519392919084640100000000821115612f6557600080fd5b83820191506020820185811115612f7b57600080fd5b8251866020820283011164010000000082111715612f9857600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612fcf578082015181840152602081019050612fb4565b5050505090500160405260200180516040519392919084640100000000821115612ff857600080fd5b8382019150602082018581111561300e57600080fd5b825186602082028301116401000000008211171561302b57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613062578082015181840152602081019050613047565b505050509050016040526020018051604051939291908464010000000082111561308b57600080fd5b838201915060208201858111156130a157600080fd5b82518660208202830111640100000000821117156130be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156130f55780820151818401526020810190506130da565b505050509050016040526020018051604051939291908464010000000082111561311e57600080fd5b8382019150602082018581111561313457600080fd5b825186602082028301116401000000008211171561315157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561318857808201518184015260208101905061316d565b50505050905001604052602001805160405193929190846401000000008211156131b157600080fd5b838201915060208201858111156131c757600080fd5b82518660208202830111640100000000821117156131e457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561321b578082015181840152602081019050613200565b5050505090500160405250505050505091505060008090505b81518110156132ab578573ffffffffffffffffffffffffffffffffffffffff1682828151811061326057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561329057600193505050506132b3565b6132a460018261392690919063ffffffff16565b9050613234565b506000925050505b9392505050565b60008085905060008173ffffffffffffffffffffffffffffffffffffffff1663596abea587876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561334657600080fd5b505afa15801561335a573d6000803e3d6000fd5b505050506040513d604081101561337057600080fd5b8101908080519060200190929190805190602001909291905050505063ffffffff169050838167ffffffffffffffff16101592505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600460008360000154815260200190815260200160002090506000600560008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508260050154600360008460018680549050038154811061348f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508160018380549050038154811061350e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284600501548154811061354957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506135a960018380549050613bd790919063ffffffff16565b82816135b5919061425d565b50826004015460036000836001858054905003815481106135d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060018280549050038154811061365157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168184600401548154811061368c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136ec60018280549050613bd790919063ffffffff16565b81816136f8919061425d565b50600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055600482016000905560058201600090556006820160009055600782016000905560088201600090555050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061380c9190614289565b8373ffffffffffffffffffffffffffffffffffffffff167fbe92782e8f0fc2eaba574c74ef88e93ee08abda36dd1889acb0065d4af631d8860405160405180910390a250505050565b613921838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b505050565b6000808284019050838110156139a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806143136026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613b9757600080fd5b505afa158015613bab573d6000803e3d6000fd5b505050506040513d6020811015613bc157600080fd5b8101908080519060200190929190505050905090565b6000613c1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061404d565b905092915050565b613d21848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b50505050565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4665646572617465644174746573746174696f6e7300000000000000000000008152506015019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dc257600080fd5b505afa158015613dd6573d6000803e3d6000fd5b505050506040513d6020811015613dec57600080fd5b8101908080519060200190929190505050905090565b613e218273ffffffffffffffffffffffffffffffffffffffff1661410d565b613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613ee25780518252602082019150602081019050602083039250613ebf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613f44576040519150601f19603f3d011682016040523d82523d6000602084013e613f49565b606091505b509150915081613fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561404757808060200190516020811015613fe057600080fd5b8101908080519060200190929190505050614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806144f3602a913960400191505060405180910390fd5b5b50505050565b60008383111582906140fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140bf5780820151818401526020810190506140a4565b50505050905090810190601f1680156140ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561414f57506000801b8214155b92505050919050565b60405180610120016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821561424c579160200282015b8281111561424b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906141f3565b5b50905061425991906142aa565b5090565b8154818355818111156142845781836000526020600020918201910161428391906142ed565b5b505050565b50805460008255906000526020600020908101906142a791906142ed565b50565b6142ea91905b808211156142e657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016142b0565b5090565b90565b61430f91905b8082111561430b5760008160009055506001016142f3565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e7469666965727472757374656449737375657220616c726561647920696e2064656661756c7454727573746564497373756572734661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b65796d696e4174746573746174696f6e73206c6172676572207468616e206c696d69747472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e73206172652072657175697265645361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742ea265627a7a723158207cb80720564280ab06552c3ec2227c291e9f94e23edbcf4ea00b499d33de100464736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063696e3fb1116100de5780638129fc1c116100975780638f80c33e116100715780638f80c33e146109b1578063e1d9a08014610a29578063f2fde38b14610ab7578063f782878914610afb57610173565b80638129fc1c1461093b5780638da5cb5b146109455780638f32d59b1461098f57610173565b8063696e3fb114610735578063702cb75d14610779578063715018a61461081d57806371f7f6d41461082757806374a8f103146108955780637b103999146108f157610173565b806354255be01161013057806354255be0146104525780635b57b65b146104855780635cb516e9146105085780635fb2076f1461059657806360a2a152146105b4578063680d782c1461064d57610173565b8063158ef93e1461017857806318d465321461019a5780631ea153dd1461023357806328c1f99b1461032c5780632c21c7f6146103765780633e68d5d7146103d5575b600080fd5b610180610b49565b604051808215151515815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561021f578082015181840152602081019050610204565b505050509050019250505060405180910390f35b610312600480360360e081101561024957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102ce57600080fd5b8201836020820111156102e057600080fd5b8035906020019184602083028401116401000000008311171561030257600080fd5b9091929391929390505050610c29565b604051808215151515815260200191505060405180910390f35b610334610d17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e610d1d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103c15780820151818401526020810190506103a6565b505050509050019250505060405180910390f35b610438600480360360808110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b61045a6114e7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6104b16004803603602081101561049b57600080fd5b810190808035906020019092919050505061150e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104f45780820151818401526020810190506104d9565b505050509050019250505060405180910390f35b6105546004803603604081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6115fa565b6040518082815260200191505060405180910390f35b6105f6600480360360208110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ff565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063957808201518184015260208101905061061e565b505050509050019250505060405180910390f35b61068f6004803603602081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b6107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175a565b005b610803600480360360c081101561078f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a80565b604051808215151515815260200191505060405180910390f35b610825611bc1565b005b6108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b604051808215151515815260200191505060405180910390f35b6108f96120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610943612120565b005b61094d6121c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109976121f2565b604051808215151515815260200191505060405180910390f35b6109e7600480360360408110156109c757600080fd5b810190808035906020019092919080359060200190929190505050612251565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7560048036036040811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061229c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af960048036036020811015610acd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e7565b005b610b4760048036036040811015610b1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236d565b005b600160149054906101000a900460ff1681565b6060600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610c1d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bd3575b50505050509050919050565b600060016000808282540192505081905550600080549050610c918a8a8a8a8a8a8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612644565b91506000548114610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5098975050505050505050565b61ce1081565b60606007805480602002602001604051908101604052809291908181526020018280548015610da157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d57575b5050505050905090565b600060016000808282540192505081905550600080549050600073__Signatures____________________________6396ef41a1338888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015610e5e57600080fd5b505af4158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614468602d913960400191505060405180910390fd5b610f27614158565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16141580156110ab575060008160600151115b61111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642077697468647261772076616c75652e00000000000000000081525060200191505060405180910390fd5b6000816101000151111561137f5760008090506060600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156111f157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111a7575b50505050509050600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b8101908080519060200190929190505050905060008251111561130d576112f08185600001513387610100015186612dc4565b80611306575061130584600001513384612e5e565b5b9250611325565b611322818560000151338761010001516132ba565b92505b8261137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e81526020018061451d604e913960600191505060405180910390fd5b5050505b611388886133ae565b6113bb338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1682600001517fab4f92d461fdbd1af5db2375223d65edb43bcb99129b19ab4954004883e5202584606001518c604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a460019350505060005481146114de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50949350505050565b60008060008060016002600080839350829250819150809050935093509350935090919293565b6060600460008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156115a357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611559575b50505050509050919050565b600660205281600052604060002081815481106115c857fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156116c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611676575b50505050509050919050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154908060070154908060080154905089565b6117626121f2565b6117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f747275737465644973737565722063616e2774206265206e756c6c000000000081525060200191505060405180910390fd5b6064611892600160078054905061392690919063ffffffff16565b11156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001806143ad604a913960600191505060405180910390fd5b60008090505b6007805490508110156119d3578173ffffffffffffffffffffffffffffffffffffffff166007828154811061192057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061443a602e913960400191505060405180910390fd5b6119cc60018261392690919063ffffffff16565b90506118ef565b5060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508073ffffffffffffffffffffffffffffffffffffffff167fad14c01336ff6a84f45f0edc75306d67694dbe035d43d40805d363bf42a1fcf960405160405180910390a250565b60006001600080828254019250508190555060008054905060606000841115611b2d576007805480602002602001604051908101604052809291908181526020018280548015611b2557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611adb575b505050505090505b611b3c89898989898987612644565b9250506000548114611bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b509695505050505050565b611bc96121f2565b611c3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078181548110611d0957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060016000808282540192505081905550600080549050611d58614158565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061456b6035913960400191505060405180910390fd5b611f3a8160e001518260c0015161392690919063ffffffff16565b421015611f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614383602a913960400191505060405180910390fd5b611f9b846133ae565b611fce338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1682600001517f6c464fad8039e6f09ec3a57a29f132cf2573d166833256960e2407eefff8f592846060015188604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a4600192505060005481146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff16156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506121c6336139ae565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612235613af4565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6004602052816000526040600020818154811061226a57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560205281600052604060002081815481106122b557fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122ef6121f2565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61236a816139ae565b50565b6123756121f2565b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006007805490509050808210612466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e64657820697320696e76616c69640000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166007838154811061248a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180614339604a913960600191505060405180910390fd5b6001810382146125bc576007600182038154811061253b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007838154811061257357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60078054806125c757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558273ffffffffffffffffffffffffffffffffffffffff167f73b0b5acdae4b4df2c8d85a2b1c23acc9e729494c0a1dab7f81e3d73f0c84c0860405160405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126825750600086115b801561268e5750600085115b612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207472616e7366657220696e707574732e000000000000000081525060200191505060405180910390fd5b6000801b881480156127125750600083115b15612768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806143f76043913960600191505060405180910390fd5b600083148015612779575060008251115b156127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806144b6603d913960400191505060405180910390fd5b606482511115612847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546f6f206d616e792074727573746564497373756572732070726f766964656481525060200191505060405180910390fd5b6000612851613afc565b90508073ffffffffffffffffffffffffffffffffffffffff16637796a6846040518163ffffffff1660e01b815260040160206040518083038186803b15801561289957600080fd5b505afa1580156128ad573d6000803e3d6000fd5b505050506040513d60208110156128c357600080fd5b810190808051906020019092919050505084111561292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144956021913960400191505060405180910390fd5b60006129e36001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000612a706001600460008e81526020019081526020016000208990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015414612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061796d656e74496420616c726561647920757365640000000000000000000081525060200191505060405180910390fd5b8b8160000181905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160030181905550828160040181905550818160050181905550428160060181905550888160070181905550868160080181905550600086511115612c535785600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190612c519291906141d3565b505b612c8033308c8e73ffffffffffffffffffffffffffffffffffffffff16613c21909392919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff168c3373ffffffffffffffffffffffffffffffffffffffff167f0fc2463e82c3b8a7868e75b68a76a144816d772687e5b09f45c02db37eedf4f68d8c8c604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a48773ffffffffffffffffffffffffffffffffffffffff167fcab1568169bf0442f60fe89e06961cd74fbb1630c0ef54cd00562ff0ded2c2c0876040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015612d9e578082015181840152602081019050612d83565b505050509050019250505060405180910390a26001945050505050979650505050505050565b600080600090505b8251811015612e4f578673ffffffffffffffffffffffffffffffffffffffff16838281518110612df857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612e2057612e34565b612e2c878787876132ba565b915050612e55565b612e4860018261392690919063ffffffff16565b9050612dcc565b50600090505b95945050505050565b600080612e69613d27565b905060608173ffffffffffffffffffffffffffffffffffffffff1663a862e12e87866040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612ee3578082015181840152602081019050612ec8565b50505050905001935050505060006040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060a0811015612f4557600080fd5b8101908080516040519392919084640100000000821115612f6557600080fd5b83820191506020820185811115612f7b57600080fd5b8251866020820283011164010000000082111715612f9857600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612fcf578082015181840152602081019050612fb4565b5050505090500160405260200180516040519392919084640100000000821115612ff857600080fd5b8382019150602082018581111561300e57600080fd5b825186602082028301116401000000008211171561302b57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613062578082015181840152602081019050613047565b505050509050016040526020018051604051939291908464010000000082111561308b57600080fd5b838201915060208201858111156130a157600080fd5b82518660208202830111640100000000821117156130be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156130f55780820151818401526020810190506130da565b505050509050016040526020018051604051939291908464010000000082111561311e57600080fd5b8382019150602082018581111561313457600080fd5b825186602082028301116401000000008211171561315157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561318857808201518184015260208101905061316d565b50505050905001604052602001805160405193929190846401000000008211156131b157600080fd5b838201915060208201858111156131c757600080fd5b82518660208202830111640100000000821117156131e457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561321b578082015181840152602081019050613200565b5050505090500160405250505050505091505060008090505b81518110156132ab578573ffffffffffffffffffffffffffffffffffffffff1682828151811061326057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561329057600193505050506132b3565b6132a460018261392690919063ffffffff16565b9050613234565b506000925050505b9392505050565b60008085905060008173ffffffffffffffffffffffffffffffffffffffff1663596abea587876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561334657600080fd5b505afa15801561335a573d6000803e3d6000fd5b505050506040513d604081101561337057600080fd5b8101908080519060200190929190805190602001909291905050505063ffffffff169050838167ffffffffffffffff16101592505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600460008360000154815260200190815260200160002090506000600560008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508260050154600360008460018680549050038154811061348f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508160018380549050038154811061350e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284600501548154811061354957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506135a960018380549050613bd790919063ffffffff16565b82816135b5919061425d565b50826004015460036000836001858054905003815481106135d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060018280549050038154811061365157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168184600401548154811061368c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136ec60018280549050613bd790919063ffffffff16565b81816136f8919061425d565b50600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055600482016000905560058201600090556006820160009055600782016000905560088201600090555050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061380c9190614289565b8373ffffffffffffffffffffffffffffffffffffffff167fbe92782e8f0fc2eaba574c74ef88e93ee08abda36dd1889acb0065d4af631d8860405160405180910390a250505050565b613921838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b505050565b6000808284019050838110156139a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806143136026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613b9757600080fd5b505afa158015613bab573d6000803e3d6000fd5b505050506040513d6020811015613bc157600080fd5b8101908080519060200190929190505050905090565b6000613c1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061404d565b905092915050565b613d21848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b50505050565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4665646572617465644174746573746174696f6e7300000000000000000000008152506015019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dc257600080fd5b505afa158015613dd6573d6000803e3d6000fd5b505050506040513d6020811015613dec57600080fd5b8101908080519060200190929190505050905090565b613e218273ffffffffffffffffffffffffffffffffffffffff1661410d565b613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613ee25780518252602082019150602081019050602083039250613ebf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613f44576040519150601f19603f3d011682016040523d82523d6000602084013e613f49565b606091505b509150915081613fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561404757808060200190516020811015613fe057600080fd5b8101908080519060200190929190505050614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806144f3602a913960400191505060405180910390fd5b5b50505050565b60008383111582906140fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140bf5780820151818401526020810190506140a4565b50505050905090810190601f1680156140ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561414f57506000801b8214155b92505050919050565b60405180610120016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821561424c579160200282015b8281111561424b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906141f3565b5b50905061425991906142aa565b5090565b8154818355818111156142845781836000526020600020918201910161428391906142ed565b5b505050565b50805460008255906000526020600020908101906142a791906142ed565b50565b6142ea91905b808211156142e657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016142b0565b5090565b90565b61430f91905b8082111561430b5760008160009055506001016142f3565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e7469666965727472757374656449737375657220616c726561647920696e2064656661756c7454727573746564497373756572734661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b65796d696e4174746573746174696f6e73206c6172676572207468616e206c696d69747472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e73206172652072657175697265645361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742ea265627a7a723158207cb80720564280ab06552c3ec2227c291e9f94e23edbcf4ea00b499d33de100464736f6c634300050d0032", + "sourceMap": "650:21507:95:-;;;3270:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;3270:52:95;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3270:52:95;;;;;;;;;;;;;;;;3314:4;558:1:38;542:13;:17;;;;698::4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;3270:52:95;650:21507;;788:96:0;833:15;867:10;860:17;;788:96;:::o;650:21507:95:-;;;;;;;", + "deployedSourceMap": "650:21507:95:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;650:21507:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13387:124:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13387:124:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13387:124:95;;;;;;;;;;;;;;;;;8823:439;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8823:439:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8823:439:95;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8823:439:95;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8823:439:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14028:114:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14028:114:95;;;;;;;;;;;;;;;;;9752:1936;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9752:1936:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3496:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12982:140:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12982:140:95;;;;;;;;;;;;;;;;;2742:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2742:61:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3059;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13724:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13724:150:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13724:150:95;;;;;;;;;;;;;;;;;2337:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2337:59:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:693;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4106:693:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;7028:569;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7028:569:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;2879:38:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2879:38:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12051:636;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12051:636:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;328:25:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3725:84:95;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2478:55:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2478:55:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2607:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2607:51:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;5092:667:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5092:667:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;;;;;;;;;;;:::o;13387:124:95:-;13453:16;13484:14;:22;13499:6;13484:22;;;;;;;;;;;;;;;13477:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13387:124;;;:::o;8823:439::-;9074:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;9099:158:95;9118:10;9138:5;9153;9168:13;9191:9;9210:15;9235:14;;9099:158;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9099:158:95;;;;;;:9;:158::i;:::-;9086:171;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8823:439:95;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;14028:114:95:-;14085:16;14116:21;14109:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14028:114;:::o;9752:1936::-;9863:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;9877:14:95;9894:10;:29;9924:10;9936:1;9939;9942;9894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9894:50:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9894:50:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9894:50:95;;;;;;;;;;;;;;;;9877:67;;9968:9;9958:19;;:6;:19;;;9950:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10033:30;;:::i;:::-;10066:16;:27;10083:9;10066:27;;;;;;;;;;;;;;;10033:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10132:1;10107:27;;:7;:13;;;:27;;;;:48;;;;;10154:1;10138:7;:13;;;:17;10107:48;10099:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10401:1;10375:7;:23;;;:27;10371:1057;;;10412:16;10431:5;10412:24;;10444:31;10478:24;:35;10503:9;10478:35;;;;;;;;;;;;;;;10444:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10521:27;949:42:27;10551:35:95;;;1226:32:27;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1226:32:27;;;1216:43;;;;;;10551:61:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10551:61:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10551:61:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10551:61:95;;;;;;;;;;;;;;;;10521:91;;10649:1;10625:14;:21;:25;10621:667;;;10686:216;10741:19;10774:7;:27;;;10815:10;10839:7;:23;;;10876:14;10686:41;:216::i;:::-;:313;;;;10916:83;10943:7;:27;;;10972:10;10984:14;10916:26;:83::i;:::-;10686:313;10662:337;;10621:667;;;11116:163;11154:19;11185:7;:27;;;11224:10;11246:7;:23;;;11116:26;:163::i;:::-;11102:177;;10621:667;11312:11;11295:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10371:1057;;;;11434:24;11448:9;11434:13;:24::i;:::-;11465:60;11499:10;11511:7;:13;;;11471:7;:13;;;11465:33;;;;:60;;;;;:::i;:::-;11608:7;:13;;;11537:128;;11590:10;11537:128;;11555:7;:27;;;11537:128;11629:7;:13;;;11650:9;11537:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;11679:4;11672:11;;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9752:1936:95;;;;;;;:::o;3496:117::-;3547:7;3556;3565;3574;3597:1;3600;3603;3606;3589:19;;;;;;;;;;;;;;;;;;;;3496:117;;;;:::o;12982:140::-;13056:16;13087:18;:30;13106:10;13087:30;;;;;;;;;;;13080:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:140;;;:::o;2742:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3059:::-;3117:3;3059:61;:::o;13724:150::-;13803:16;13834:24;:35;13859:9;13834:35;;;;;;;;;;;;;;;13827:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13724:150;;;:::o;2337:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4106:693::-;1103:9:4;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4209:13:95;4195:27;;4203:1;4195:27;;;;4187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3117:3;4275:35;4308:1;4275:21;:28;;;;:32;;:35;;;;:::i;:::-;:70;;4260:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4495:9;4507:1;4495:13;;4490:207;4514:21;:28;;;;4510:1;:32;4490:207;;;4611:13;4583:41;;:21;4605:1;4583:24;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;4566:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4548:8;4554:1;4548;:5;;:8;;;;:::i;:::-;4544:12;;4490:207;;;;4702:21;4729:13;4702:41;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4702:41:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4780:13;4754:40;;;;;;;;;;;;4106:693;:::o;7028:569::-;7222:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;7234:31:95;7360:1;7342:15;:19;7338:78;;;7388:21;7371:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7338:78;7434:158;7453:10;7473:5;7488;7503:13;7526:9;7545:15;7570:14;7434:9;:158::i;:::-;7421:171;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7028:569:95;;;;;;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;2879:38:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12051:636::-;12117:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;12129:30:95;;:::i;:::-;12162:16;:27;12179:9;12162:27;;;;;;;;;;;;;;;12129:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12221:10;12203:28;;:7;:14;;;:28;;;12195:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:44;12340:7;:21;;;12318:7;:17;;;:21;;:44;;;;:::i;:::-;12310:3;:53;;12295:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12428:24;12442:9;12428:13;:24::i;:::-;12459:60;12493:10;12505:7;:13;;;12465:7;:13;;;12459:33;;;;:60;;;;;:::i;:::-;12606:7;:13;;;12531:132;;12584:7;:14;;;12531:132;;12549:7;:27;;;12531:132;12627:7;:13;;;12648:9;12531:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;12677:4;12670:11;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12051:636:95;;;;:::o;328:25:28:-;;;;;;;;;;;;;:::o;3725:84:95:-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;3774:30:95;3793:10;3774:18;:30::i;:::-;3725:84::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;2478:55:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2607:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;5092:667:95:-;1103:9:4;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5191:32:95;5226:21;:28;;;;5191:63;;5276:24;5268:5;:32;5260:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:13;5342:45;;:21;5364:5;5342:28;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;5327:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5523:1;5496:24;:28;5487:5;:37;5483:186;;5611:21;5660:1;5633:24;:28;5611:51;;;;;;;;;;;;;;;;;;;;;;;;;5580:21;5602:5;5580:28;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;5483:186;5674:21;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5740:13;5712:42;;;;;;;;;;;;1159:1:4;5092:667:95;;:::o;18786:2396::-;19004:4;19041:1;19024:19;;:5;:19;;;;:32;;;;;19055:1;19047:5;:9;19024:32;:53;;;;;19076:1;19060:13;:17;19024:53;19016:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19143:1;19129:15;;:10;:15;:38;;;;;19166:1;19148:15;:19;19129:38;19127:41;19112:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19536:1;19517:15;:20;:49;;;;;19565:1;19541:14;:21;:25;19517:49;19515:52;19500:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3117:3;19798:14;:21;:56;;19783:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19909:26;19938:17;:15;:17::i;:::-;19909:46;;19995:12;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19995:33:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19995:33:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19995:33:95;;;;;;;;;;;;;;;;19976:15;:52;;19961:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20084:17;20104:49;20151:1;20104:14;:26;20119:10;20104:26;;;;;;;;;;;;;;;20136:9;20104:42;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20104:42:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;:49;;;;:::i;:::-;20084:69;;20159:21;20183:53;20234:1;20183:18;:30;20202:10;20183:30;;;;;;;;;;;20219:9;20183:46;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20183:46:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:50;;:53;;;;:::i;:::-;20159:77;;20243:34;20280:16;:27;20297:9;20280:27;;;;;;;;;;;;;;;20243:64;;20345:1;20321:10;:20;;;:25;20313:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20412:10;20379;:30;;:43;;;;20448:10;20428;:17;;;:30;;;;;;;;;;;;;;;;;;20483:5;20464:10;:16;;;:24;;;;;;;;;;;;;;;;;;20513:5;20494:10;:16;;:24;;;;20547:9;20524:10;:20;;:32;;;;20589:13;20562:10;:24;;:40;;;;20631:15;20608:10;:20;;:38;;;;20679:13;20652:10;:24;;:40;;;;20727:15;20698:10;:26;;:44;;;;20816:1;20792:14;:21;:25;20788:98;;;20865:14;20827:24;:35;20852:9;20827:35;;;;;;;;;;;;;;;:52;;;;;;;;;;;;:::i;:::-;;20788:98;20892:63;20922:10;20942:4;20949:5;20898;20892:29;;;;:63;;;;;;:::i;:::-;20999:5;20966:74;;20987:10;20975;20966:74;;;21006:5;21013:9;21024:15;20966:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21134:9;21116:44;;;21145:14;21116:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21116:44:95;;;;;;;;;;;;;;;;;21173:4;21166:11;;;;;;18786:2396;;;;;;;;;:::o;15775:601::-;15997:4;16014:9;16026:1;16014:13;;16009:345;16033:14;:21;16029:1;:25;16009:345;;;16103:19;16082:40;;:14;16097:1;16082:17;;;;;;;;;;;;;;:40;;;16078:73;;16134:8;;16078:73;16262:85;16289:19;16310:10;16322:7;16331:15;16262:26;:85::i;:::-;16255:92;;;;;16009:345;16060:8;16066:1;16060;:5;;:8;;;;:::i;:::-;16056:12;;16009:345;;;;16366:5;16359:12;;15775:601;;;;;;;;:::o;16867:645::-;17012:4;17078:44;17125:26;:24;:26::i;:::-;17078:73;;17160:25;17195:21;:40;;;17243:10;17261:14;17195:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17195:86:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17195:86:95;;;;;;39:16:-1;36:1;17:17;2:54;17195:86:95;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:3;8;5:12;2:2;;;30:1;27;20:12;2:2;17195:86:95;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;17157:124;;;;;;17368:9;17380:1;17368:13;;17363:127;17387:8;:15;17383:1;:19;17363:127;;;17445:7;17430:22;;:8;17439:1;17430:11;;;;;;;;;;;;;;:22;;;17426:58;;;17471:4;17464:11;;;;;;;17426:58;17408:8;17414:1;17408;:5;;:8;;;;:::i;:::-;17404:12;;17363:127;;;;17502:5;17495:12;;;;16867:645;;;;;;:::o;14670:408::-;14840:4;14852:26;14895:19;14852:63;;14922:28;14956:12;:32;;;14989:10;15001:7;14956:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14956:53:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14956:53:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14956:53:95;;;;;;;;;;;;;;;;;;;;;;;;;14921:88;;;;;15057:15;15031:21;15023:30;;:49;;15015:58;;;;14670:408;;;;;;:::o;21386:769::-;21442:31;21476:16;:27;21493:9;21476:27;;;;;;;;;;;;;;;21442:61;;21509:26;21538:18;:47;21557:7;:27;;;21538:47;;;;;;;;;;;21509:76;;21591:22;21616:14;:30;21631:7;:14;;;;;;;;;;;;21616:30;;;;;;;;;;;;;;;21591:55;;21717:7;:21;;;21653:16;:47;21670:8;21697:1;21679:8;:15;;;;:19;21670:29;;;;;;;;;;;;;;;;;;;;;;;;;21653:47;;;;;;;;;;;;;;;:61;;:85;;;;21778:8;21805:1;21787:8;:15;;;;:19;21778:29;;;;;;;;;;;;;;;;;;;;;;;;;21744:8;21753:7;:21;;;21744:31;;;;;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;21831:22;21851:1;21831:8;:15;;;;:19;;:22;;;;:::i;:::-;21813:8;:40;;;;;:::i;:::-;;21912:7;:17;;;21860:16;:39;21877:4;21896:1;21882:4;:11;;;;:15;21877:21;;;;;;;;;;;;;;;;;;;;;;;;;21860:39;;;;;;;;;;;;;;;:49;;:69;;;;21961:4;21980:1;21966:4;:11;;;;:15;21961:21;;;;;;;;;;;;;;;;;;;;;;;;;21935:4;21940:7;:17;;;21935:23;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;22002:18;22018:1;22002:4;:11;;;;:15;;:18;;;;:::i;:::-;21988:4;:32;;;;;:::i;:::-;;22034:16;:27;22051:9;22034:27;;;;;;;;;;;;;;;;22027:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22074:24;:35;22099:9;22074:35;;;;;;;;;;;;;;;;22067:42;;;;:::i;:::-;22140:9;22120:30;;;;;;;;;;;;21386:769;;;;:::o;662:174:7:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:7;744:18;:85::i;:::-;662:174;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2178:225:4:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;3881:159:27:-;3931:13;949:42;3973:35;;;1226:32;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1226:32:27;;;1216:43;;;;;;3973:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3973:61:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3973:61:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3973:61:27;;;;;;;;;;;;;;;;3952:83;;3881:159;:::o;1274:134:3:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;842:202:7:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:7;942:18;:95::i;:::-;842:202;;;;:::o;4975:218:27:-;5034:22;949:42;5109:35;;;2093:41;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2093:41:27;;;2078:60;;;;;;5109:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5109:71:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5109:71:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5109:71:27;;;;;;;;;;;;;;;;5064:124;;4975:218;:::o;2666:1095:7:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:7;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:7;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:7;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;1732:187:3:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;686:610:8:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;650:21507:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\n\nimport \"./interfaces/IAttestations.sol\";\nimport \"./interfaces/IFederatedAttestations.sol\";\nimport \"./interfaces/IEscrow.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/UsingRegistryV2BackwardsCompatible.sol\";\nimport \"../common/Signatures.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\ncontract Escrow is\n IEscrow,\n ICeloVersionedContract,\n ReentrancyGuard,\n Ownable,\n Initializable,\n // Maintain storage alignment since Escrow was initially deployed with UsingRegistry.sol\n UsingRegistryV2BackwardsCompatible\n{\n using SafeMath for uint256;\n using SafeERC20 for ERC20;\n\n event DefaultTrustedIssuerAdded(address indexed trustedIssuer);\n event DefaultTrustedIssuerRemoved(address indexed trustedIssuer);\n\n event Transfer(\n address indexed from,\n bytes32 indexed identifier,\n address indexed token,\n uint256 value,\n address paymentId,\n uint256 minAttestations\n );\n\n event TrustedIssuersSet(address indexed paymentId, address[] trustedIssuers);\n event TrustedIssuersUnset(address indexed paymentId);\n\n event Withdrawal(\n bytes32 indexed identifier,\n // Note that in previous versions of Escrow.sol, `to` referenced\n // the original sender of the payment\n address indexed to,\n address indexed token,\n uint256 value,\n address paymentId\n );\n\n event Revocation(\n bytes32 indexed identifier,\n address indexed by,\n address indexed token,\n uint256 value,\n address paymentId\n );\n\n struct EscrowedPayment {\n bytes32 recipientIdentifier;\n address sender;\n address token;\n uint256 value;\n uint256 sentIndex; // Location of this payment in sender's list of sent payments.\n uint256 receivedIndex; // Location of this payment in receivers's list of received payments.\n uint256 timestamp;\n uint256 expirySeconds;\n uint256 minAttestations;\n }\n\n // Maps unique payment IDs to escrowed payments.\n // These payment IDs are the temporary wallet addresses created with the escrowed payments.\n mapping(address => EscrowedPayment) public escrowedPayments;\n\n // Maps receivers' identifiers to a list of received escrowed payment IDs.\n mapping(bytes32 => address[]) public receivedPaymentIds;\n\n // Maps senders' addresses to a list of sent escrowed payment IDs.\n mapping(address => address[]) public sentPaymentIds;\n\n // Maps payment ID to a list of issuers whose attestations will be accepted.\n mapping(address => address[]) public trustedIssuersPerPayment;\n\n // Governable list of trustedIssuers to set for payments by default.\n address[] public defaultTrustedIssuers;\n\n // Based on benchmarking of FederatedAttestations lookup gas consumption\n // in the worst case (with a significant amount of buffer).\n uint256 public constant MAX_TRUSTED_ISSUERS_PER_PAYMENT = 100;\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 2, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Add an address to the defaultTrustedIssuers list.\n * @param trustedIssuer Address of the trustedIssuer to add.\n * @dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n * @dev Throws if defaultTrustedIssuers is already at max allowed length.\n */\n function addDefaultTrustedIssuer(address trustedIssuer) external onlyOwner {\n require(address(0) != trustedIssuer, \"trustedIssuer can't be null\");\n require(\n defaultTrustedIssuers.length.add(1) <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\n \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"\n );\n\n // Ensure list of trusted issuers is unique\n for (uint256 i = 0; i < defaultTrustedIssuers.length; i = i.add(1)) {\n require(\n defaultTrustedIssuers[i] != trustedIssuer,\n \"trustedIssuer already in defaultTrustedIssuers\"\n );\n }\n defaultTrustedIssuers.push(trustedIssuer);\n emit DefaultTrustedIssuerAdded(trustedIssuer);\n }\n\n /**\n * @notice Remove an address from the defaultTrustedIssuers list.\n * @param trustedIssuer Address of the trustedIssuer to remove.\n * @param index Index of trustedIssuer in defaultTrustedIssuers.\n * @dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.\n */\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external onlyOwner {\n uint256 numDefaultTrustedIssuers = defaultTrustedIssuers.length;\n require(index < numDefaultTrustedIssuers, \"index is invalid\");\n require(\n defaultTrustedIssuers[index] == trustedIssuer,\n \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"\n );\n if (index != numDefaultTrustedIssuers - 1) {\n // Swap last index with index-to-remove\n defaultTrustedIssuers[index] = defaultTrustedIssuers[numDefaultTrustedIssuers - 1];\n }\n defaultTrustedIssuers.pop();\n emit DefaultTrustedIssuerRemoved(trustedIssuer);\n }\n\n /**\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n * identifier and 0 minAttestations) and without (with identifier and minAttestations).\n * Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n * (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev If minAttestations is 0, trustedIssuers will be set to empty list.\n * @dev msg.sender needs to have already approved this contract to transfer\n */\n // solhint-disable-next-line no-simple-event-func-name\n function transfer(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations\n ) external nonReentrant returns (bool) {\n address[] memory trustedIssuers;\n // If minAttestations == 0, trustedIssuers should remain empty\n if (minAttestations > 0) {\n trustedIssuers = defaultTrustedIssuers;\n }\n return\n _transfer(\n identifier,\n token,\n value,\n expirySeconds,\n paymentId,\n minAttestations,\n trustedIssuers\n );\n }\n\n /**\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n * identifier and 0 minAttestations) and without (with identifier\n * and attestations completed by trustedIssuers).\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n * will be accepted to prove ownership over an identifier.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\n * @dev msg.sender needs to have already approved this contract to transfer.\n */\n function transferWithTrustedIssuers(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations,\n address[] calldata trustedIssuers\n ) external nonReentrant returns (bool) {\n return\n _transfer(\n identifier,\n token,\n value,\n expirySeconds,\n paymentId,\n minAttestations,\n trustedIssuers\n );\n }\n\n /**\n * @notice Withdraws tokens for a verified user.\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @return True if withdraw succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if msg.sender does not prove ownership of the withdraw key.\n */\n function withdraw(address paymentId, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n returns (bool)\n {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == paymentId, \"Failed to prove ownership of the withdraw key\");\n EscrowedPayment memory payment = escrowedPayments[paymentId];\n require(payment.token != address(0) && payment.value > 0, \"Invalid withdraw value.\");\n\n // Due to an old bug, there may exist payments with no identifier and minAttestations > 0\n // So ensure that these fail the attestations check, as they previously would have\n if (payment.minAttestations > 0) {\n bool passedCheck = false;\n address[] memory trustedIssuers = trustedIssuersPerPayment[paymentId];\n address attestationsAddress = registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID);\n\n if (trustedIssuers.length > 0) {\n passedCheck =\n hasCompletedV1AttestationsAsTrustedIssuer(\n attestationsAddress,\n payment.recipientIdentifier,\n msg.sender,\n payment.minAttestations,\n trustedIssuers\n ) ||\n hasCompletedV2Attestations(payment.recipientIdentifier, msg.sender, trustedIssuers);\n } else {\n // This is for backwards compatibility, not default/fallback behavior\n passedCheck = hasCompletedV1Attestations(\n attestationsAddress,\n payment.recipientIdentifier,\n msg.sender,\n payment.minAttestations\n );\n }\n require(\n passedCheck,\n \"This account does not have the required attestations to withdraw this payment.\"\n );\n }\n\n deletePayment(paymentId);\n\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\n\n emit Withdrawal(\n payment.recipientIdentifier,\n msg.sender,\n payment.token,\n payment.value,\n paymentId\n );\n\n return true;\n }\n\n /**\n * @notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if msg.sender is not the sender of payment.\n * @dev Throws if redeem time hasn't been reached yet.\n */\n function revoke(address paymentId) external nonReentrant returns (bool) {\n EscrowedPayment memory payment = escrowedPayments[paymentId];\n require(payment.sender == msg.sender, \"Only sender of payment can attempt to revoke payment.\");\n require(\n now >= (payment.timestamp.add(payment.expirySeconds)),\n \"Transaction not redeemable for sender yet.\"\n );\n\n deletePayment(paymentId);\n\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\n\n emit Revocation(\n payment.recipientIdentifier,\n payment.sender,\n payment.token,\n payment.value,\n paymentId\n );\n\n return true;\n\n }\n\n /**\n * @notice Gets array of all Escrowed Payments received by identifier.\n * @param identifier The hash of an identifier of the receiver of the escrowed payment.\n * @return An array containing all the IDs of the Escrowed Payments that were received\n * by the specified receiver.\n */\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory) {\n return receivedPaymentIds[identifier];\n }\n\n /**\n * @notice Gets array of all Escrowed Payment IDs sent by sender.\n * @param sender The address of the sender of the escrowed payments.\n * @return An array containing all the IDs of the Escrowed Payments that were sent by the\n * specified sender.\n */\n function getSentPaymentIds(address sender) external view returns (address[] memory) {\n return sentPaymentIds[sender];\n }\n\n /**\n * @notice Gets array of all trusted issuers set per paymentId.\n * @param paymentId The ID of the payment to get.\n * @return An array of addresses of trusted issuers set for an escrowed payment.\n */\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory) {\n return trustedIssuersPerPayment[paymentId];\n }\n\n /**\n * @notice Gets trusted issuers set as default for payments by `transfer` function.\n * @return An array of addresses of trusted issuers.\n */\n function getDefaultTrustedIssuers() public view returns (address[] memory) {\n return defaultTrustedIssuers;\n }\n\n /**\n * @notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n * @param attestationsAddress The address of Attestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param minAttestations The minimum number of attestations to have completed.\n * @return Whether or not attestations in Attestations.sol\n * exceeds minAttestations for (identifier, account).\n */\n function hasCompletedV1Attestations(\n address attestationsAddress,\n bytes32 identifier,\n address account,\n uint256 minAttestations\n ) internal view returns (bool) {\n IAttestations attestations = IAttestations(attestationsAddress);\n (uint64 completedAttestations, ) = attestations.getAttestationStats(identifier, account);\n return (uint256(completedAttestations) >= minAttestations);\n }\n\n /**\n * @notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n * contract and applies the escrow V1 check against minAttestations.\n * @param attestationsAddress The address of Attestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param minAttestations The minimum number of attestations to have completed.\n * @param trustedIssuers The trustedIssuer addresses to search through.\n * @return Whether or not a trustedIssuer is Attestations.sol & attestations\n * exceed minAttestations for (identifier, account).\n */\n function hasCompletedV1AttestationsAsTrustedIssuer(\n address attestationsAddress,\n bytes32 identifier,\n address account,\n uint256 minAttestations,\n address[] memory trustedIssuers\n ) internal view returns (bool) {\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n if (trustedIssuers[i] != attestationsAddress) {\n continue;\n }\n // This can be false; one of the several trustedIssuers listed needs to prove attestations\n return hasCompletedV1Attestations(attestationsAddress, identifier, account, minAttestations);\n }\n return false;\n }\n\n /**\n * @notice Checks if there are attestations for account <-> identifier from\n * any of trustedIssuers in FederatedAttestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param trustedIssuers Issuer addresses whose attestations to trust.\n * @return Whether or not attestations exist in FederatedAttestations.sol\n * for (identifier, account).\n */\n function hasCompletedV2Attestations(\n bytes32 identifier,\n address account,\n address[] memory trustedIssuers\n ) internal view returns (bool) {\n // Check for an attestation from a trusted issuer\n IFederatedAttestations federatedAttestations = getFederatedAttestations();\n (, address[] memory accounts, , , ) = federatedAttestations.lookupAttestations(\n identifier,\n trustedIssuers\n );\n // Check if an attestation was found for recipientIdentifier -> account\n for (uint256 i = 0; i < accounts.length; i = i.add(1)) {\n if (accounts[i] == account) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n * enable backwards-compatible function signature for `transfer`,\n * and since `transfer` cannot directly call `transferWithTrustedIssuers`\n * due to reentrancy guard.\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n * will be accepted to prove ownership over an identifier.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\n * @dev msg.sender needs to have already approved this contract to transfer.\n */\n function _transfer(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations,\n address[] memory trustedIssuers\n ) private returns (bool) {\n require(token != address(0) && value > 0 && expirySeconds > 0, \"Invalid transfer inputs.\");\n require(\n !(identifier == 0 && minAttestations > 0),\n \"Invalid privacy inputs: Can't require attestations if no identifier\"\n );\n // Withdraw logic with trustedIssuers in FederatedAttestations disregards\n // minAttestations, so ensure that this is not set to 0 to prevent confusing behavior\n // This also implies: if identifier == 0 => trustedIssuers.length == 0\n require(\n !(minAttestations == 0 && trustedIssuers.length > 0),\n \"trustedIssuers may only be set when attestations are required\"\n );\n\n // Ensure that withdrawal will not fail due to exceeding trustedIssuer limit\n // in FederatedAttestations.lookupAttestations\n require(\n trustedIssuers.length <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\n \"Too many trustedIssuers provided\"\n );\n\n IAttestations attestations = getAttestations();\n require(\n minAttestations <= attestations.getMaxAttestations(),\n \"minAttestations larger than limit\"\n );\n\n uint256 sentIndex = sentPaymentIds[msg.sender].push(paymentId).sub(1);\n uint256 receivedIndex = receivedPaymentIds[identifier].push(paymentId).sub(1);\n\n EscrowedPayment storage newPayment = escrowedPayments[paymentId];\n require(newPayment.timestamp == 0, \"paymentId already used\");\n newPayment.recipientIdentifier = identifier;\n newPayment.sender = msg.sender;\n newPayment.token = token;\n newPayment.value = value;\n newPayment.sentIndex = sentIndex;\n newPayment.receivedIndex = receivedIndex;\n newPayment.timestamp = block.timestamp;\n newPayment.expirySeconds = expirySeconds;\n newPayment.minAttestations = minAttestations;\n\n // Avoid unnecessary storage write\n if (trustedIssuers.length > 0) {\n trustedIssuersPerPayment[paymentId] = trustedIssuers;\n }\n\n ERC20(token).safeTransferFrom(msg.sender, address(this), value);\n emit Transfer(msg.sender, identifier, token, value, paymentId, minAttestations);\n // Split into a second event for ABI backwards compatibility\n emit TrustedIssuersSet(paymentId, trustedIssuers);\n return true;\n }\n\n /**\n * @notice Deletes the payment from its receiver's and sender's lists of payments,\n * and zeroes out all the data in the struct.\n * @param paymentId The ID of the payment to be deleted.\n */\n function deletePayment(address paymentId) private {\n EscrowedPayment storage payment = escrowedPayments[paymentId];\n address[] storage received = receivedPaymentIds[payment.recipientIdentifier];\n address[] storage sent = sentPaymentIds[payment.sender];\n\n escrowedPayments[received[received.length - 1]].receivedIndex = payment.receivedIndex;\n received[payment.receivedIndex] = received[received.length - 1];\n received.length = received.length.sub(1);\n\n escrowedPayments[sent[sent.length - 1]].sentIndex = payment.sentIndex;\n sent[payment.sentIndex] = sent[sent.length - 1];\n sent.length = sent.length.sub(1);\n\n delete escrowedPayments[paymentId];\n delete trustedIssuersPerPayment[paymentId];\n emit TrustedIssuersUnset(paymentId);\n }\n}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/Escrow.sol", + "ast": { + "absolutePath": "project:/contracts/identity/Escrow.sol", + "exportedSymbols": { + "Escrow": [ + 33717 + ] + }, + "id": 33718, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 32601, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:95" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 32602, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 364, + "src": "26:59:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 32603, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 482, + "src": "86:63:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 32604, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 887, + "src": "150:63:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 32605, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 1176, + "src": "214:67:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/identity/interfaces/IAttestations.sol", + "file": "./interfaces/IAttestations.sol", + "id": 32606, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 35925, + "src": "283:40:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol", + "file": "./interfaces/IFederatedAttestations.sol", + "id": 32607, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 36154, + "src": "324:49:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/identity/interfaces/IEscrow.sol", + "file": "./interfaces/IEscrow.sol", + "id": 32608, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 36032, + "src": "374:34:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 32609, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 5885, + "src": "409:37:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 32610, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 9108, + "src": "447:57:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol", + "file": "../common/UsingRegistryV2BackwardsCompatible.sol", + "id": 32611, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 8810, + "src": "505:58:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "id": 32612, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 6903, + "src": "564:34:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "id": 32613, + "nodeType": "ImportDirective", + "scope": 33718, + "sourceUnit": 9486, + "src": "599:49:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32614, + "name": "IEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 36031, + "src": "671:7:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IEscrow_$36031", + "typeString": "contract IEscrow" + } + }, + "id": 32615, + "nodeType": "InheritanceSpecifier", + "src": "671:7:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32616, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9107, + "src": "682:22:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 32617, + "nodeType": "InheritanceSpecifier", + "src": "682:22:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32618, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9485, + "src": "708:15:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$9485", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 32619, + "nodeType": "InheritanceSpecifier", + "src": "708:15:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32620, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 481, + "src": "727:7:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$481", + "typeString": "contract Ownable" + } + }, + "id": 32621, + "nodeType": "InheritanceSpecifier", + "src": "727:7:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32622, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5884, + "src": "738:13:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$5884", + "typeString": "contract Initializable" + } + }, + "id": 32623, + "nodeType": "InheritanceSpecifier", + "src": "738:13:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 32624, + "name": "UsingRegistryV2BackwardsCompatible", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8809, + "src": "846:34:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistryV2BackwardsCompatible_$8809", + "typeString": "contract UsingRegistryV2BackwardsCompatible" + } + }, + "id": 32625, + "nodeType": "InheritanceSpecifier", + "src": "846:34:95" + } + ], + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 8809, + 9107, + 9485, + 36031 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 33717, + "linearizedBaseContracts": [ + 33717, + 8809, + 8801, + 5884, + 481, + 26, + 9485, + 9107, + 36031 + ], + "name": "Escrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 32628, + "libraryName": { + "contractScope": null, + "id": 32626, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 363, + "src": "891:8:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$363", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "885:27:95", + "typeName": { + "id": 32627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "904:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 32631, + "libraryName": { + "contractScope": null, + "id": 32629, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1175, + "src": "921:9:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1175", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "915:26:95", + "typeName": { + "contractScope": null, + "id": 32630, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 886, + "src": "935:5:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$886", + "typeString": "contract ERC20" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 32635, + "name": "DefaultTrustedIssuerAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 32634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32633, + "indexed": true, + "name": "trustedIssuer", + "nodeType": "VariableDeclaration", + "scope": 32635, + "src": "977:29:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "977:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "976:31:95" + }, + "src": "945:63:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32639, + "name": "DefaultTrustedIssuerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 32638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32637, + "indexed": true, + "name": "trustedIssuer", + "nodeType": "VariableDeclaration", + "scope": 32639, + "src": "1045:29:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1045:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1044:31:95" + }, + "src": "1011:65:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32653, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 32652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32641, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1100:20:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1100:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32643, + "indexed": true, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1126:26:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1126:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32645, + "indexed": true, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1158:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1158:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32647, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1185:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1185:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32649, + "indexed": false, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1204:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1204:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32651, + "indexed": false, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 32653, + "src": "1227:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1227:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1094:160:95" + }, + "src": "1080:175:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32660, + "name": "TrustedIssuersSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 32659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32655, + "indexed": true, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32660, + "src": "1283:25:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32658, + "indexed": false, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 32660, + "src": "1310:24:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 32656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1310:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32657, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1310:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1282:53:95" + }, + "src": "1259:77:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32664, + "name": "TrustedIssuersUnset", + "nodeType": "EventDefinition", + "parameters": { + "id": 32663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32662, + "indexed": true, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32664, + "src": "1365:25:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1365:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1364:27:95" + }, + "src": "1339:53:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32676, + "name": "Withdrawal", + "nodeType": "EventDefinition", + "parameters": { + "id": 32675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32666, + "indexed": true, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 32676, + "src": "1418:26:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1418:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32668, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 32676, + "src": "1561:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1561:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32670, + "indexed": true, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32676, + "src": "1585:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1585:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32672, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32676, + "src": "1612:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1612:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32674, + "indexed": false, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32676, + "src": "1631:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1631:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1412:240:95" + }, + "src": "1396:257:95" + }, + { + "anonymous": false, + "documentation": null, + "id": 32688, + "name": "Revocation", + "nodeType": "EventDefinition", + "parameters": { + "id": 32687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32678, + "indexed": true, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 32688, + "src": "1679:26:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32677, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1679:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32680, + "indexed": true, + "name": "by", + "nodeType": "VariableDeclaration", + "scope": 32688, + "src": "1711:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1711:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32682, + "indexed": true, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32688, + "src": "1735:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1735:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32684, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32688, + "src": "1762:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1762:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32686, + "indexed": false, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32688, + "src": "1781:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1781:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1673:129:95" + }, + "src": "1657:146:95" + }, + { + "canonicalName": "Escrow.EscrowedPayment", + "id": 32707, + "members": [ + { + "constant": false, + "id": 32690, + "name": "recipientIdentifier", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "1836:27:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32689, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1836:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32692, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "1869:14:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1869:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32694, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "1889:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1889:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32696, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "1908:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1908:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32698, + "name": "sentIndex", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "1927:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1927:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32700, + "name": "receivedIndex", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "2013:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2013:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32702, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "2110:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2110:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32704, + "name": "expirySeconds", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "2133:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2133:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32706, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 32707, + "src": "2160:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2160:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "EscrowedPayment", + "nodeType": "StructDefinition", + "scope": 33717, + "src": "1807:381:95", + "visibility": "public" + }, + { + "constant": false, + "id": 32711, + "name": "escrowedPayments", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "2337:59:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment)" + }, + "typeName": { + "id": 32710, + "keyType": { + "id": 32708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2345:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2337:35:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment)" + }, + "valueType": { + "contractScope": null, + "id": 32709, + "name": "EscrowedPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 32707, + "src": "2356:15:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 32716, + "name": "receivedPaymentIds", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "2478:55:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(bytes32 => address[])" + }, + "typeName": { + "id": 32715, + "keyType": { + "id": 32712, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2486:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2478:29:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(bytes32 => address[])" + }, + "valueType": { + "baseType": { + "id": 32713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2497:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32714, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2497:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 32721, + "name": "sentPaymentIds", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "2607:51:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[])" + }, + "typeName": { + "id": 32720, + "keyType": { + "id": 32717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2615:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2607:29:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[])" + }, + "valueType": { + "baseType": { + "id": 32718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2626:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32719, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2626:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 32726, + "name": "trustedIssuersPerPayment", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "2742:61:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[])" + }, + "typeName": { + "id": 32725, + "keyType": { + "id": 32722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2750:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2742:29:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[])" + }, + "valueType": { + "baseType": { + "id": 32723, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2761:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32724, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2761:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 32729, + "name": "defaultTrustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "2879:38:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 32727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2879:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32728, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2879:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": true, + "id": 32732, + "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT", + "nodeType": "VariableDeclaration", + "scope": 33717, + "src": "3059:61:95", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3059:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "313030", + "id": 32731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3117:3:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "visibility": "public" + }, + { + "body": { + "id": 32740, + "nodeType": "Block", + "src": "3320:2:95", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 32741, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 32737, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32734, + "src": "3314:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 32738, + "modifierName": { + "argumentTypes": null, + "id": 32736, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5884, + "src": "3300:13:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3300:19:95" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32734, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 32741, + "src": "3282:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 32733, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3282:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3281:11:95" + }, + "returnParameters": { + "id": 32739, + "nodeType": "ParameterList", + "parameters": [], + "src": "3320:0:95" + }, + "scope": 33717, + "src": "3270:52:95", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 32758, + "nodeType": "Block", + "src": "3583:30:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 32752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3597:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "32", + "id": 32753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3600:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 32754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3603:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 32755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3606:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 32756, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3596:12:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 32751, + "id": 32757, + "nodeType": "Return", + "src": "3589:19:95" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "id": 32759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32742, + "nodeType": "ParameterList", + "parameters": [], + "src": "3521:2:95" + }, + "returnParameters": { + "id": 32751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32744, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32759, + "src": "3547:7:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3547:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32746, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32759, + "src": "3556:7:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3556:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32748, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32759, + "src": "3565:7:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3565:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32750, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32759, + "src": "3574:7:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3574:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3546:36:95" + }, + "scope": 33717, + "src": "3496:117:95", + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + { + "body": { + "id": 32769, + "nodeType": "Block", + "src": "3768:41:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 32765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "3793:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 32766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3793:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 32764, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "3774:18:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 32767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3774:30:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32768, + "nodeType": "ExpressionStatement", + "src": "3774:30:95" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "id": 32770, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32762, + "modifierName": { + "argumentTypes": null, + "id": 32761, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5883, + "src": "3756:11:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3756:11:95" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32760, + "nodeType": "ParameterList", + "parameters": [], + "src": "3744:2:95" + }, + "returnParameters": { + "id": 32763, + "nodeType": "ParameterList", + "parameters": [], + "src": "3768:0:95" + }, + "scope": 33717, + "src": "3725:84:95", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 32833, + "nodeType": "Block", + "src": "4181:618:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 32782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 32779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4203:1:95", + "subdenomination": null, + "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": 32778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4195:7:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 32780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4195:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 32781, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32772, + "src": "4209:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4195:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "747275737465644973737565722063616e2774206265206e756c6c", + "id": 32783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4224:29:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b", + "typeString": "literal_string \"trustedIssuer can't be null\"" + }, + "value": "trustedIssuer can't be null" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b", + "typeString": "literal_string \"trustedIssuer can't be null\"" + } + ], + "id": 32777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "4187:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:67:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32785, + "nodeType": "ExpressionStatement", + "src": "4187:67:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 32790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4308:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 32787, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "4275:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4275:28:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 32789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "4275:32:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 32791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4275:35:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 32792, + "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32732, + "src": "4314:31:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4275:70:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273", + "id": 32794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4353:76:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f", + "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"" + }, + "value": "defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f", + "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"" + } + ], + "id": 32786, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "4260:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4260:175:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32796, + "nodeType": "ExpressionStatement", + "src": "4260:175:95" + }, + { + "body": { + "id": 32821, + "nodeType": "Block", + "src": "4558:139:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 32817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 32813, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "4583:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32815, + "indexExpression": { + "argumentTypes": null, + "id": 32814, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32798, + "src": "4605:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4583:24:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 32816, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32772, + "src": "4611:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4583:41:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472757374656449737375657220616c726561647920696e2064656661756c745472757374656449737375657273", + "id": 32818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4634:48:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f", + "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\"" + }, + "value": "trustedIssuer already in defaultTrustedIssuers" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f", + "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\"" + } + ], + "id": 32812, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "4566:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4566:124:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32820, + "nodeType": "ExpressionStatement", + "src": "4566:124:95" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32801, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32798, + "src": "4510:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 32802, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "4514:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32803, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4514:28:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4510:32:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 32822, + "initializationExpression": { + "assignments": [ + 32798 + ], + "declarations": [ + { + "constant": false, + "id": 32798, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 32822, + "src": "4495:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4495:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32800, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 32799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4507:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4495:13:95" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 32810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 32805, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32798, + "src": "4544:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 32808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4554:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 32806, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32798, + "src": "4548:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 32807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "4548:5:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 32809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4548:8:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4544:12:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 32811, + "nodeType": "ExpressionStatement", + "src": "4544:12:95" + }, + "nodeType": "ForStatement", + "src": "4490:207:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 32826, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32772, + "src": "4729:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 32823, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "4702:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4702:26:95", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 32827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4702:41:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 32828, + "nodeType": "ExpressionStatement", + "src": "4702:41:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 32830, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32772, + "src": "4780:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 32829, + "name": "DefaultTrustedIssuerAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "4754:25:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 32831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4754:40:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32832, + "nodeType": "EmitStatement", + "src": "4749:45:95" + } + ] + }, + "documentation": "@notice Add an address to the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to add.\n@dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n@dev Throws if defaultTrustedIssuers is already at max allowed length.", + "id": 32834, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32775, + "modifierName": { + "argumentTypes": null, + "id": 32774, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "4171:9:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4171:9:95" + } + ], + "name": "addDefaultTrustedIssuer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32772, + "name": "trustedIssuer", + "nodeType": "VariableDeclaration", + "scope": 32834, + "src": "4139:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4139:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4138:23:95" + }, + "returnParameters": { + "id": 32776, + "nodeType": "ParameterList", + "parameters": [], + "src": "4181:0:95" + }, + "scope": 33717, + "src": "4106:693:95", + "stateMutability": "nonpayable", + "superFunction": 36023, + "visibility": "external" + }, + { + "body": { + "id": 32890, + "nodeType": "Block", + "src": "5185:574:95", + "statements": [ + { + "assignments": [ + 32844 + ], + "declarations": [ + { + "constant": false, + "id": 32844, + "name": "numDefaultTrustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 32890, + "src": "5191:32:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5191:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32847, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 32845, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "5226:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32846, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5226:28:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5191:63:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32849, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32838, + "src": "5268:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 32850, + "name": "numDefaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32844, + "src": "5276:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5268:32:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e64657820697320696e76616c6964", + "id": 32852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5302:18:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799", + "typeString": "literal_string \"index is invalid\"" + }, + "value": "index is invalid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799", + "typeString": "literal_string \"index is invalid\"" + } + ], + "id": 32848, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "5260:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5260:61:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32854, + "nodeType": "ExpressionStatement", + "src": "5260:61:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 32860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 32856, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "5342:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32858, + "indexExpression": { + "argumentTypes": null, + "id": 32857, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32838, + "src": "5364:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5342:28:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 32859, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32836, + "src": "5374:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5342:45:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d", + "id": 32861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5395:76:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73", + "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"" + }, + "value": "trustedIssuer does not match address found at defaultTrustedIssuers[index]" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73", + "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"" + } + ], + "id": 32855, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "5327:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5327:150:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32863, + "nodeType": "ExpressionStatement", + "src": "5327:150:95" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32864, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32838, + "src": "5487:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32865, + "name": "numDefaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32844, + "src": "5496:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 32866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5523:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5496:28:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5487:37:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 32880, + "nodeType": "IfStatement", + "src": "5483:186:95", + "trueBody": { + "id": 32879, + "nodeType": "Block", + "src": "5526:143:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 32877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 32869, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "5580:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32871, + "indexExpression": { + "argumentTypes": null, + "id": 32870, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32838, + "src": "5602:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5580:28:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 32872, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "5611:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32876, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32873, + "name": "numDefaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32844, + "src": "5633:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 32874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5660:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5633:28:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5611:51:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5580:82:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32878, + "nodeType": "ExpressionStatement", + "src": "5580:82:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 32881, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "5674:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 32883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5674:25:95", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 32884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5674:27:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32885, + "nodeType": "ExpressionStatement", + "src": "5674:27:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 32887, + "name": "trustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32836, + "src": "5740:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 32886, + "name": "DefaultTrustedIssuerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32639, + "src": "5712:27:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 32888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5712:42:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 32889, + "nodeType": "EmitStatement", + "src": "5707:47:95" + } + ] + }, + "documentation": "@notice Remove an address from the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to remove.\n@param index Index of trustedIssuer in defaultTrustedIssuers.\n@dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.", + "id": 32891, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32841, + "modifierName": { + "argumentTypes": null, + "id": 32840, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "5175:9:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5175:9:95" + } + ], + "name": "removeDefaultTrustedIssuer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32836, + "name": "trustedIssuer", + "nodeType": "VariableDeclaration", + "scope": 32891, + "src": "5128:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5128:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32838, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 32891, + "src": "5151:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5151:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5127:38:95" + }, + "returnParameters": { + "id": 32842, + "nodeType": "ParameterList", + "parameters": [], + "src": "5185:0:95" + }, + "scope": 33717, + "src": "5092:667:95", + "stateMutability": "nonpayable", + "superFunction": 36030, + "visibility": "external" + }, + { + "body": { + "id": 32934, + "nodeType": "Block", + "src": "7228:369:95", + "statements": [ + { + "assignments": [ + 32913 + ], + "declarations": [ + { + "constant": false, + "id": 32913, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 32934, + "src": "7234:31:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 32911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7234:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32912, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7234:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32914, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "7234:31:95" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 32917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32915, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32903, + "src": "7342:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 32916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7360:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7342:19:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 32923, + "nodeType": "IfStatement", + "src": "7338:78:95", + "trueBody": { + "id": 32922, + "nodeType": "Block", + "src": "7363:53:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 32920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 32918, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32913, + "src": "7371:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 32919, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "7388:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "src": "7371:38:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 32921, + "nodeType": "ExpressionStatement", + "src": "7371:38:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 32925, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32893, + "src": "7453:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 32926, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32895, + "src": "7473:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 32927, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32897, + "src": "7488:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32928, + "name": "expirySeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32899, + "src": "7503:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32929, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32901, + "src": "7526:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 32930, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32903, + "src": "7545:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32931, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32913, + "src": "7570:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 32924, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33602, + "src": "7434:9:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)" + } + }, + "id": 32932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7434:158:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 32909, + "id": 32933, + "nodeType": "Return", + "src": "7421:171:95" + } + ] + }, + "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier and minAttestations).\n Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev If minAttestations is 0, trustedIssuers will be set to empty list.\n@dev msg.sender needs to have already approved this contract to transfer", + "id": 32935, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32906, + "modifierName": { + "argumentTypes": null, + "id": 32905, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "7200:12:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7200:12:95" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32893, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7051:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32892, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7051:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32895, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7075:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7075:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32897, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7094:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7094:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32899, + "name": "expirySeconds", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7113:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7113:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32901, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7140:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7140:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32903, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7163:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7163:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7045:145:95" + }, + "returnParameters": { + "id": 32909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32908, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32935, + "src": "7222:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 32907, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7222:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7221:6:95" + }, + "scope": 33717, + "src": "7028:569:95", + "stateMutability": "nonpayable", + "superFunction": 35943, + "visibility": "external" + }, + { + "body": { + "id": 32967, + "nodeType": "Block", + "src": "9080:182:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 32958, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32937, + "src": "9118:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 32959, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32939, + "src": "9138:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 32960, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32941, + "src": "9153:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32961, + "name": "expirySeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32943, + "src": "9168:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32962, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32945, + "src": "9191:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 32963, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32947, + "src": "9210:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 32964, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32950, + "src": "9235:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "id": 32957, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33602, + "src": "9099:9:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)" + } + }, + "id": 32965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9099:158:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 32956, + "id": 32966, + "nodeType": "Return", + "src": "9086:171:95" + } + ] + }, + "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier\n and attestations completed by trustedIssuers).\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.", + "id": 32968, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32953, + "modifierName": { + "argumentTypes": null, + "id": 32952, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "9052:12:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9052:12:95" + } + ], + "name": "transferWithTrustedIssuers", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32937, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8864:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32936, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8864:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32939, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8888:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8888:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32941, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8907:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8907:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32943, + "name": "expirySeconds", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8926:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8926:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32945, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8953:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8953:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32947, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "8976:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8976:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32950, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "9005:33:95", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 32948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9005:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 32949, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9005:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8858:184:95" + }, + "returnParameters": { + "id": 32956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32955, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 32968, + "src": "9074:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 32954, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9074:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9073:6:95" + }, + "scope": 33717, + "src": "8823:439:95", + "stateMutability": "nonpayable", + "superFunction": 35963, + "visibility": "external" + }, + { + "body": { + "id": 33121, + "nodeType": "Block", + "src": "9871:1817:95", + "statements": [ + { + "assignments": [ + 32984 + ], + "declarations": [ + { + "constant": false, + "id": 32984, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 33121, + "src": "9877:14:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32983, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9877:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32993, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 32987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "9924:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 32988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9924:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 32989, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32972, + "src": "9936:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 32990, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32974, + "src": "9939:1:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 32991, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32976, + "src": "9942:1:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 32985, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6902, + "src": "9894:10:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$6902_$", + "typeString": "type(library Signatures)" + } + }, + "id": 32986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 6810, + "src": "9894:29:95", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 32992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9894:50:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9877:67:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 32997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 32995, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32984, + "src": "9958:6:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 32996, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32970, + "src": "9968:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9958:19:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b6579", + "id": 32998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9979:47:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90", + "typeString": "literal_string \"Failed to prove ownership of the withdraw key\"" + }, + "value": "Failed to prove ownership of the withdraw key" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90", + "typeString": "literal_string \"Failed to prove ownership of the withdraw key\"" + } + ], + "id": 32994, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "9950:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 32999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9950:77:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33000, + "nodeType": "ExpressionStatement", + "src": "9950:77:95" + }, + { + "assignments": [ + 33002 + ], + "declarations": [ + { + "constant": false, + "id": 33002, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 33121, + "src": "10033:30:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment" + }, + "typeName": { + "contractScope": null, + "id": 33001, + "name": "EscrowedPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 32707, + "src": "10033:15:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33006, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33003, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "10066:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33005, + "indexExpression": { + "argumentTypes": null, + "id": 33004, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32970, + "src": "10083:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10066:27:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10033:60:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33008, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10107:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33009, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "10107:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 33011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10132:1:95", + "subdenomination": null, + "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": 33010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10124:7:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 33012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10124:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10107:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33014, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10138:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "10138:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10154:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10138:17:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10107:48:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c69642077697468647261772076616c75652e", + "id": 33019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10157:25:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad", + "typeString": "literal_string \"Invalid withdraw value.\"" + }, + "value": "Invalid withdraw value." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad", + "typeString": "literal_string \"Invalid withdraw value.\"" + } + ], + "id": 33007, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "10099:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10099:84:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33021, + "nodeType": "ExpressionStatement", + "src": "10099:84:95" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33022, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10375:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33023, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "minAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 32706, + "src": "10375:23:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10401:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10375:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 33091, + "nodeType": "IfStatement", + "src": "10371:1057:95", + "trueBody": { + "id": 33090, + "nodeType": "Block", + "src": "10404:1024:95", + "statements": [ + { + "assignments": [ + 33027 + ], + "declarations": [ + { + "constant": false, + "id": 33027, + "name": "passedCheck", + "nodeType": "VariableDeclaration", + "scope": 33090, + "src": "10412:16:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33026, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10412:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33029, + "initialValue": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 33028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10431:5:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10412:24:95" + }, + { + "assignments": [ + 33033 + ], + "declarations": [ + { + "constant": false, + "id": 33033, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 33090, + "src": "10444:31:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10444:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33032, + "length": null, + "nodeType": "ArrayTypeName", + "src": "10444:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33037, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33034, + "name": "trustedIssuersPerPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32726, + "src": "10478:24:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33036, + "indexExpression": { + "argumentTypes": null, + "id": 33035, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32970, + "src": "10503:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10478:35:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10444:69:95" + }, + { + "assignments": [ + 33039 + ], + "declarations": [ + { + "constant": false, + "id": 33039, + "name": "attestationsAddress", + "nodeType": "VariableDeclaration", + "scope": 33090, + "src": "10521:27:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33038, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10521:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33044, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33042, + "name": "ATTESTATIONS_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8341, + "src": "10587:24:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 33040, + "name": "registryContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8325, + "src": "10551:16:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9281", + "typeString": "contract IRegistry" + } + }, + "id": 33041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9249, + "src": "10551:35:95", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 33043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10551:61:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10521:91:95" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33045, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33033, + "src": "10625:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10625:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10649:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10625:25:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 33083, + "nodeType": "Block", + "src": "11014:274:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 33081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 33071, + "name": "passedCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33027, + "src": "11102:11:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33073, + "name": "attestationsAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33039, + "src": "11154:19:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33074, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11185:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33075, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "11185:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33076, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "11224:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11224:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33078, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11246:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33079, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "minAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 32706, + "src": "11246:23:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 33072, + "name": "hasCompletedV1Attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33272, + "src": "11116:26:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes32,address,uint256) view returns (bool)" + } + }, + "id": 33080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11116:163:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11102:177:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 33082, + "nodeType": "ExpressionStatement", + "src": "11102:177:95" + } + ] + }, + "id": 33084, + "nodeType": "IfStatement", + "src": "10621:667:95", + "trueBody": { + "id": 33070, + "nodeType": "Block", + "src": "10652:356:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 33068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 33049, + "name": "passedCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33027, + "src": "10662:11:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33051, + "name": "attestationsAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33039, + "src": "10741:19:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33052, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10774:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33053, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "10774:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33054, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "10815:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10815:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33056, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10839:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "minAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 32706, + "src": "10839:23:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 33058, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33033, + "src": "10876:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 33050, + "name": "hasCompletedV1AttestationsAsTrustedIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33323, + "src": "10686:41:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes32,address,uint256,address[] memory) view returns (bool)" + } + }, + "id": 33059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10686:216:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33061, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "10943:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "10943:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33063, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "10972:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10972:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 33065, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33033, + "src": "10984:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 33060, + "name": "hasCompletedV2Attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33379, + "src": "10916:26:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,address,address[] memory) view returns (bool)" + } + }, + "id": 33066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10916:83:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10686:313:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10662:337:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 33069, + "nodeType": "ExpressionStatement", + "src": "10662:337:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33086, + "name": "passedCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33027, + "src": "11312:11:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e", + "id": 33087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11333:80:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9", + "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\"" + }, + "value": "This account does not have the required attestations to withdraw this payment." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9", + "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\"" + } + ], + "id": 33085, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "11295:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11295:126:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33089, + "nodeType": "ExpressionStatement", + "src": "11295:126:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33093, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32970, + "src": "11448:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33092, + "name": "deletePayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33716, + "src": "11434:13:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 33094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11434:24:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33095, + "nodeType": "ExpressionStatement", + "src": "11434:24:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33101, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "11499:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11499:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33103, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11511:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33104, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "11511:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33097, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11471:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "11471:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33096, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "11465:5:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 33099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11465:20:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$886", + "typeString": "contract ERC20" + } + }, + "id": 33100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 988, + "src": "11465:33:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 33105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11465:60:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33106, + "nodeType": "ExpressionStatement", + "src": "11465:60:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33108, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11555:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33109, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "11555:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33110, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "11590:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11590:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33112, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11608:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33113, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "11608:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33114, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33002, + "src": "11629:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "11629:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 33116, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32970, + "src": "11650:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33107, + "name": "Withdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32676, + "src": "11537:10:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address,uint256,address)" + } + }, + "id": 33117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11537:128:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33118, + "nodeType": "EmitStatement", + "src": "11532:133:95" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 33119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11679:4:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 32982, + "id": 33120, + "nodeType": "Return", + "src": "11672:11:95" + } + ] + }, + "documentation": "@notice Withdraws tokens for a verified user.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return True if withdraw succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender does not prove ownership of the withdraw key.", + "id": 33122, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 32979, + "modifierName": { + "argumentTypes": null, + "id": 32978, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "9837:12:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9837:12:95" + } + ], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32970, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 33122, + "src": "9770:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9770:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32972, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 33122, + "src": "9789:7:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 32971, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9789:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32974, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 33122, + "src": "9798:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32973, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9798:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32976, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 33122, + "src": "9809:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32975, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9809:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9769:50:95" + }, + "returnParameters": { + "id": 32982, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32981, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33122, + "src": "9863:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 32980, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9863:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9862:6:95" + }, + "scope": 33717, + "src": "9752:1936:95", + "stateMutability": "nonpayable", + "superFunction": 35976, + "visibility": "external" + }, + { + "body": { + "id": 33188, + "nodeType": "Block", + "src": "12123:564:95", + "statements": [ + { + "assignments": [ + 33132 + ], + "declarations": [ + { + "constant": false, + "id": 33132, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 33188, + "src": "12129:30:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment" + }, + "typeName": { + "contractScope": null, + "id": 33131, + "name": "EscrowedPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 32707, + "src": "12129:15:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33136, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33133, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "12162:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33135, + "indexExpression": { + "argumentTypes": null, + "id": 33134, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33124, + "src": "12179:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12162:27:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12129:60:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33138, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12203:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33139, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": 32692, + "src": "12203:14:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33140, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "12221:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12221:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12203:28:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742e", + "id": 33143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12233:55:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52", + "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\"" + }, + "value": "Only sender of payment can attempt to revoke payment." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52", + "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\"" + } + ], + "id": 33137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "12195:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12195:94:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33145, + "nodeType": "ExpressionStatement", + "src": "12195:94:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33147, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42908, + "src": "12310:3:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33151, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12340:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33152, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expirySeconds", + "nodeType": "MemberAccess", + "referencedDeclaration": 32704, + "src": "12340:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33148, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12318:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33149, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 32702, + "src": "12318:17:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "12318:21:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12318:44:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 33154, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12317:46:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12310:53:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e", + "id": 33156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12371:44:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf", + "typeString": "literal_string \"Transaction not redeemable for sender yet.\"" + }, + "value": "Transaction not redeemable for sender yet." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf", + "typeString": "literal_string \"Transaction not redeemable for sender yet.\"" + } + ], + "id": 33146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "12295:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12295:126:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33158, + "nodeType": "ExpressionStatement", + "src": "12295:126:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33160, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33124, + "src": "12442:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33159, + "name": "deletePayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33716, + "src": "12428:13:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 33161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12428:24:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33162, + "nodeType": "ExpressionStatement", + "src": "12428:24:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33168, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "12493:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12493:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33170, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12505:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "12505:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33164, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12465:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "12465:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33163, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "12459:5:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 33166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12459:20:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$886", + "typeString": "contract ERC20" + } + }, + "id": 33167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 988, + "src": "12459:33:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 33172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12459:60:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33173, + "nodeType": "ExpressionStatement", + "src": "12459:60:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33175, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12549:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33176, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "12549:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33177, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12584:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": 32692, + "src": "12584:14:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33179, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12606:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33180, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "12606:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33181, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33132, + "src": "12627:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr", + "typeString": "struct Escrow.EscrowedPayment memory" + } + }, + "id": 33182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "12627:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 33183, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33124, + "src": "12648:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33174, + "name": "Revocation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32688, + "src": "12531:10:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address,uint256,address)" + } + }, + "id": 33184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12531:132:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33185, + "nodeType": "EmitStatement", + "src": "12526:137:95" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 33186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12677:4:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 33130, + "id": 33187, + "nodeType": "Return", + "src": "12670:11:95" + } + ] + }, + "documentation": "@notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender is not the sender of payment.\n@dev Throws if redeem time hasn't been reached yet.", + "id": 33189, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 33127, + "modifierName": { + "argumentTypes": null, + "id": 33126, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "12095:12:95", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "12095:12:95" + } + ], + "name": "revoke", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33124, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 33189, + "src": "12067:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12067:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12066:19:95" + }, + "returnParameters": { + "id": 33130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33129, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33189, + "src": "12117:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33128, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12117:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12116:6:95" + }, + "scope": 33717, + "src": "12051:636:95", + "stateMutability": "nonpayable", + "superFunction": 35983, + "visibility": "external" + }, + { + "body": { + "id": 33201, + "nodeType": "Block", + "src": "13074:48:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33197, + "name": "receivedPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32716, + "src": "13087:18:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(bytes32 => address[] storage ref)" + } + }, + "id": 33199, + "indexExpression": { + "argumentTypes": null, + "id": 33198, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33191, + "src": "13106:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13087:30:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 33196, + "id": 33200, + "nodeType": "Return", + "src": "13080:37:95" + } + ] + }, + "documentation": "@notice Gets array of all Escrowed Payments received by identifier.\n@param identifier The hash of an identifier of the receiver of the escrowed payment.\n@return An array containing all the IDs of the Escrowed Payments that were received\nby the specified receiver.", + "id": 33202, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReceivedPaymentIds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33192, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33191, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33202, + "src": "13013:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33190, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13013:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13012:20:95" + }, + "returnParameters": { + "id": 33196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33195, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33202, + "src": "13056:16:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13056:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33194, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13056:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13055:18:95" + }, + "scope": 33717, + "src": "12982:140:95", + "stateMutability": "view", + "superFunction": 35991, + "visibility": "external" + }, + { + "body": { + "id": 33214, + "nodeType": "Block", + "src": "13471:40:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33210, + "name": "sentPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32721, + "src": "13484:14:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33212, + "indexExpression": { + "argumentTypes": null, + "id": 33211, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33204, + "src": "13499:6:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13484:22:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 33209, + "id": 33213, + "nodeType": "Return", + "src": "13477:29:95" + } + ] + }, + "documentation": "@notice Gets array of all Escrowed Payment IDs sent by sender.\n@param sender The address of the sender of the escrowed payments.\n@return An array containing all the IDs of the Escrowed Payments that were sent by the\nspecified sender.", + "id": 33215, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSentPaymentIds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33204, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 33215, + "src": "13414:14:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13414:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13413:16:95" + }, + "returnParameters": { + "id": 33209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33208, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33215, + "src": "13453:16:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13453:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33207, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13453:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13452:18:95" + }, + "scope": 33717, + "src": "13387:124:95", + "stateMutability": "view", + "superFunction": 35999, + "visibility": "external" + }, + { + "body": { + "id": 33227, + "nodeType": "Block", + "src": "13821:53:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33223, + "name": "trustedIssuersPerPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32726, + "src": "13834:24:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33225, + "indexExpression": { + "argumentTypes": null, + "id": 33224, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33217, + "src": "13859:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13834:35:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 33222, + "id": 33226, + "nodeType": "Return", + "src": "13827:42:95" + } + ] + }, + "documentation": "@notice Gets array of all trusted issuers set per paymentId.\n@param paymentId The ID of the payment to get.\n@return An array of addresses of trusted issuers set for an escrowed payment.", + "id": 33228, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTrustedIssuersPerPayment", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33217, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 33228, + "src": "13761:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13761:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13760:19:95" + }, + "returnParameters": { + "id": 33222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33221, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33228, + "src": "13803:16:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13803:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33220, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13803:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13802:18:95" + }, + "scope": 33717, + "src": "13724:150:95", + "stateMutability": "view", + "superFunction": 36007, + "visibility": "external" + }, + { + "body": { + "id": 33236, + "nodeType": "Block", + "src": "14103:39:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 33234, + "name": "defaultTrustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32729, + "src": "14116:21:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 33233, + "id": 33235, + "nodeType": "Return", + "src": "14109:28:95" + } + ] + }, + "documentation": "@notice Gets trusted issuers set as default for payments by `transfer` function.\n@return An array of addresses of trusted issuers.", + "id": 33237, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDefaultTrustedIssuers", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33229, + "nodeType": "ParameterList", + "parameters": [], + "src": "14061:2:95" + }, + "returnParameters": { + "id": 33233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33232, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33237, + "src": "14085:16:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33230, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14085:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33231, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14085:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14084:18:95" + }, + "scope": 33717, + "src": "14028:114:95", + "stateMutability": "view", + "superFunction": 36013, + "visibility": "public" + }, + { + "body": { + "id": 33271, + "nodeType": "Block", + "src": "14846:232:95", + "statements": [ + { + "assignments": [ + 33251 + ], + "declarations": [ + { + "constant": false, + "id": 33251, + "name": "attestations", + "nodeType": "VariableDeclaration", + "scope": 33271, + "src": "14852:26:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + }, + "typeName": { + "contractScope": null, + "id": 33250, + "name": "IAttestations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 35924, + "src": "14852:13:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33255, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33253, + "name": "attestationsAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33239, + "src": "14895:19:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33252, + "name": "IAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35924, + "src": "14881:13:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAttestations_$35924_$", + "typeString": "type(contract IAttestations)" + } + }, + "id": 33254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14881:34:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14852:63:95" + }, + { + "assignments": [ + 33257, + null + ], + "declarations": [ + { + "constant": false, + "id": 33257, + "name": "completedAttestations", + "nodeType": "VariableDeclaration", + "scope": 33271, + "src": "14922:28:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33256, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "14922:6:95", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 33263, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33260, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33241, + "src": "14989:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33261, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33243, + "src": "15001:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 33258, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33251, + "src": "14956:12:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "id": 33259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAttestationStats", + "nodeType": "MemberAccess", + "referencedDeclaration": 35806, + "src": "14956:32:95", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_address_$returns$_t_uint32_$_t_uint32_$", + "typeString": "function (bytes32,address) view external returns (uint32,uint32)" + } + }, + "id": 33262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14956:53:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint32_$_t_uint32_$", + "typeString": "tuple(uint32,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14921:88:95" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33265, + "name": "completedAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33257, + "src": "15031:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 33264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15023:7:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 33266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15023:30:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 33267, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33245, + "src": "15057:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15023:49:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 33269, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15022:51:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33249, + "id": 33270, + "nodeType": "Return", + "src": "15015:58:95" + } + ] + }, + "documentation": "@notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@return Whether or not attestations in Attestations.sol\n exceeds minAttestations for (identifier, account).", + "id": 33272, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasCompletedV1Attestations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33239, + "name": "attestationsAddress", + "nodeType": "VariableDeclaration", + "scope": 33272, + "src": "14711:27:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33238, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14711:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33241, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33272, + "src": "14744:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14744:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33243, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33272, + "src": "14768:15:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14768:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33245, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 33272, + "src": "14789:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14789:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14705:111:95" + }, + "returnParameters": { + "id": 33249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33248, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33272, + "src": "14840:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33247, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14840:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14839:6:95" + }, + "scope": 33717, + "src": "14670:408:95", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 33322, + "nodeType": "Block", + "src": "16003:373:95", + "statements": [ + { + "body": { + "id": 33318, + "nodeType": "Block", + "src": "16070:284:95", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33303, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33283, + "src": "16082:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33305, + "indexExpression": { + "argumentTypes": null, + "id": 33304, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33289, + "src": "16097:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16082:17:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 33306, + "name": "attestationsAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33274, + "src": "16103:19:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16082:40:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 33310, + "nodeType": "IfStatement", + "src": "16078:73:95", + "trueBody": { + "id": 33309, + "nodeType": "Block", + "src": "16124:27:95", + "statements": [ + { + "id": 33308, + "nodeType": "Continue", + "src": "16134:8:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33312, + "name": "attestationsAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33274, + "src": "16289:19:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33313, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33276, + "src": "16310:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33314, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33278, + "src": "16322:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33315, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33280, + "src": "16331:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 33311, + "name": "hasCompletedV1Attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33272, + "src": "16262:26:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes32,address,uint256) view returns (bool)" + } + }, + "id": 33316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16262:85:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 33287, + "id": 33317, + "nodeType": "Return", + "src": "16255:92:95" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33292, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33289, + "src": "16029:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33293, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33283, + "src": "16033:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16033:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16029:25:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 33319, + "initializationExpression": { + "assignments": [ + 33289 + ], + "declarations": [ + { + "constant": false, + "id": 33289, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 33319, + "src": "16014:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16014:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33291, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 33290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16026:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "16014:13:95" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 33301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 33296, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33289, + "src": "16056:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16066:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 33297, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33289, + "src": "16060:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "16060:5:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16060:8:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16056:12:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33302, + "nodeType": "ExpressionStatement", + "src": "16056:12:95" + }, + "nodeType": "ForStatement", + "src": "16009:345:95" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 33320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16366:5:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 33287, + "id": 33321, + "nodeType": "Return", + "src": "16359:12:95" + } + ] + }, + "documentation": "@notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n contract and applies the escrow V1 check against minAttestations.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@param trustedIssuers The trustedIssuer addresses to search through.\n@return Whether or not a trustedIssuer is Attestations.sol & attestations\n exceed minAttestations for (identifier, account).", + "id": 33323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasCompletedV1AttestationsAsTrustedIssuer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33274, + "name": "attestationsAddress", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15831:27:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33273, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15831:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33276, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15864:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33275, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15864:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33278, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15888:15:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15888:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33280, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15909:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15909:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33283, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15938:31:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15938:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33282, + "length": null, + "nodeType": "ArrayTypeName", + "src": "15938:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15825:148:95" + }, + "returnParameters": { + "id": 33287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33286, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33323, + "src": "15997:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33285, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15997:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15996:6:95" + }, + "scope": 33717, + "src": "15775:601:95", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 33378, + "nodeType": "Block", + "src": "17018:494:95", + "statements": [ + { + "assignments": [ + 33336 + ], + "declarations": [ + { + "constant": false, + "id": 33336, + "name": "federatedAttestations", + "nodeType": "VariableDeclaration", + "scope": 33378, + "src": "17078:44:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFederatedAttestations_$36153", + "typeString": "contract IFederatedAttestations" + }, + "typeName": { + "contractScope": null, + "id": 33335, + "name": "IFederatedAttestations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 36153, + "src": "17078:22:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFederatedAttestations_$36153", + "typeString": "contract IFederatedAttestations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33339, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 33337, + "name": "getFederatedAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8648, + "src": "17125:24:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IFederatedAttestations_$36153_$", + "typeString": "function () view returns (contract IFederatedAttestations)" + } + }, + "id": 33338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17125:26:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFederatedAttestations_$36153", + "typeString": "contract IFederatedAttestations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17078:73:95" + }, + { + "assignments": [ + null, + 33343, + null, + null, + null + ], + "declarations": [ + null, + { + "constant": false, + "id": 33343, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 33378, + "src": "17160:25:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17160:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33342, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17160:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + null, + null, + null + ], + "id": 33349, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33346, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33325, + "src": "17243:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33347, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33330, + "src": "17261:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 33344, + "name": "federatedAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33336, + "src": "17195:21:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFederatedAttestations_$36153", + "typeString": "contract IFederatedAttestations" + } + }, + "id": 33345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "lookupAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 36104, + "src": "17195:40:95", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$", + "typeString": "function (bytes32,address[] memory) view external returns (uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)" + } + }, + "id": 33348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17195:86:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$", + "typeString": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17157:124:95" + }, + { + "body": { + "id": 33374, + "nodeType": "Block", + "src": "17418:72:95", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33365, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33343, + "src": "17430:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33367, + "indexExpression": { + "argumentTypes": null, + "id": 33366, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33351, + "src": "17439:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17430:11:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 33368, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33327, + "src": "17445:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17430:22:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 33373, + "nodeType": "IfStatement", + "src": "17426:58:95", + "trueBody": { + "id": 33372, + "nodeType": "Block", + "src": "17454:30:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 33370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17471:4:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 33334, + "id": 33371, + "nodeType": "Return", + "src": "17464:11:95" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33354, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33351, + "src": "17383:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33355, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33343, + "src": "17387:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17387:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17383:19:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 33375, + "initializationExpression": { + "assignments": [ + 33351 + ], + "declarations": [ + { + "constant": false, + "id": 33351, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 33375, + "src": "17368:9:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17368:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33353, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 33352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17380:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17368:13:95" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 33363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 33358, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33351, + "src": "17404:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17414:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 33359, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33351, + "src": "17408:1:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "17408:5:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17408:8:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17404:12:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33364, + "nodeType": "ExpressionStatement", + "src": "17404:12:95" + }, + "nodeType": "ForStatement", + "src": "17363:127:95" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 33376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17502:5:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 33334, + "id": 33377, + "nodeType": "Return", + "src": "17495:12:95" + } + ] + }, + "documentation": "@notice Checks if there are attestations for account <-> identifier from\n any of trustedIssuers in FederatedAttestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param trustedIssuers Issuer addresses whose attestations to trust.\n@return Whether or not attestations exist in FederatedAttestations.sol\n for (identifier, account).", + "id": 33379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasCompletedV2Attestations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33325, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33379, + "src": "16908:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33324, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16908:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33327, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33379, + "src": "16932:15:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33326, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16932:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33330, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 33379, + "src": "16953:31:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16953:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33329, + "length": null, + "nodeType": "ArrayTypeName", + "src": "16953:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16902:86:95" + }, + "returnParameters": { + "id": 33334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33333, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33379, + "src": "17012:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33332, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17012:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17011:6:95" + }, + "scope": 33717, + "src": "16867:645:95", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 33601, + "nodeType": "Block", + "src": "19010:2172:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33400, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33383, + "src": "19024:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 33402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19041:1:95", + "subdenomination": null, + "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": 33401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19033:7:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 33403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19033:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19024:19:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33405, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33385, + "src": "19047:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19055:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19047:9:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "19024:32:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33409, + "name": "expirySeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33387, + "src": "19060:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19076:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19060:17:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "19024:53:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207472616e7366657220696e707574732e", + "id": 33413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19079:26:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3", + "typeString": "literal_string \"Invalid transfer inputs.\"" + }, + "value": "Invalid transfer inputs." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3", + "typeString": "literal_string \"Invalid transfer inputs.\"" + } + ], + "id": 33399, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "19016:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19016:90:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33415, + "nodeType": "ExpressionStatement", + "src": "19016:90:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19127:41:95", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 33419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33417, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33381, + "src": "19129:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19143:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19129:15:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33420, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33391, + "src": "19148:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19166:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19148:19:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "19129:38:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 33424, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19128:40:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e746966696572", + "id": 33426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19176:69:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67", + "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\"" + }, + "value": "Invalid privacy inputs: Can't require attestations if no identifier" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67", + "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\"" + } + ], + "id": 33416, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "19112:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19112:139:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33428, + "nodeType": "ExpressionStatement", + "src": "19112:139:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19515:52:95", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33430, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33391, + "src": "19517:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19536:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19517:20:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33433, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33394, + "src": "19541:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19541:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19565:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19541:25:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "19517:49:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 33438, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19516:51:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e7320617265207265717569726564", + "id": 33440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19575:63:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030", + "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\"" + }, + "value": "trustedIssuers may only be set when attestations are required" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030", + "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\"" + } + ], + "id": 33429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "19500:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19500:144:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33442, + "nodeType": "ExpressionStatement", + "src": "19500:144:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33444, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33394, + "src": "19798:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19798:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 33446, + "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32732, + "src": "19823:31:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19798:56:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6f206d616e792074727573746564497373756572732070726f7669646564", + "id": 33448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19862:34:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920", + "typeString": "literal_string \"Too many trustedIssuers provided\"" + }, + "value": "Too many trustedIssuers provided" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920", + "typeString": "literal_string \"Too many trustedIssuers provided\"" + } + ], + "id": 33443, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "19783:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19783:119:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33450, + "nodeType": "ExpressionStatement", + "src": "19783:119:95" + }, + { + "assignments": [ + 33452 + ], + "declarations": [ + { + "constant": false, + "id": 33452, + "name": "attestations", + "nodeType": "VariableDeclaration", + "scope": 33601, + "src": "19909:26:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + }, + "typeName": { + "contractScope": null, + "id": 33451, + "name": "IAttestations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 35924, + "src": "19909:13:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33455, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 33453, + "name": "getAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8561, + "src": "19938:15:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAttestations_$35924_$", + "typeString": "function () view returns (contract IAttestations)" + } + }, + "id": 33454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19938:17:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19909:46:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33457, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33391, + "src": "19976:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 33458, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33452, + "src": "19995:12:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAttestations_$35924", + "typeString": "contract IAttestations" + } + }, + "id": 33459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMaxAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 35869, + "src": "19995:31:95", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 33460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19995:33:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19976:52:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d696e4174746573746174696f6e73206c6172676572207468616e206c696d6974", + "id": 33462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20036:35:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba", + "typeString": "literal_string \"minAttestations larger than limit\"" + }, + "value": "minAttestations larger than limit" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba", + "typeString": "literal_string \"minAttestations larger than limit\"" + } + ], + "id": 33456, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "19961:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19961:116:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33464, + "nodeType": "ExpressionStatement", + "src": "19961:116:95" + }, + { + "assignments": [ + 33466 + ], + "declarations": [ + { + "constant": false, + "id": 33466, + "name": "sentIndex", + "nodeType": "VariableDeclaration", + "scope": 33601, + "src": "20084:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20084:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33477, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20151:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33472, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "20136:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33467, + "name": "sentPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32721, + "src": "20104:14:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33470, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33468, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "20119:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20119:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20104:26:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 33471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20104:31:95", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 33473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20104:42:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "20104:46:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20104:49:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20084:69:95" + }, + { + "assignments": [ + 33479 + ], + "declarations": [ + { + "constant": false, + "id": 33479, + "name": "receivedIndex", + "nodeType": "VariableDeclaration", + "scope": 33601, + "src": "20159:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33478, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20159:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20234:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33484, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "20219:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33480, + "name": "receivedPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32716, + "src": "20183:18:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(bytes32 => address[] storage ref)" + } + }, + "id": 33482, + "indexExpression": { + "argumentTypes": null, + "id": 33481, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33381, + "src": "20202:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20183:30:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 33483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20183:35:95", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 33485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20183:46:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "20183:50:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20183:53:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20159:77:95" + }, + { + "assignments": [ + 33491 + ], + "declarations": [ + { + "constant": false, + "id": 33491, + "name": "newPayment", + "nodeType": "VariableDeclaration", + "scope": 33601, + "src": "20243:34:95", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + }, + "typeName": { + "contractScope": null, + "id": 33490, + "name": "EscrowedPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 32707, + "src": "20243:15:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33495, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33492, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "20280:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33494, + "indexExpression": { + "argumentTypes": null, + "id": 33493, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "20297:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20280:27:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20243:64:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33497, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20321:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 32702, + "src": "20321:20:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20345:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20321:25:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7061796d656e74496420616c72656164792075736564", + "id": 33501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20348:24:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9", + "typeString": "literal_string \"paymentId already used\"" + }, + "value": "paymentId already used" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9", + "typeString": "literal_string \"paymentId already used\"" + } + ], + "id": 33496, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "20313:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20313:60:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33503, + "nodeType": "ExpressionStatement", + "src": "20313:60:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33504, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20379:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33506, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "20379:30:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33507, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33381, + "src": "20412:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "20379:43:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 33509, + "nodeType": "ExpressionStatement", + "src": "20379:43:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33510, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20428:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": 32692, + "src": "20428:17:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33513, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "20448:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20448:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "20428:30:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33516, + "nodeType": "ExpressionStatement", + "src": "20428:30:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33517, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20464:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33519, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "token", + "nodeType": "MemberAccess", + "referencedDeclaration": 32694, + "src": "20464:16:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33520, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33383, + "src": "20483:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "20464:24:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33522, + "nodeType": "ExpressionStatement", + "src": "20464:24:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33523, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20494:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 32696, + "src": "20494:16:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33526, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33385, + "src": "20513:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20494:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33528, + "nodeType": "ExpressionStatement", + "src": "20494:24:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33529, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20524:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "sentIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32698, + "src": "20524:20:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33532, + "name": "sentIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33466, + "src": "20547:9:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20524:32:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33534, + "nodeType": "ExpressionStatement", + "src": "20524:32:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33535, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20562:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33537, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "receivedIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32700, + "src": "20562:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33538, + "name": "receivedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33479, + "src": "20589:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20562:40:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33540, + "nodeType": "ExpressionStatement", + "src": "20562:40:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33541, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20608:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33543, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 32702, + "src": "20608:20:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42896, + "src": "20631:5:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 33545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20631:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20608:38:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33547, + "nodeType": "ExpressionStatement", + "src": "20608:38:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33548, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20652:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33550, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expirySeconds", + "nodeType": "MemberAccess", + "referencedDeclaration": 32704, + "src": "20652:24:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33551, + "name": "expirySeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33387, + "src": "20679:13:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20652:40:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33553, + "nodeType": "ExpressionStatement", + "src": "20652:40:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33554, + "name": "newPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33491, + "src": "20698:10:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33556, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "minAttestations", + "nodeType": "MemberAccess", + "referencedDeclaration": 32706, + "src": "20698:26:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33557, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33391, + "src": "20727:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20698:44:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33559, + "nodeType": "ExpressionStatement", + "src": "20698:44:95" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33560, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33394, + "src": "20792:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 33561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20792:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 33562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20816:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20792:25:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 33571, + "nodeType": "IfStatement", + "src": "20788:98:95", + "trueBody": { + "id": 33570, + "nodeType": "Block", + "src": "20819:67:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 33568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33564, + "name": "trustedIssuersPerPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32726, + "src": "20827:24:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33566, + "indexExpression": { + "argumentTypes": null, + "id": 33565, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "20852:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20827:35:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 33567, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33394, + "src": "20865:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "20827:52:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 33569, + "nodeType": "ExpressionStatement", + "src": "20827:52:95" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33576, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "20922:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20922:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33579, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43126, + "src": "20942:4:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$33717", + "typeString": "contract Escrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Escrow_$33717", + "typeString": "contract Escrow" + } + ], + "id": 33578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20934:7:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 33580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20934:13:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33581, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33385, + "src": "20949:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33573, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33383, + "src": "20898:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33572, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "20892:5:95", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 33574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20892:12:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$886", + "typeString": "contract ERC20" + } + }, + "id": 33575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1013, + "src": "20892:29:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 33582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20892:63:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33583, + "nodeType": "ExpressionStatement", + "src": "20892:63:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33585, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "20975:3:95", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20975:10:95", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 33587, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33381, + "src": "20987:10:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33588, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33383, + "src": "20999:5:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33589, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33385, + "src": "21006:5:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 33590, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "21013:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33591, + "name": "minAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33391, + "src": "21024:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 33584, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32653, + "src": "20966:8:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,address,uint256,address,uint256)" + } + }, + "id": 33592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20966:74:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33593, + "nodeType": "EmitStatement", + "src": "20961:79:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33595, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33389, + "src": "21134:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33596, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33394, + "src": "21145:14:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 33594, + "name": "TrustedIssuersSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32660, + "src": "21116:17:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address[] memory)" + } + }, + "id": 33597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21116:44:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33598, + "nodeType": "EmitStatement", + "src": "21111:49:95" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 33599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21173:4:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 33398, + "id": 33600, + "nodeType": "Return", + "src": "21166:11:95" + } + ] + }, + "documentation": "@notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n enable backwards-compatible function signature for `transfer`,\n and since `transfer` cannot directly call `transferWithTrustedIssuers`\n due to reentrancy guard.\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.", + "id": 33602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33381, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18810:18:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33380, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18810:7:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33383, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18834:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18834:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33385, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18853:13:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18853:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33387, + "name": "expirySeconds", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18872:21:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18872:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33389, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18899:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18899:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33391, + "name": "minAttestations", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18922:23:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18922:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33394, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "18951:31:95", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18951:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33393, + "length": null, + "nodeType": "ArrayTypeName", + "src": "18951:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18804:182:95" + }, + "returnParameters": { + "id": 33398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33397, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33602, + "src": "19004:4:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33396, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19004:4:95", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19003:6:95" + }, + "scope": 33717, + "src": "18786:2396:95", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 33715, + "nodeType": "Block", + "src": "21436:719:95", + "statements": [ + { + "assignments": [ + 33608 + ], + "declarations": [ + { + "constant": false, + "id": 33608, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 33715, + "src": "21442:31:95", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + }, + "typeName": { + "contractScope": null, + "id": 33607, + "name": "EscrowedPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 32707, + "src": "21442:15:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33612, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33609, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "21476:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33611, + "indexExpression": { + "argumentTypes": null, + "id": 33610, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33604, + "src": "21493:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21476:27:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21442:61:95" + }, + { + "assignments": [ + 33616 + ], + "declarations": [ + { + "constant": false, + "id": 33616, + "name": "received", + "nodeType": "VariableDeclaration", + "scope": 33715, + "src": "21509:26:95", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21509:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33615, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21509:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33621, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33617, + "name": "receivedPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32716, + "src": "21538:18:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(bytes32 => address[] storage ref)" + } + }, + "id": 33620, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33618, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21557:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "recipientIdentifier", + "nodeType": "MemberAccess", + "referencedDeclaration": 32690, + "src": "21557:27:95", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21538:47:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21509:76:95" + }, + { + "assignments": [ + 33625 + ], + "declarations": [ + { + "constant": false, + "id": 33625, + "name": "sent", + "nodeType": "VariableDeclaration", + "scope": 33715, + "src": "21591:22:95", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21591:7:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33624, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21591:9:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33630, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33626, + "name": "sentPaymentIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32721, + "src": "21616:14:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33629, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33627, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21631:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33628, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": 32692, + "src": "21631:14:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21616:30:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21591:55:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33631, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "21653:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33638, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33632, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21670:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33637, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33633, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21679:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21679:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 33635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21697:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21679:19:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21670:29:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21653:47:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "id": 33639, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "receivedIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32700, + "src": "21653:61:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33640, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21717:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33641, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "receivedIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32700, + "src": "21717:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21653:85:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33643, + "nodeType": "ExpressionStatement", + "src": "21653:85:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33644, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21744:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33647, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33645, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21753:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "receivedIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32700, + "src": "21753:21:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21744:31:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33648, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21778:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33653, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33649, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21787:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33650, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21787:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 33651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21805:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21787:19:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21778:29:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21744:63:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33655, + "nodeType": "ExpressionStatement", + "src": "21744:63:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33656, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21813:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21813:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21851:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33659, + "name": "received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33616, + "src": "21831:8:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21831:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "21831:19:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21831:22:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21813:40:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33665, + "nodeType": "ExpressionStatement", + "src": "21813:40:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33666, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "21860:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33673, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33667, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21877:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33672, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33668, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21882:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33669, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21882:11:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 33670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21896:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21882:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21877:21:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21860:39:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "id": 33674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "sentIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32698, + "src": "21860:49:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33675, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21912:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sentIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32698, + "src": "21912:17:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21860:69:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33678, + "nodeType": "ExpressionStatement", + "src": "21860:69:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33679, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21935:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33682, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33680, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33608, + "src": "21940:7:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr", + "typeString": "struct Escrow.EscrowedPayment storage pointer" + } + }, + "id": 33681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sentIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 32698, + "src": "21940:17:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21935:23:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33683, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21961:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33688, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33684, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21966:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21966:11:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 33686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21980:1:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21966:15:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21961:21:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21935:47:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33690, + "nodeType": "ExpressionStatement", + "src": "21935:47:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33691, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "21988:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21988:11:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22018:1:95", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33694, + "name": "sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33625, + "src": "22002:4:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "id": 33695, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22002:11:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "22002:15:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 33698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22002:18:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21988:32:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33700, + "nodeType": "ExpressionStatement", + "src": "21988:32:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "22027:34:95", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33701, + "name": "escrowedPayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32711, + "src": "22034:16:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$", + "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)" + } + }, + "id": 33703, + "indexExpression": { + "argumentTypes": null, + "id": 33702, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33604, + "src": "22051:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22034:27:95", + "typeDescriptions": { + "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage", + "typeString": "struct Escrow.EscrowedPayment storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33705, + "nodeType": "ExpressionStatement", + "src": "22027:34:95" + }, + { + "expression": { + "argumentTypes": null, + "id": 33709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "22067:42:95", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 33706, + "name": "trustedIssuersPerPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32726, + "src": "22074:24:95", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", + "typeString": "mapping(address => address[] storage ref)" + } + }, + "id": 33708, + "indexExpression": { + "argumentTypes": null, + "id": 33707, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33604, + "src": "22099:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22074:35:95", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33710, + "nodeType": "ExpressionStatement", + "src": "22067:42:95" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33712, + "name": "paymentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33604, + "src": "22140:9:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33711, + "name": "TrustedIssuersUnset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32664, + "src": "22120:19:95", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 33713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22120:30:95", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33714, + "nodeType": "EmitStatement", + "src": "22115:35:95" + } + ] + }, + "documentation": "@notice Deletes the payment from its receiver's and sender's lists of payments,\nand zeroes out all the data in the struct.\n@param paymentId The ID of the payment to be deleted.", + "id": 33716, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deletePayment", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33604, + "name": "paymentId", + "nodeType": "VariableDeclaration", + "scope": 33716, + "src": "21409:17:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33603, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21409:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21408:19:95" + }, + "returnParameters": { + "id": 33606, + "nodeType": "ParameterList", + "parameters": [], + "src": "21436:0:95" + }, + "scope": 33717, + "src": "21386:769:95", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 33718, + "src": "650:21507:95" + } + ], + "src": "0:22158:95" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/identity/Escrow.sol", + "exportedSymbols": { + "Escrow": [ + 33717 + ] + } + }, + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ] + }, + "id": 32601, + "name": "PragmaDirective", + "src": "0:24:95" + }, + { + "attributes": { + "SourceUnit": 364, + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32602, + "name": "ImportDirective", + "src": "26:59:95" + }, + { + "attributes": { + "SourceUnit": 482, + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32603, + "name": "ImportDirective", + "src": "86:63:95" + }, + { + "attributes": { + "SourceUnit": 887, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32604, + "name": "ImportDirective", + "src": "150:63:95" + }, + { + "attributes": { + "SourceUnit": 1176, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32605, + "name": "ImportDirective", + "src": "214:67:95" + }, + { + "attributes": { + "SourceUnit": 35925, + "absolutePath": "project:/contracts/identity/interfaces/IAttestations.sol", + "file": "./interfaces/IAttestations.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32606, + "name": "ImportDirective", + "src": "283:40:95" + }, + { + "attributes": { + "SourceUnit": 36154, + "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol", + "file": "./interfaces/IFederatedAttestations.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32607, + "name": "ImportDirective", + "src": "324:49:95" + }, + { + "attributes": { + "SourceUnit": 36032, + "absolutePath": "project:/contracts/identity/interfaces/IEscrow.sol", + "file": "./interfaces/IEscrow.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32608, + "name": "ImportDirective", + "src": "374:34:95" + }, + { + "attributes": { + "SourceUnit": 5885, + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32609, + "name": "ImportDirective", + "src": "409:37:95" + }, + { + "attributes": { + "SourceUnit": 9108, + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32610, + "name": "ImportDirective", + "src": "447:57:95" + }, + { + "attributes": { + "SourceUnit": 8810, + "absolutePath": "project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol", + "file": "../common/UsingRegistryV2BackwardsCompatible.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32611, + "name": "ImportDirective", + "src": "505:58:95" + }, + { + "attributes": { + "SourceUnit": 6903, + "absolutePath": "project:/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32612, + "name": "ImportDirective", + "src": "564:34:95" + }, + { + "attributes": { + "SourceUnit": 9486, + "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "scope": 33718, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 32613, + "name": "ImportDirective", + "src": "599:49:95" + }, + { + "attributes": { + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 8809, + 9107, + 9485, + 36031 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 33717, + 8809, + 8801, + 5884, + 481, + 26, + 9485, + 9107, + 36031 + ], + "name": "Escrow", + "scope": 33718 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IEscrow", + "referencedDeclaration": 36031, + "type": "contract IEscrow" + }, + "id": 32614, + "name": "UserDefinedTypeName", + "src": "671:7:95" + } + ], + "id": 32615, + "name": "InheritanceSpecifier", + "src": "671:7:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ICeloVersionedContract", + "referencedDeclaration": 9107, + "type": "contract ICeloVersionedContract" + }, + "id": 32616, + "name": "UserDefinedTypeName", + "src": "682:22:95" + } + ], + "id": 32617, + "name": "InheritanceSpecifier", + "src": "682:22:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ReentrancyGuard", + "referencedDeclaration": 9485, + "type": "contract ReentrancyGuard" + }, + "id": 32618, + "name": "UserDefinedTypeName", + "src": "708:15:95" + } + ], + "id": 32619, + "name": "InheritanceSpecifier", + "src": "708:15:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Ownable", + "referencedDeclaration": 481, + "type": "contract Ownable" + }, + "id": 32620, + "name": "UserDefinedTypeName", + "src": "727:7:95" + } + ], + "id": 32621, + "name": "InheritanceSpecifier", + "src": "727:7:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Initializable", + "referencedDeclaration": 5884, + "type": "contract Initializable" + }, + "id": 32622, + "name": "UserDefinedTypeName", + "src": "738:13:95" + } + ], + "id": 32623, + "name": "InheritanceSpecifier", + "src": "738:13:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "UsingRegistryV2BackwardsCompatible", + "referencedDeclaration": 8809, + "type": "contract UsingRegistryV2BackwardsCompatible" + }, + "id": 32624, + "name": "UserDefinedTypeName", + "src": "846:34:95" + } + ], + "id": 32625, + "name": "InheritanceSpecifier", + "src": "846:34:95" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 363, + "type": "library SafeMath" + }, + "id": 32626, + "name": "UserDefinedTypeName", + "src": "891:8:95" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32627, + "name": "ElementaryTypeName", + "src": "904:7:95" + } + ], + "id": 32628, + "name": "UsingForDirective", + "src": "885:27:95" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeERC20", + "referencedDeclaration": 1175, + "type": "library SafeERC20" + }, + "id": 32629, + "name": "UserDefinedTypeName", + "src": "921:9:95" + }, + { + "attributes": { + "contractScope": null, + "name": "ERC20", + "referencedDeclaration": 886, + "type": "contract ERC20" + }, + "id": 32630, + "name": "UserDefinedTypeName", + "src": "935:5:95" + } + ], + "id": 32631, + "name": "UsingForDirective", + "src": "915:26:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "DefaultTrustedIssuerAdded" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "trustedIssuer", + "scope": 32635, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32632, + "name": "ElementaryTypeName", + "src": "977:7:95" + } + ], + "id": 32633, + "name": "VariableDeclaration", + "src": "977:29:95" + } + ], + "id": 32634, + "name": "ParameterList", + "src": "976:31:95" + } + ], + "id": 32635, + "name": "EventDefinition", + "src": "945:63:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "DefaultTrustedIssuerRemoved" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "trustedIssuer", + "scope": 32639, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32636, + "name": "ElementaryTypeName", + "src": "1045:7:95" + } + ], + "id": 32637, + "name": "VariableDeclaration", + "src": "1045:29:95" + } + ], + "id": 32638, + "name": "ParameterList", + "src": "1044:31:95" + } + ], + "id": 32639, + "name": "EventDefinition", + "src": "1011:65:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "Transfer" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "from", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32640, + "name": "ElementaryTypeName", + "src": "1100:7:95" + } + ], + "id": 32641, + "name": "VariableDeclaration", + "src": "1100:20:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "identifier", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32642, + "name": "ElementaryTypeName", + "src": "1126:7:95" + } + ], + "id": 32643, + "name": "VariableDeclaration", + "src": "1126:26:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "token", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32644, + "name": "ElementaryTypeName", + "src": "1158:7:95" + } + ], + "id": 32645, + "name": "VariableDeclaration", + "src": "1158:21:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "value", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32646, + "name": "ElementaryTypeName", + "src": "1185:7:95" + } + ], + "id": 32647, + "name": "VariableDeclaration", + "src": "1185:13:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "paymentId", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32648, + "name": "ElementaryTypeName", + "src": "1204:7:95" + } + ], + "id": 32649, + "name": "VariableDeclaration", + "src": "1204:17:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "minAttestations", + "scope": 32653, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32650, + "name": "ElementaryTypeName", + "src": "1227:7:95" + } + ], + "id": 32651, + "name": "VariableDeclaration", + "src": "1227:23:95" + } + ], + "id": 32652, + "name": "ParameterList", + "src": "1094:160:95" + } + ], + "id": 32653, + "name": "EventDefinition", + "src": "1080:175:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TrustedIssuersSet" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "paymentId", + "scope": 32660, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32654, + "name": "ElementaryTypeName", + "src": "1283:7:95" + } + ], + "id": 32655, + "name": "VariableDeclaration", + "src": "1283:25:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "trustedIssuers", + "scope": 32660, + "stateVariable": false, + "storageLocation": "default", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32656, + "name": "ElementaryTypeName", + "src": "1310:7:95" + } + ], + "id": 32657, + "name": "ArrayTypeName", + "src": "1310:9:95" + } + ], + "id": 32658, + "name": "VariableDeclaration", + "src": "1310:24:95" + } + ], + "id": 32659, + "name": "ParameterList", + "src": "1282:53:95" + } + ], + "id": 32660, + "name": "EventDefinition", + "src": "1259:77:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TrustedIssuersUnset" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "paymentId", + "scope": 32664, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32661, + "name": "ElementaryTypeName", + "src": "1365:7:95" + } + ], + "id": 32662, + "name": "VariableDeclaration", + "src": "1365:25:95" + } + ], + "id": 32663, + "name": "ParameterList", + "src": "1364:27:95" + } + ], + "id": 32664, + "name": "EventDefinition", + "src": "1339:53:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "Withdrawal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "identifier", + "scope": 32676, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32665, + "name": "ElementaryTypeName", + "src": "1418:7:95" + } + ], + "id": 32666, + "name": "VariableDeclaration", + "src": "1418:26:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "to", + "scope": 32676, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32667, + "name": "ElementaryTypeName", + "src": "1561:7:95" + } + ], + "id": 32668, + "name": "VariableDeclaration", + "src": "1561:18:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "token", + "scope": 32676, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32669, + "name": "ElementaryTypeName", + "src": "1585:7:95" + } + ], + "id": 32670, + "name": "VariableDeclaration", + "src": "1585:21:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "value", + "scope": 32676, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32671, + "name": "ElementaryTypeName", + "src": "1612:7:95" + } + ], + "id": 32672, + "name": "VariableDeclaration", + "src": "1612:13:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "paymentId", + "scope": 32676, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32673, + "name": "ElementaryTypeName", + "src": "1631:7:95" + } + ], + "id": 32674, + "name": "VariableDeclaration", + "src": "1631:17:95" + } + ], + "id": 32675, + "name": "ParameterList", + "src": "1412:240:95" + } + ], + "id": 32676, + "name": "EventDefinition", + "src": "1396:257:95" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "Revocation" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "identifier", + "scope": 32688, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32677, + "name": "ElementaryTypeName", + "src": "1679:7:95" + } + ], + "id": 32678, + "name": "VariableDeclaration", + "src": "1679:26:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "by", + "scope": 32688, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32679, + "name": "ElementaryTypeName", + "src": "1711:7:95" + } + ], + "id": 32680, + "name": "VariableDeclaration", + "src": "1711:18:95" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "token", + "scope": 32688, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32681, + "name": "ElementaryTypeName", + "src": "1735:7:95" + } + ], + "id": 32682, + "name": "VariableDeclaration", + "src": "1735:21:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "value", + "scope": 32688, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32683, + "name": "ElementaryTypeName", + "src": "1762:7:95" + } + ], + "id": 32684, + "name": "VariableDeclaration", + "src": "1762:13:95" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "paymentId", + "scope": 32688, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32685, + "name": "ElementaryTypeName", + "src": "1781:7:95" + } + ], + "id": 32686, + "name": "VariableDeclaration", + "src": "1781:17:95" + } + ], + "id": 32687, + "name": "ParameterList", + "src": "1673:129:95" + } + ], + "id": 32688, + "name": "EventDefinition", + "src": "1657:146:95" + }, + { + "attributes": { + "canonicalName": "Escrow.EscrowedPayment", + "name": "EscrowedPayment", + "scope": 33717, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "recipientIdentifier", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32689, + "name": "ElementaryTypeName", + "src": "1836:7:95" + } + ], + "id": 32690, + "name": "VariableDeclaration", + "src": "1836:27:95" + }, + { + "attributes": { + "constant": false, + "name": "sender", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32691, + "name": "ElementaryTypeName", + "src": "1869:7:95" + } + ], + "id": 32692, + "name": "VariableDeclaration", + "src": "1869:14:95" + }, + { + "attributes": { + "constant": false, + "name": "token", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32693, + "name": "ElementaryTypeName", + "src": "1889:7:95" + } + ], + "id": 32694, + "name": "VariableDeclaration", + "src": "1889:13:95" + }, + { + "attributes": { + "constant": false, + "name": "value", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32695, + "name": "ElementaryTypeName", + "src": "1908:7:95" + } + ], + "id": 32696, + "name": "VariableDeclaration", + "src": "1908:13:95" + }, + { + "attributes": { + "constant": false, + "name": "sentIndex", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32697, + "name": "ElementaryTypeName", + "src": "1927:7:95" + } + ], + "id": 32698, + "name": "VariableDeclaration", + "src": "1927:17:95" + }, + { + "attributes": { + "constant": false, + "name": "receivedIndex", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32699, + "name": "ElementaryTypeName", + "src": "2013:7:95" + } + ], + "id": 32700, + "name": "VariableDeclaration", + "src": "2013:21:95" + }, + { + "attributes": { + "constant": false, + "name": "timestamp", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32701, + "name": "ElementaryTypeName", + "src": "2110:7:95" + } + ], + "id": 32702, + "name": "VariableDeclaration", + "src": "2110:17:95" + }, + { + "attributes": { + "constant": false, + "name": "expirySeconds", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32703, + "name": "ElementaryTypeName", + "src": "2133:7:95" + } + ], + "id": 32704, + "name": "VariableDeclaration", + "src": "2133:21:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 32707, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32705, + "name": "ElementaryTypeName", + "src": "2160:7:95" + } + ], + "id": 32706, + "name": "VariableDeclaration", + "src": "2160:23:95" + } + ], + "id": 32707, + "name": "StructDefinition", + "src": "1807:381:95" + }, + { + "attributes": { + "constant": false, + "name": "escrowedPayments", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => struct Escrow.EscrowedPayment)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => struct Escrow.EscrowedPayment)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 32708, + "name": "ElementaryTypeName", + "src": "2345:7:95" + }, + { + "attributes": { + "contractScope": null, + "name": "EscrowedPayment", + "referencedDeclaration": 32707, + "type": "struct Escrow.EscrowedPayment" + }, + "id": 32709, + "name": "UserDefinedTypeName", + "src": "2356:15:95" + } + ], + "id": 32710, + "name": "Mapping", + "src": "2337:35:95" + } + ], + "id": 32711, + "name": "VariableDeclaration", + "src": "2337:59:95" + }, + { + "attributes": { + "constant": false, + "name": "receivedPaymentIds", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => address[])", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => address[])" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32712, + "name": "ElementaryTypeName", + "src": "2486:7:95" + }, + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32713, + "name": "ElementaryTypeName", + "src": "2497:7:95" + } + ], + "id": 32714, + "name": "ArrayTypeName", + "src": "2497:9:95" + } + ], + "id": 32715, + "name": "Mapping", + "src": "2478:29:95" + } + ], + "id": 32716, + "name": "VariableDeclaration", + "src": "2478:55:95" + }, + { + "attributes": { + "constant": false, + "name": "sentPaymentIds", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address[])", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address[])" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 32717, + "name": "ElementaryTypeName", + "src": "2615:7:95" + }, + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32718, + "name": "ElementaryTypeName", + "src": "2626:7:95" + } + ], + "id": 32719, + "name": "ArrayTypeName", + "src": "2626:9:95" + } + ], + "id": 32720, + "name": "Mapping", + "src": "2607:29:95" + } + ], + "id": 32721, + "name": "VariableDeclaration", + "src": "2607:51:95" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuersPerPayment", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address[])", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address[])" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 32722, + "name": "ElementaryTypeName", + "src": "2750:7:95" + }, + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32723, + "name": "ElementaryTypeName", + "src": "2761:7:95" + } + ], + "id": 32724, + "name": "ArrayTypeName", + "src": "2761:9:95" + } + ], + "id": 32725, + "name": "Mapping", + "src": "2742:29:95" + } + ], + "id": 32726, + "name": "VariableDeclaration", + "src": "2742:61:95" + }, + { + "attributes": { + "constant": false, + "name": "defaultTrustedIssuers", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "address[]", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32727, + "name": "ElementaryTypeName", + "src": "2879:7:95" + } + ], + "id": 32728, + "name": "ArrayTypeName", + "src": "2879:9:95" + } + ], + "id": 32729, + "name": "VariableDeclaration", + "src": "2879:38:95" + }, + { + "attributes": { + "constant": true, + "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT", + "scope": 33717, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32730, + "name": "ElementaryTypeName", + "src": "3059:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "313030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 100", + "value": "100" + }, + "id": 32731, + "name": "Literal", + "src": "3117:3:95" + } + ], + "id": 32732, + "name": "VariableDeclaration", + "src": "3059:61:95" + }, + { + "attributes": { + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "name": "", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "test", + "scope": 32741, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 32733, + "name": "ElementaryTypeName", + "src": "3282:4:95" + } + ], + "id": 32734, + "name": "VariableDeclaration", + "src": "3282:9:95" + } + ], + "id": 32735, + "name": "ParameterList", + "src": "3281:11:95" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32739, + "name": "ParameterList", + "src": "3320:0:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5884, + "type": "type(contract Initializable)", + "value": "Initializable" + }, + "id": 32736, + "name": "Identifier", + "src": "3300:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32734, + "type": "bool", + "value": "test" + }, + "id": 32737, + "name": "Identifier", + "src": "3314:4:95" + } + ], + "id": 32738, + "name": "ModifierInvocation", + "src": "3300:19:95" + }, + { + "attributes": { + "statements": [ + null + ] + }, + "children": [], + "id": 32740, + "name": "Block", + "src": "3320:2:95" + } + ], + "id": 32741, + "name": "FunctionDefinition", + "src": "3270:52:95" + }, + { + "attributes": { + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getVersionNumber", + "scope": 33717, + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32742, + "name": "ParameterList", + "src": "3521:2:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 32759, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32743, + "name": "ElementaryTypeName", + "src": "3547:7:95" + } + ], + "id": 32744, + "name": "VariableDeclaration", + "src": "3547:7:95" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 32759, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32745, + "name": "ElementaryTypeName", + "src": "3556:7:95" + } + ], + "id": 32746, + "name": "VariableDeclaration", + "src": "3556:7:95" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 32759, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32747, + "name": "ElementaryTypeName", + "src": "3565:7:95" + } + ], + "id": 32748, + "name": "VariableDeclaration", + "src": "3565:7:95" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 32759, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32749, + "name": "ElementaryTypeName", + "src": "3574:7:95" + } + ], + "id": 32750, + "name": "VariableDeclaration", + "src": "3574:7:95" + } + ], + "id": 32751, + "name": "ParameterList", + "src": "3546:36:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 32751 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(int_const 1,int_const 2,int_const 0,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 32752, + "name": "Literal", + "src": "3597:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "32", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 2", + "value": "2" + }, + "id": 32753, + "name": "Literal", + "src": "3600:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 32754, + "name": "Literal", + "src": "3603:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 32755, + "name": "Literal", + "src": "3606:1:95" + } + ], + "id": 32756, + "name": "TupleExpression", + "src": "3596:12:95" + } + ], + "id": 32757, + "name": "Return", + "src": "3589:19:95" + } + ], + "id": 32758, + "name": "Block", + "src": "3583:30:95" + } + ], + "id": 32759, + "name": "FunctionDefinition", + "src": "3496:117:95" + }, + { + "attributes": { + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "initialize", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32760, + "name": "ParameterList", + "src": "3744:2:95" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32763, + "name": "ParameterList", + "src": "3768:0:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5883, + "type": "modifier ()", + "value": "initializer" + }, + "id": 32761, + "name": "Identifier", + "src": "3756:11:95" + } + ], + "id": 32762, + "name": "ModifierInvocation", + "src": "3756:11:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 480, + "type": "function (address)", + "value": "_transferOwnership" + }, + "id": 32764, + "name": "Identifier", + "src": "3774:18:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 32765, + "name": "Identifier", + "src": "3793:3:95" + } + ], + "id": 32766, + "name": "MemberAccess", + "src": "3793:10:95" + } + ], + "id": 32767, + "name": "FunctionCall", + "src": "3774:30:95" + } + ], + "id": 32768, + "name": "ExpressionStatement", + "src": "3774:30:95" + } + ], + "id": 32769, + "name": "Block", + "src": "3768:41:95" + } + ], + "id": 32770, + "name": "FunctionDefinition", + "src": "3725:84:95" + }, + { + "attributes": { + "documentation": "@notice Add an address to the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to add.\n@dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n@dev Throws if defaultTrustedIssuers is already at max allowed length.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "addDefaultTrustedIssuer", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 36023, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "trustedIssuer", + "scope": 32834, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32771, + "name": "ElementaryTypeName", + "src": "4139:7:95" + } + ], + "id": 32772, + "name": "VariableDeclaration", + "src": "4139:21:95" + } + ], + "id": 32773, + "name": "ParameterList", + "src": "4138:23:95" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32776, + "name": "ParameterList", + "src": "4181:0:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 414, + "type": "modifier ()", + "value": "onlyOwner" + }, + "id": 32774, + "name": "Identifier", + "src": "4171:9:95" + } + ], + "id": 32775, + "name": "ModifierInvocation", + "src": "4171:9:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b", + "typeString": "literal_string \"trustedIssuer can't be null\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32777, + "name": "Identifier", + "src": "4187:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 32778, + "name": "ElementaryTypeNameExpression", + "src": "4195:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 32779, + "name": "Literal", + "src": "4203:1:95" + } + ], + "id": 32780, + "name": "FunctionCall", + "src": "4195:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32772, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32781, + "name": "Identifier", + "src": "4209:13:95" + } + ], + "id": 32782, + "name": "BinaryOperation", + "src": "4195:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "747275737465644973737565722063616e2774206265206e756c6c", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"trustedIssuer can't be null\"", + "value": "trustedIssuer can't be null" + }, + "id": 32783, + "name": "Literal", + "src": "4224:29:95" + } + ], + "id": 32784, + "name": "FunctionCall", + "src": "4187:67:95" + } + ], + "id": 32785, + "name": "ExpressionStatement", + "src": "4187:67:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f", + "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32786, + "name": "Identifier", + "src": "4260:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32787, + "name": "Identifier", + "src": "4275:21:95" + } + ], + "id": 32788, + "name": "MemberAccess", + "src": "4275:28:95" + } + ], + "id": 32789, + "name": "MemberAccess", + "src": "4275:32:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 32790, + "name": "Literal", + "src": "4308:1:95" + } + ], + "id": 32791, + "name": "FunctionCall", + "src": "4275:35:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32732, + "type": "uint256", + "value": "MAX_TRUSTED_ISSUERS_PER_PAYMENT" + }, + "id": 32792, + "name": "Identifier", + "src": "4314:31:95" + } + ], + "id": 32793, + "name": "BinaryOperation", + "src": "4275:70:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"", + "value": "defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers" + }, + "id": 32794, + "name": "Literal", + "src": "4353:76:95" + } + ], + "id": 32795, + "name": "FunctionCall", + "src": "4260:175:95" + } + ], + "id": 32796, + "name": "ExpressionStatement", + "src": "4260:175:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 32798 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 32822, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32797, + "name": "ElementaryTypeName", + "src": "4495:7:95" + } + ], + "id": 32798, + "name": "VariableDeclaration", + "src": "4495:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 32799, + "name": "Literal", + "src": "4507:1:95" + } + ], + "id": 32800, + "name": "VariableDeclarationStatement", + "src": "4495:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32798, + "type": "uint256", + "value": "i" + }, + "id": 32801, + "name": "Identifier", + "src": "4510:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32802, + "name": "Identifier", + "src": "4514:21:95" + } + ], + "id": 32803, + "name": "MemberAccess", + "src": "4514:28:95" + } + ], + "id": 32804, + "name": "BinaryOperation", + "src": "4510:32:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32798, + "type": "uint256", + "value": "i" + }, + "id": 32805, + "name": "Identifier", + "src": "4544:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32798, + "type": "uint256", + "value": "i" + }, + "id": 32806, + "name": "Identifier", + "src": "4548:1:95" + } + ], + "id": 32807, + "name": "MemberAccess", + "src": "4548:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 32808, + "name": "Literal", + "src": "4554:1:95" + } + ], + "id": 32809, + "name": "FunctionCall", + "src": "4548:8:95" + } + ], + "id": 32810, + "name": "Assignment", + "src": "4544:12:95" + } + ], + "id": 32811, + "name": "ExpressionStatement", + "src": "4544:12:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f", + "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32812, + "name": "Identifier", + "src": "4566:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32813, + "name": "Identifier", + "src": "4583:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32798, + "type": "uint256", + "value": "i" + }, + "id": 32814, + "name": "Identifier", + "src": "4605:1:95" + } + ], + "id": 32815, + "name": "IndexAccess", + "src": "4583:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32772, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32816, + "name": "Identifier", + "src": "4611:13:95" + } + ], + "id": 32817, + "name": "BinaryOperation", + "src": "4583:41:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472757374656449737375657220616c726561647920696e2064656661756c745472757374656449737375657273", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"trustedIssuer already in defaultTrustedIssuers\"", + "value": "trustedIssuer already in defaultTrustedIssuers" + }, + "id": 32818, + "name": "Literal", + "src": "4634:48:95" + } + ], + "id": 32819, + "name": "FunctionCall", + "src": "4566:124:95" + } + ], + "id": 32820, + "name": "ExpressionStatement", + "src": "4566:124:95" + } + ], + "id": 32821, + "name": "Block", + "src": "4558:139:95" + } + ], + "id": 32822, + "name": "ForStatement", + "src": "4490:207:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "push", + "referencedDeclaration": null, + "type": "function (address) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32823, + "name": "Identifier", + "src": "4702:21:95" + } + ], + "id": 32825, + "name": "MemberAccess", + "src": "4702:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32772, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32826, + "name": "Identifier", + "src": "4729:13:95" + } + ], + "id": 32827, + "name": "FunctionCall", + "src": "4702:41:95" + } + ], + "id": 32828, + "name": "ExpressionStatement", + "src": "4702:41:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32635, + "type": "function (address)", + "value": "DefaultTrustedIssuerAdded" + }, + "id": 32829, + "name": "Identifier", + "src": "4754:25:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32772, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32830, + "name": "Identifier", + "src": "4780:13:95" + } + ], + "id": 32831, + "name": "FunctionCall", + "src": "4754:40:95" + } + ], + "id": 32832, + "name": "EmitStatement", + "src": "4749:45:95" + } + ], + "id": 32833, + "name": "Block", + "src": "4181:618:95" + } + ], + "id": 32834, + "name": "FunctionDefinition", + "src": "4106:693:95" + }, + { + "attributes": { + "documentation": "@notice Remove an address from the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to remove.\n@param index Index of trustedIssuer in defaultTrustedIssuers.\n@dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "removeDefaultTrustedIssuer", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 36030, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "trustedIssuer", + "scope": 32891, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32835, + "name": "ElementaryTypeName", + "src": "5128:7:95" + } + ], + "id": 32836, + "name": "VariableDeclaration", + "src": "5128:21:95" + }, + { + "attributes": { + "constant": false, + "name": "index", + "scope": 32891, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32837, + "name": "ElementaryTypeName", + "src": "5151:7:95" + } + ], + "id": 32838, + "name": "VariableDeclaration", + "src": "5151:13:95" + } + ], + "id": 32839, + "name": "ParameterList", + "src": "5127:38:95" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 32842, + "name": "ParameterList", + "src": "5185:0:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 414, + "type": "modifier ()", + "value": "onlyOwner" + }, + "id": 32840, + "name": "Identifier", + "src": "5175:9:95" + } + ], + "id": 32841, + "name": "ModifierInvocation", + "src": "5175:9:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 32844 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "numDefaultTrustedIssuers", + "scope": 32890, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32843, + "name": "ElementaryTypeName", + "src": "5191:7:95" + } + ], + "id": 32844, + "name": "VariableDeclaration", + "src": "5191:32:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32845, + "name": "Identifier", + "src": "5226:21:95" + } + ], + "id": 32846, + "name": "MemberAccess", + "src": "5226:28:95" + } + ], + "id": 32847, + "name": "VariableDeclarationStatement", + "src": "5191:63:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799", + "typeString": "literal_string \"index is invalid\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32848, + "name": "Identifier", + "src": "5260:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32838, + "type": "uint256", + "value": "index" + }, + "id": 32849, + "name": "Identifier", + "src": "5268:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32844, + "type": "uint256", + "value": "numDefaultTrustedIssuers" + }, + "id": 32850, + "name": "Identifier", + "src": "5276:24:95" + } + ], + "id": 32851, + "name": "BinaryOperation", + "src": "5268:32:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "696e64657820697320696e76616c6964", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"index is invalid\"", + "value": "index is invalid" + }, + "id": 32852, + "name": "Literal", + "src": "5302:18:95" + } + ], + "id": 32853, + "name": "FunctionCall", + "src": "5260:61:95" + } + ], + "id": 32854, + "name": "ExpressionStatement", + "src": "5260:61:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73", + "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32855, + "name": "Identifier", + "src": "5327:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32856, + "name": "Identifier", + "src": "5342:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32838, + "type": "uint256", + "value": "index" + }, + "id": 32857, + "name": "Identifier", + "src": "5364:5:95" + } + ], + "id": 32858, + "name": "IndexAccess", + "src": "5342:28:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32836, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32859, + "name": "Identifier", + "src": "5374:13:95" + } + ], + "id": 32860, + "name": "BinaryOperation", + "src": "5342:45:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"", + "value": "trustedIssuer does not match address found at defaultTrustedIssuers[index]" + }, + "id": 32861, + "name": "Literal", + "src": "5395:76:95" + } + ], + "id": 32862, + "name": "FunctionCall", + "src": "5327:150:95" + } + ], + "id": 32863, + "name": "ExpressionStatement", + "src": "5327:150:95" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32838, + "type": "uint256", + "value": "index" + }, + "id": 32864, + "name": "Identifier", + "src": "5487:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32844, + "type": "uint256", + "value": "numDefaultTrustedIssuers" + }, + "id": 32865, + "name": "Identifier", + "src": "5496:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 32866, + "name": "Literal", + "src": "5523:1:95" + } + ], + "id": 32867, + "name": "BinaryOperation", + "src": "5496:28:95" + } + ], + "id": 32868, + "name": "BinaryOperation", + "src": "5487:37:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32869, + "name": "Identifier", + "src": "5580:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32838, + "type": "uint256", + "value": "index" + }, + "id": 32870, + "name": "Identifier", + "src": "5602:5:95" + } + ], + "id": 32871, + "name": "IndexAccess", + "src": "5580:28:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32872, + "name": "Identifier", + "src": "5611:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32844, + "type": "uint256", + "value": "numDefaultTrustedIssuers" + }, + "id": 32873, + "name": "Identifier", + "src": "5633:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 32874, + "name": "Literal", + "src": "5660:1:95" + } + ], + "id": 32875, + "name": "BinaryOperation", + "src": "5633:28:95" + } + ], + "id": 32876, + "name": "IndexAccess", + "src": "5611:51:95" + } + ], + "id": 32877, + "name": "Assignment", + "src": "5580:82:95" + } + ], + "id": 32878, + "name": "ExpressionStatement", + "src": "5580:82:95" + } + ], + "id": 32879, + "name": "Block", + "src": "5526:143:95" + } + ], + "id": 32880, + "name": "IfStatement", + "src": "5483:186:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "pop", + "referencedDeclaration": null, + "type": "function ()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32881, + "name": "Identifier", + "src": "5674:21:95" + } + ], + "id": 32883, + "name": "MemberAccess", + "src": "5674:25:95" + } + ], + "id": 32884, + "name": "FunctionCall", + "src": "5674:27:95" + } + ], + "id": 32885, + "name": "ExpressionStatement", + "src": "5674:27:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32639, + "type": "function (address)", + "value": "DefaultTrustedIssuerRemoved" + }, + "id": 32886, + "name": "Identifier", + "src": "5712:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32836, + "type": "address", + "value": "trustedIssuer" + }, + "id": 32887, + "name": "Identifier", + "src": "5740:13:95" + } + ], + "id": 32888, + "name": "FunctionCall", + "src": "5712:42:95" + } + ], + "id": 32889, + "name": "EmitStatement", + "src": "5707:47:95" + } + ], + "id": 32890, + "name": "Block", + "src": "5185:574:95" + } + ], + "id": 32891, + "name": "FunctionDefinition", + "src": "5092:667:95" + }, + { + "attributes": { + "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier and minAttestations).\n Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev If minAttestations is 0, trustedIssuers will be set to empty list.\n@dev msg.sender needs to have already approved this contract to transfer", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "transfer", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 35943, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32892, + "name": "ElementaryTypeName", + "src": "7051:7:95" + } + ], + "id": 32893, + "name": "VariableDeclaration", + "src": "7051:18:95" + }, + { + "attributes": { + "constant": false, + "name": "token", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32894, + "name": "ElementaryTypeName", + "src": "7075:7:95" + } + ], + "id": 32895, + "name": "VariableDeclaration", + "src": "7075:13:95" + }, + { + "attributes": { + "constant": false, + "name": "value", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32896, + "name": "ElementaryTypeName", + "src": "7094:7:95" + } + ], + "id": 32897, + "name": "VariableDeclaration", + "src": "7094:13:95" + }, + { + "attributes": { + "constant": false, + "name": "expirySeconds", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32898, + "name": "ElementaryTypeName", + "src": "7113:7:95" + } + ], + "id": 32899, + "name": "VariableDeclaration", + "src": "7113:21:95" + }, + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32900, + "name": "ElementaryTypeName", + "src": "7140:7:95" + } + ], + "id": 32901, + "name": "VariableDeclaration", + "src": "7140:17:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32902, + "name": "ElementaryTypeName", + "src": "7163:7:95" + } + ], + "id": 32903, + "name": "VariableDeclaration", + "src": "7163:23:95" + } + ], + "id": 32904, + "name": "ParameterList", + "src": "7045:145:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 32935, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 32907, + "name": "ElementaryTypeName", + "src": "7222:4:95" + } + ], + "id": 32908, + "name": "VariableDeclaration", + "src": "7222:4:95" + } + ], + "id": 32909, + "name": "ParameterList", + "src": "7221:6:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 9484, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 32905, + "name": "Identifier", + "src": "7200:12:95" + } + ], + "id": 32906, + "name": "ModifierInvocation", + "src": "7200:12:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 32913 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 32934, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 32911, + "name": "ElementaryTypeName", + "src": "7234:7:95" + } + ], + "id": 32912, + "name": "ArrayTypeName", + "src": "7234:9:95" + } + ], + "id": 32913, + "name": "VariableDeclaration", + "src": "7234:31:95" + } + ], + "id": 32914, + "name": "VariableDeclarationStatement", + "src": "7234:31:95" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32903, + "type": "uint256", + "value": "minAttestations" + }, + "id": 32915, + "name": "Identifier", + "src": "7342:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 32916, + "name": "Literal", + "src": "7360:1:95" + } + ], + "id": 32917, + "name": "BinaryOperation", + "src": "7342:19:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32913, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 32918, + "name": "Identifier", + "src": "7371:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 32919, + "name": "Identifier", + "src": "7388:21:95" + } + ], + "id": 32920, + "name": "Assignment", + "src": "7371:38:95" + } + ], + "id": 32921, + "name": "ExpressionStatement", + "src": "7371:38:95" + } + ], + "id": 32922, + "name": "Block", + "src": "7363:53:95" + } + ], + "id": 32923, + "name": "IfStatement", + "src": "7338:78:95" + }, + { + "attributes": { + "functionReturnParameters": 32909 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33602, + "type": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)", + "value": "_transfer" + }, + "id": 32924, + "name": "Identifier", + "src": "7434:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32893, + "type": "bytes32", + "value": "identifier" + }, + "id": 32925, + "name": "Identifier", + "src": "7453:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32895, + "type": "address", + "value": "token" + }, + "id": 32926, + "name": "Identifier", + "src": "7473:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32897, + "type": "uint256", + "value": "value" + }, + "id": 32927, + "name": "Identifier", + "src": "7488:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32899, + "type": "uint256", + "value": "expirySeconds" + }, + "id": 32928, + "name": "Identifier", + "src": "7503:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32901, + "type": "address", + "value": "paymentId" + }, + "id": 32929, + "name": "Identifier", + "src": "7526:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32903, + "type": "uint256", + "value": "minAttestations" + }, + "id": 32930, + "name": "Identifier", + "src": "7545:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32913, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 32931, + "name": "Identifier", + "src": "7570:14:95" + } + ], + "id": 32932, + "name": "FunctionCall", + "src": "7434:158:95" + } + ], + "id": 32933, + "name": "Return", + "src": "7421:171:95" + } + ], + "id": 32934, + "name": "Block", + "src": "7228:369:95" + } + ], + "id": 32935, + "name": "FunctionDefinition", + "src": "7028:569:95" + }, + { + "attributes": { + "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier\n and attestations completed by trustedIssuers).\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "transferWithTrustedIssuers", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 35963, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32936, + "name": "ElementaryTypeName", + "src": "8864:7:95" + } + ], + "id": 32937, + "name": "VariableDeclaration", + "src": "8864:18:95" + }, + { + "attributes": { + "constant": false, + "name": "token", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32938, + "name": "ElementaryTypeName", + "src": "8888:7:95" + } + ], + "id": 32939, + "name": "VariableDeclaration", + "src": "8888:13:95" + }, + { + "attributes": { + "constant": false, + "name": "value", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32940, + "name": "ElementaryTypeName", + "src": "8907:7:95" + } + ], + "id": 32941, + "name": "VariableDeclaration", + "src": "8907:13:95" + }, + { + "attributes": { + "constant": false, + "name": "expirySeconds", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32942, + "name": "ElementaryTypeName", + "src": "8926:7:95" + } + ], + "id": 32943, + "name": "VariableDeclaration", + "src": "8926:21:95" + }, + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32944, + "name": "ElementaryTypeName", + "src": "8953:7:95" + } + ], + "id": 32945, + "name": "VariableDeclaration", + "src": "8953:17:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 32946, + "name": "ElementaryTypeName", + "src": "8976:7:95" + } + ], + "id": 32947, + "name": "VariableDeclaration", + "src": "8976:23:95" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 32968, + "stateVariable": false, + "storageLocation": "calldata", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32948, + "name": "ElementaryTypeName", + "src": "9005:7:95" + } + ], + "id": 32949, + "name": "ArrayTypeName", + "src": "9005:9:95" + } + ], + "id": 32950, + "name": "VariableDeclaration", + "src": "9005:33:95" + } + ], + "id": 32951, + "name": "ParameterList", + "src": "8858:184:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 32968, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 32954, + "name": "ElementaryTypeName", + "src": "9074:4:95" + } + ], + "id": 32955, + "name": "VariableDeclaration", + "src": "9074:4:95" + } + ], + "id": 32956, + "name": "ParameterList", + "src": "9073:6:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 9484, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 32952, + "name": "Identifier", + "src": "9052:12:95" + } + ], + "id": 32953, + "name": "ModifierInvocation", + "src": "9052:12:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 32956 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33602, + "type": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)", + "value": "_transfer" + }, + "id": 32957, + "name": "Identifier", + "src": "9099:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32937, + "type": "bytes32", + "value": "identifier" + }, + "id": 32958, + "name": "Identifier", + "src": "9118:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32939, + "type": "address", + "value": "token" + }, + "id": 32959, + "name": "Identifier", + "src": "9138:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32941, + "type": "uint256", + "value": "value" + }, + "id": 32960, + "name": "Identifier", + "src": "9153:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32943, + "type": "uint256", + "value": "expirySeconds" + }, + "id": 32961, + "name": "Identifier", + "src": "9168:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32945, + "type": "address", + "value": "paymentId" + }, + "id": 32962, + "name": "Identifier", + "src": "9191:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32947, + "type": "uint256", + "value": "minAttestations" + }, + "id": 32963, + "name": "Identifier", + "src": "9210:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32950, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 32964, + "name": "Identifier", + "src": "9235:14:95" + } + ], + "id": 32965, + "name": "FunctionCall", + "src": "9099:158:95" + } + ], + "id": 32966, + "name": "Return", + "src": "9086:171:95" + } + ], + "id": 32967, + "name": "Block", + "src": "9080:182:95" + } + ], + "id": 32968, + "name": "FunctionDefinition", + "src": "8823:439:95" + }, + { + "attributes": { + "documentation": "@notice Withdraws tokens for a verified user.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return True if withdraw succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender does not prove ownership of the withdraw key.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "withdraw", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 35976, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 33122, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32969, + "name": "ElementaryTypeName", + "src": "9770:7:95" + } + ], + "id": 32970, + "name": "VariableDeclaration", + "src": "9770:17:95" + }, + { + "attributes": { + "constant": false, + "name": "v", + "scope": 33122, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 32971, + "name": "ElementaryTypeName", + "src": "9789:5:95" + } + ], + "id": 32972, + "name": "VariableDeclaration", + "src": "9789:7:95" + }, + { + "attributes": { + "constant": false, + "name": "r", + "scope": 33122, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32973, + "name": "ElementaryTypeName", + "src": "9798:7:95" + } + ], + "id": 32974, + "name": "VariableDeclaration", + "src": "9798:9:95" + }, + { + "attributes": { + "constant": false, + "name": "s", + "scope": 33122, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 32975, + "name": "ElementaryTypeName", + "src": "9809:7:95" + } + ], + "id": 32976, + "name": "VariableDeclaration", + "src": "9809:9:95" + } + ], + "id": 32977, + "name": "ParameterList", + "src": "9769:50:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33122, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 32980, + "name": "ElementaryTypeName", + "src": "9863:4:95" + } + ], + "id": 32981, + "name": "VariableDeclaration", + "src": "9863:4:95" + } + ], + "id": 32982, + "name": "ParameterList", + "src": "9862:6:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 9484, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 32978, + "name": "Identifier", + "src": "9837:12:95" + } + ], + "id": 32979, + "name": "ModifierInvocation", + "src": "9837:12:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 32984 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 33121, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 32983, + "name": "ElementaryTypeName", + "src": "9877:7:95" + } + ], + "id": 32984, + "name": "VariableDeclaration", + "src": "9877:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getSignerOfAddress", + "referencedDeclaration": 6810, + "type": "function (address,uint8,bytes32,bytes32) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 6902, + "type": "type(library Signatures)", + "value": "Signatures" + }, + "id": 32985, + "name": "Identifier", + "src": "9894:10:95" + } + ], + "id": 32986, + "name": "MemberAccess", + "src": "9894:29:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 32987, + "name": "Identifier", + "src": "9924:3:95" + } + ], + "id": 32988, + "name": "MemberAccess", + "src": "9924:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32972, + "type": "uint8", + "value": "v" + }, + "id": 32989, + "name": "Identifier", + "src": "9936:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32974, + "type": "bytes32", + "value": "r" + }, + "id": 32990, + "name": "Identifier", + "src": "9939:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32976, + "type": "bytes32", + "value": "s" + }, + "id": 32991, + "name": "Identifier", + "src": "9942:1:95" + } + ], + "id": 32992, + "name": "FunctionCall", + "src": "9894:50:95" + } + ], + "id": 32993, + "name": "VariableDeclarationStatement", + "src": "9877:67:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90", + "typeString": "literal_string \"Failed to prove ownership of the withdraw key\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 32994, + "name": "Identifier", + "src": "9950:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32984, + "type": "address", + "value": "signer" + }, + "id": 32995, + "name": "Identifier", + "src": "9958:6:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32970, + "type": "address", + "value": "paymentId" + }, + "id": 32996, + "name": "Identifier", + "src": "9968:9:95" + } + ], + "id": 32997, + "name": "BinaryOperation", + "src": "9958:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b6579", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Failed to prove ownership of the withdraw key\"", + "value": "Failed to prove ownership of the withdraw key" + }, + "id": 32998, + "name": "Literal", + "src": "9979:47:95" + } + ], + "id": 32999, + "name": "FunctionCall", + "src": "9950:77:95" + } + ], + "id": 33000, + "name": "ExpressionStatement", + "src": "9950:77:95" + }, + { + "attributes": { + "assignments": [ + 33002 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "payment", + "scope": 33121, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Escrow.EscrowedPayment", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "EscrowedPayment", + "referencedDeclaration": 32707, + "type": "struct Escrow.EscrowedPayment" + }, + "id": 33001, + "name": "UserDefinedTypeName", + "src": "10033:15:95" + } + ], + "id": 33002, + "name": "VariableDeclaration", + "src": "10033:30:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33003, + "name": "Identifier", + "src": "10066:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32970, + "type": "address", + "value": "paymentId" + }, + "id": 33004, + "name": "Identifier", + "src": "10083:9:95" + } + ], + "id": 33005, + "name": "IndexAccess", + "src": "10066:27:95" + } + ], + "id": 33006, + "name": "VariableDeclarationStatement", + "src": "10033:60:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad", + "typeString": "literal_string \"Invalid withdraw value.\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33007, + "name": "Identifier", + "src": "10099:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33008, + "name": "Identifier", + "src": "10107:7:95" + } + ], + "id": 33009, + "name": "MemberAccess", + "src": "10107:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 33010, + "name": "ElementaryTypeNameExpression", + "src": "10124:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33011, + "name": "Literal", + "src": "10132:1:95" + } + ], + "id": 33012, + "name": "FunctionCall", + "src": "10124:10:95" + } + ], + "id": 33013, + "name": "BinaryOperation", + "src": "10107:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33014, + "name": "Identifier", + "src": "10138:7:95" + } + ], + "id": 33015, + "name": "MemberAccess", + "src": "10138:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33016, + "name": "Literal", + "src": "10154:1:95" + } + ], + "id": 33017, + "name": "BinaryOperation", + "src": "10138:17:95" + } + ], + "id": 33018, + "name": "BinaryOperation", + "src": "10107:48:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e76616c69642077697468647261772076616c75652e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Invalid withdraw value.\"", + "value": "Invalid withdraw value." + }, + "id": 33019, + "name": "Literal", + "src": "10157:25:95" + } + ], + "id": 33020, + "name": "FunctionCall", + "src": "10099:84:95" + } + ], + "id": 33021, + "name": "ExpressionStatement", + "src": "10099:84:95" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "minAttestations", + "referencedDeclaration": 32706, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33022, + "name": "Identifier", + "src": "10375:7:95" + } + ], + "id": 33023, + "name": "MemberAccess", + "src": "10375:23:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33024, + "name": "Literal", + "src": "10401:1:95" + } + ], + "id": 33025, + "name": "BinaryOperation", + "src": "10375:27:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33027 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "passedCheck", + "scope": 33090, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33026, + "name": "ElementaryTypeName", + "src": "10412:4:95" + } + ], + "id": 33027, + "name": "VariableDeclaration", + "src": "10412:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 33028, + "name": "Literal", + "src": "10431:5:95" + } + ], + "id": 33029, + "name": "VariableDeclarationStatement", + "src": "10412:24:95" + }, + { + "attributes": { + "assignments": [ + 33033 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 33090, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33031, + "name": "ElementaryTypeName", + "src": "10444:7:95" + } + ], + "id": 33032, + "name": "ArrayTypeName", + "src": "10444:9:95" + } + ], + "id": 33033, + "name": "VariableDeclaration", + "src": "10444:31:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32726, + "type": "mapping(address => address[] storage ref)", + "value": "trustedIssuersPerPayment" + }, + "id": 33034, + "name": "Identifier", + "src": "10478:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32970, + "type": "address", + "value": "paymentId" + }, + "id": 33035, + "name": "Identifier", + "src": "10503:9:95" + } + ], + "id": 33036, + "name": "IndexAccess", + "src": "10478:35:95" + } + ], + "id": 33037, + "name": "VariableDeclarationStatement", + "src": "10444:69:95" + }, + { + "attributes": { + "assignments": [ + 33039 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestationsAddress", + "scope": 33090, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33038, + "name": "ElementaryTypeName", + "src": "10521:7:95" + } + ], + "id": 33039, + "name": "VariableDeclaration", + "src": "10521:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAddressForOrDie", + "referencedDeclaration": 9249, + "type": "function (bytes32) view external returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8325, + "type": "contract IRegistry", + "value": "registryContract" + }, + "id": 33040, + "name": "Identifier", + "src": "10551:16:95" + } + ], + "id": 33041, + "name": "MemberAccess", + "src": "10551:35:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8341, + "type": "bytes32", + "value": "ATTESTATIONS_REGISTRY_ID" + }, + "id": 33042, + "name": "Identifier", + "src": "10587:24:95" + } + ], + "id": 33043, + "name": "FunctionCall", + "src": "10551:61:95" + } + ], + "id": 33044, + "name": "VariableDeclarationStatement", + "src": "10521:91:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33033, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33045, + "name": "Identifier", + "src": "10625:14:95" + } + ], + "id": 33046, + "name": "MemberAccess", + "src": "10625:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33047, + "name": "Literal", + "src": "10649:1:95" + } + ], + "id": 33048, + "name": "BinaryOperation", + "src": "10625:25:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33027, + "type": "bool", + "value": "passedCheck" + }, + "id": 33049, + "name": "Identifier", + "src": "10662:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33323, + "type": "function (address,bytes32,address,uint256,address[] memory) view returns (bool)", + "value": "hasCompletedV1AttestationsAsTrustedIssuer" + }, + "id": 33050, + "name": "Identifier", + "src": "10686:41:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33039, + "type": "address", + "value": "attestationsAddress" + }, + "id": 33051, + "name": "Identifier", + "src": "10741:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33052, + "name": "Identifier", + "src": "10774:7:95" + } + ], + "id": 33053, + "name": "MemberAccess", + "src": "10774:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33054, + "name": "Identifier", + "src": "10815:3:95" + } + ], + "id": 33055, + "name": "MemberAccess", + "src": "10815:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "minAttestations", + "referencedDeclaration": 32706, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33056, + "name": "Identifier", + "src": "10839:7:95" + } + ], + "id": 33057, + "name": "MemberAccess", + "src": "10839:23:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33033, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33058, + "name": "Identifier", + "src": "10876:14:95" + } + ], + "id": 33059, + "name": "FunctionCall", + "src": "10686:216:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33379, + "type": "function (bytes32,address,address[] memory) view returns (bool)", + "value": "hasCompletedV2Attestations" + }, + "id": 33060, + "name": "Identifier", + "src": "10916:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33061, + "name": "Identifier", + "src": "10943:7:95" + } + ], + "id": 33062, + "name": "MemberAccess", + "src": "10943:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33063, + "name": "Identifier", + "src": "10972:3:95" + } + ], + "id": 33064, + "name": "MemberAccess", + "src": "10972:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33033, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33065, + "name": "Identifier", + "src": "10984:14:95" + } + ], + "id": 33066, + "name": "FunctionCall", + "src": "10916:83:95" + } + ], + "id": 33067, + "name": "BinaryOperation", + "src": "10686:313:95" + } + ], + "id": 33068, + "name": "Assignment", + "src": "10662:337:95" + } + ], + "id": 33069, + "name": "ExpressionStatement", + "src": "10662:337:95" + } + ], + "id": 33070, + "name": "Block", + "src": "10652:356:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33027, + "type": "bool", + "value": "passedCheck" + }, + "id": 33071, + "name": "Identifier", + "src": "11102:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33272, + "type": "function (address,bytes32,address,uint256) view returns (bool)", + "value": "hasCompletedV1Attestations" + }, + "id": 33072, + "name": "Identifier", + "src": "11116:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33039, + "type": "address", + "value": "attestationsAddress" + }, + "id": 33073, + "name": "Identifier", + "src": "11154:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33074, + "name": "Identifier", + "src": "11185:7:95" + } + ], + "id": 33075, + "name": "MemberAccess", + "src": "11185:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33076, + "name": "Identifier", + "src": "11224:3:95" + } + ], + "id": 33077, + "name": "MemberAccess", + "src": "11224:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "minAttestations", + "referencedDeclaration": 32706, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33078, + "name": "Identifier", + "src": "11246:7:95" + } + ], + "id": 33079, + "name": "MemberAccess", + "src": "11246:23:95" + } + ], + "id": 33080, + "name": "FunctionCall", + "src": "11116:163:95" + } + ], + "id": 33081, + "name": "Assignment", + "src": "11102:177:95" + } + ], + "id": 33082, + "name": "ExpressionStatement", + "src": "11102:177:95" + } + ], + "id": 33083, + "name": "Block", + "src": "11014:274:95" + } + ], + "id": 33084, + "name": "IfStatement", + "src": "10621:667:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9", + "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33085, + "name": "Identifier", + "src": "11295:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33027, + "type": "bool", + "value": "passedCheck" + }, + "id": 33086, + "name": "Identifier", + "src": "11312:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "54686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"This account does not have the required attestations to withdraw this payment.\"", + "value": "This account does not have the required attestations to withdraw this payment." + }, + "id": 33087, + "name": "Literal", + "src": "11333:80:95" + } + ], + "id": 33088, + "name": "FunctionCall", + "src": "11295:126:95" + } + ], + "id": 33089, + "name": "ExpressionStatement", + "src": "11295:126:95" + } + ], + "id": 33090, + "name": "Block", + "src": "10404:1024:95" + } + ], + "id": 33091, + "name": "IfStatement", + "src": "10371:1057:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33716, + "type": "function (address)", + "value": "deletePayment" + }, + "id": 33092, + "name": "Identifier", + "src": "11434:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32970, + "type": "address", + "value": "paymentId" + }, + "id": 33093, + "name": "Identifier", + "src": "11448:9:95" + } + ], + "id": 33094, + "name": "FunctionCall", + "src": "11434:24:95" + } + ], + "id": 33095, + "name": "ExpressionStatement", + "src": "11434:24:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 988, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 886, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 33096, + "name": "Identifier", + "src": "11465:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33097, + "name": "Identifier", + "src": "11471:7:95" + } + ], + "id": 33098, + "name": "MemberAccess", + "src": "11471:13:95" + } + ], + "id": 33099, + "name": "FunctionCall", + "src": "11465:20:95" + } + ], + "id": 33100, + "name": "MemberAccess", + "src": "11465:33:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33101, + "name": "Identifier", + "src": "11499:3:95" + } + ], + "id": 33102, + "name": "MemberAccess", + "src": "11499:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33103, + "name": "Identifier", + "src": "11511:7:95" + } + ], + "id": 33104, + "name": "MemberAccess", + "src": "11511:13:95" + } + ], + "id": 33105, + "name": "FunctionCall", + "src": "11465:60:95" + } + ], + "id": 33106, + "name": "ExpressionStatement", + "src": "11465:60:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32676, + "type": "function (bytes32,address,address,uint256,address)", + "value": "Withdrawal" + }, + "id": 33107, + "name": "Identifier", + "src": "11537:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33108, + "name": "Identifier", + "src": "11555:7:95" + } + ], + "id": 33109, + "name": "MemberAccess", + "src": "11555:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33110, + "name": "Identifier", + "src": "11590:3:95" + } + ], + "id": 33111, + "name": "MemberAccess", + "src": "11590:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33112, + "name": "Identifier", + "src": "11608:7:95" + } + ], + "id": 33113, + "name": "MemberAccess", + "src": "11608:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33002, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33114, + "name": "Identifier", + "src": "11629:7:95" + } + ], + "id": 33115, + "name": "MemberAccess", + "src": "11629:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32970, + "type": "address", + "value": "paymentId" + }, + "id": 33116, + "name": "Identifier", + "src": "11650:9:95" + } + ], + "id": 33117, + "name": "FunctionCall", + "src": "11537:128:95" + } + ], + "id": 33118, + "name": "EmitStatement", + "src": "11532:133:95" + }, + { + "attributes": { + "functionReturnParameters": 32982 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 33119, + "name": "Literal", + "src": "11679:4:95" + } + ], + "id": 33120, + "name": "Return", + "src": "11672:11:95" + } + ], + "id": 33121, + "name": "Block", + "src": "9871:1817:95" + } + ], + "id": 33122, + "name": "FunctionDefinition", + "src": "9752:1936:95" + }, + { + "attributes": { + "documentation": "@notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender is not the sender of payment.\n@dev Throws if redeem time hasn't been reached yet.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "revoke", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": 35983, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 33189, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33123, + "name": "ElementaryTypeName", + "src": "12067:7:95" + } + ], + "id": 33124, + "name": "VariableDeclaration", + "src": "12067:17:95" + } + ], + "id": 33125, + "name": "ParameterList", + "src": "12066:19:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33189, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33128, + "name": "ElementaryTypeName", + "src": "12117:4:95" + } + ], + "id": 33129, + "name": "VariableDeclaration", + "src": "12117:4:95" + } + ], + "id": 33130, + "name": "ParameterList", + "src": "12116:6:95" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 9484, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 33126, + "name": "Identifier", + "src": "12095:12:95" + } + ], + "id": 33127, + "name": "ModifierInvocation", + "src": "12095:12:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33132 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "payment", + "scope": 33188, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct Escrow.EscrowedPayment", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "EscrowedPayment", + "referencedDeclaration": 32707, + "type": "struct Escrow.EscrowedPayment" + }, + "id": 33131, + "name": "UserDefinedTypeName", + "src": "12129:15:95" + } + ], + "id": 33132, + "name": "VariableDeclaration", + "src": "12129:30:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33133, + "name": "Identifier", + "src": "12162:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33124, + "type": "address", + "value": "paymentId" + }, + "id": 33134, + "name": "Identifier", + "src": "12179:9:95" + } + ], + "id": 33135, + "name": "IndexAccess", + "src": "12162:27:95" + } + ], + "id": 33136, + "name": "VariableDeclarationStatement", + "src": "12129:60:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52", + "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33137, + "name": "Identifier", + "src": "12195:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": 32692, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33138, + "name": "Identifier", + "src": "12203:7:95" + } + ], + "id": 33139, + "name": "MemberAccess", + "src": "12203:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33140, + "name": "Identifier", + "src": "12221:3:95" + } + ], + "id": 33141, + "name": "MemberAccess", + "src": "12221:10:95" + } + ], + "id": 33142, + "name": "BinaryOperation", + "src": "12203:28:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Only sender of payment can attempt to revoke payment.\"", + "value": "Only sender of payment can attempt to revoke payment." + }, + "id": 33143, + "name": "Literal", + "src": "12233:55:95" + } + ], + "id": 33144, + "name": "FunctionCall", + "src": "12195:94:95" + } + ], + "id": 33145, + "name": "ExpressionStatement", + "src": "12195:94:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf", + "typeString": "literal_string \"Transaction not redeemable for sender yet.\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33146, + "name": "Identifier", + "src": "12295:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42908, + "type": "uint256", + "value": "now" + }, + "id": 33147, + "name": "Identifier", + "src": "12310:3:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": 32702, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33148, + "name": "Identifier", + "src": "12318:7:95" + } + ], + "id": 33149, + "name": "MemberAccess", + "src": "12318:17:95" + } + ], + "id": 33150, + "name": "MemberAccess", + "src": "12318:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "expirySeconds", + "referencedDeclaration": 32704, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33151, + "name": "Identifier", + "src": "12340:7:95" + } + ], + "id": 33152, + "name": "MemberAccess", + "src": "12340:21:95" + } + ], + "id": 33153, + "name": "FunctionCall", + "src": "12318:44:95" + } + ], + "id": 33154, + "name": "TupleExpression", + "src": "12317:46:95" + } + ], + "id": 33155, + "name": "BinaryOperation", + "src": "12310:53:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Transaction not redeemable for sender yet.\"", + "value": "Transaction not redeemable for sender yet." + }, + "id": 33156, + "name": "Literal", + "src": "12371:44:95" + } + ], + "id": 33157, + "name": "FunctionCall", + "src": "12295:126:95" + } + ], + "id": 33158, + "name": "ExpressionStatement", + "src": "12295:126:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33716, + "type": "function (address)", + "value": "deletePayment" + }, + "id": 33159, + "name": "Identifier", + "src": "12428:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33124, + "type": "address", + "value": "paymentId" + }, + "id": 33160, + "name": "Identifier", + "src": "12442:9:95" + } + ], + "id": 33161, + "name": "FunctionCall", + "src": "12428:24:95" + } + ], + "id": 33162, + "name": "ExpressionStatement", + "src": "12428:24:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 988, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 886, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 33163, + "name": "Identifier", + "src": "12459:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33164, + "name": "Identifier", + "src": "12465:7:95" + } + ], + "id": 33165, + "name": "MemberAccess", + "src": "12465:13:95" + } + ], + "id": 33166, + "name": "FunctionCall", + "src": "12459:20:95" + } + ], + "id": 33167, + "name": "MemberAccess", + "src": "12459:33:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33168, + "name": "Identifier", + "src": "12493:3:95" + } + ], + "id": 33169, + "name": "MemberAccess", + "src": "12493:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33170, + "name": "Identifier", + "src": "12505:7:95" + } + ], + "id": 33171, + "name": "MemberAccess", + "src": "12505:13:95" + } + ], + "id": 33172, + "name": "FunctionCall", + "src": "12459:60:95" + } + ], + "id": 33173, + "name": "ExpressionStatement", + "src": "12459:60:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32688, + "type": "function (bytes32,address,address,uint256,address)", + "value": "Revocation" + }, + "id": 33174, + "name": "Identifier", + "src": "12531:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33175, + "name": "Identifier", + "src": "12549:7:95" + } + ], + "id": 33176, + "name": "MemberAccess", + "src": "12549:27:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": 32692, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33177, + "name": "Identifier", + "src": "12584:7:95" + } + ], + "id": 33178, + "name": "MemberAccess", + "src": "12584:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33179, + "name": "Identifier", + "src": "12606:7:95" + } + ], + "id": 33180, + "name": "MemberAccess", + "src": "12606:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33132, + "type": "struct Escrow.EscrowedPayment memory", + "value": "payment" + }, + "id": 33181, + "name": "Identifier", + "src": "12627:7:95" + } + ], + "id": 33182, + "name": "MemberAccess", + "src": "12627:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33124, + "type": "address", + "value": "paymentId" + }, + "id": 33183, + "name": "Identifier", + "src": "12648:9:95" + } + ], + "id": 33184, + "name": "FunctionCall", + "src": "12531:132:95" + } + ], + "id": 33185, + "name": "EmitStatement", + "src": "12526:137:95" + }, + { + "attributes": { + "functionReturnParameters": 33130 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 33186, + "name": "Literal", + "src": "12677:4:95" + } + ], + "id": 33187, + "name": "Return", + "src": "12670:11:95" + } + ], + "id": 33188, + "name": "Block", + "src": "12123:564:95" + } + ], + "id": 33189, + "name": "FunctionDefinition", + "src": "12051:636:95" + }, + { + "attributes": { + "documentation": "@notice Gets array of all Escrowed Payments received by identifier.\n@param identifier The hash of an identifier of the receiver of the escrowed payment.\n@return An array containing all the IDs of the Escrowed Payments that were received\nby the specified receiver.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getReceivedPaymentIds", + "scope": 33717, + "stateMutability": "view", + "superFunction": 35991, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33202, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33190, + "name": "ElementaryTypeName", + "src": "13013:7:95" + } + ], + "id": 33191, + "name": "VariableDeclaration", + "src": "13013:18:95" + } + ], + "id": 33192, + "name": "ParameterList", + "src": "13012:20:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33202, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33193, + "name": "ElementaryTypeName", + "src": "13056:7:95" + } + ], + "id": 33194, + "name": "ArrayTypeName", + "src": "13056:9:95" + } + ], + "id": 33195, + "name": "VariableDeclaration", + "src": "13056:16:95" + } + ], + "id": 33196, + "name": "ParameterList", + "src": "13055:18:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33196 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32716, + "type": "mapping(bytes32 => address[] storage ref)", + "value": "receivedPaymentIds" + }, + "id": 33197, + "name": "Identifier", + "src": "13087:18:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33191, + "type": "bytes32", + "value": "identifier" + }, + "id": 33198, + "name": "Identifier", + "src": "13106:10:95" + } + ], + "id": 33199, + "name": "IndexAccess", + "src": "13087:30:95" + } + ], + "id": 33200, + "name": "Return", + "src": "13080:37:95" + } + ], + "id": 33201, + "name": "Block", + "src": "13074:48:95" + } + ], + "id": 33202, + "name": "FunctionDefinition", + "src": "12982:140:95" + }, + { + "attributes": { + "documentation": "@notice Gets array of all Escrowed Payment IDs sent by sender.\n@param sender The address of the sender of the escrowed payments.\n@return An array containing all the IDs of the Escrowed Payments that were sent by the\nspecified sender.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getSentPaymentIds", + "scope": 33717, + "stateMutability": "view", + "superFunction": 35999, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "sender", + "scope": 33215, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33203, + "name": "ElementaryTypeName", + "src": "13414:7:95" + } + ], + "id": 33204, + "name": "VariableDeclaration", + "src": "13414:14:95" + } + ], + "id": 33205, + "name": "ParameterList", + "src": "13413:16:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33215, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33206, + "name": "ElementaryTypeName", + "src": "13453:7:95" + } + ], + "id": 33207, + "name": "ArrayTypeName", + "src": "13453:9:95" + } + ], + "id": 33208, + "name": "VariableDeclaration", + "src": "13453:16:95" + } + ], + "id": 33209, + "name": "ParameterList", + "src": "13452:18:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33209 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32721, + "type": "mapping(address => address[] storage ref)", + "value": "sentPaymentIds" + }, + "id": 33210, + "name": "Identifier", + "src": "13484:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33204, + "type": "address", + "value": "sender" + }, + "id": 33211, + "name": "Identifier", + "src": "13499:6:95" + } + ], + "id": 33212, + "name": "IndexAccess", + "src": "13484:22:95" + } + ], + "id": 33213, + "name": "Return", + "src": "13477:29:95" + } + ], + "id": 33214, + "name": "Block", + "src": "13471:40:95" + } + ], + "id": 33215, + "name": "FunctionDefinition", + "src": "13387:124:95" + }, + { + "attributes": { + "documentation": "@notice Gets array of all trusted issuers set per paymentId.\n@param paymentId The ID of the payment to get.\n@return An array of addresses of trusted issuers set for an escrowed payment.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getTrustedIssuersPerPayment", + "scope": 33717, + "stateMutability": "view", + "superFunction": 36007, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 33228, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33216, + "name": "ElementaryTypeName", + "src": "13761:7:95" + } + ], + "id": 33217, + "name": "VariableDeclaration", + "src": "13761:17:95" + } + ], + "id": 33218, + "name": "ParameterList", + "src": "13760:19:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33228, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33219, + "name": "ElementaryTypeName", + "src": "13803:7:95" + } + ], + "id": 33220, + "name": "ArrayTypeName", + "src": "13803:9:95" + } + ], + "id": 33221, + "name": "VariableDeclaration", + "src": "13803:16:95" + } + ], + "id": 33222, + "name": "ParameterList", + "src": "13802:18:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33222 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32726, + "type": "mapping(address => address[] storage ref)", + "value": "trustedIssuersPerPayment" + }, + "id": 33223, + "name": "Identifier", + "src": "13834:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33217, + "type": "address", + "value": "paymentId" + }, + "id": 33224, + "name": "Identifier", + "src": "13859:9:95" + } + ], + "id": 33225, + "name": "IndexAccess", + "src": "13834:35:95" + } + ], + "id": 33226, + "name": "Return", + "src": "13827:42:95" + } + ], + "id": 33227, + "name": "Block", + "src": "13821:53:95" + } + ], + "id": 33228, + "name": "FunctionDefinition", + "src": "13724:150:95" + }, + { + "attributes": { + "documentation": "@notice Gets trusted issuers set as default for payments by `transfer` function.\n@return An array of addresses of trusted issuers.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getDefaultTrustedIssuers", + "scope": 33717, + "stateMutability": "view", + "superFunction": 36013, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33229, + "name": "ParameterList", + "src": "14061:2:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33237, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33230, + "name": "ElementaryTypeName", + "src": "14085:7:95" + } + ], + "id": 33231, + "name": "ArrayTypeName", + "src": "14085:9:95" + } + ], + "id": 33232, + "name": "VariableDeclaration", + "src": "14085:16:95" + } + ], + "id": 33233, + "name": "ParameterList", + "src": "14084:18:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33233 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32729, + "type": "address[] storage ref", + "value": "defaultTrustedIssuers" + }, + "id": 33234, + "name": "Identifier", + "src": "14116:21:95" + } + ], + "id": 33235, + "name": "Return", + "src": "14109:28:95" + } + ], + "id": 33236, + "name": "Block", + "src": "14103:39:95" + } + ], + "id": 33237, + "name": "FunctionDefinition", + "src": "14028:114:95" + }, + { + "attributes": { + "documentation": "@notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@return Whether or not attestations in Attestations.sol\n exceeds minAttestations for (identifier, account).", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "hasCompletedV1Attestations", + "scope": 33717, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "attestationsAddress", + "scope": 33272, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33238, + "name": "ElementaryTypeName", + "src": "14711:7:95" + } + ], + "id": 33239, + "name": "VariableDeclaration", + "src": "14711:27:95" + }, + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33272, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33240, + "name": "ElementaryTypeName", + "src": "14744:7:95" + } + ], + "id": 33241, + "name": "VariableDeclaration", + "src": "14744:18:95" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33272, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33242, + "name": "ElementaryTypeName", + "src": "14768:7:95" + } + ], + "id": 33243, + "name": "VariableDeclaration", + "src": "14768:15:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 33272, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33244, + "name": "ElementaryTypeName", + "src": "14789:7:95" + } + ], + "id": 33245, + "name": "VariableDeclaration", + "src": "14789:23:95" + } + ], + "id": 33246, + "name": "ParameterList", + "src": "14705:111:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33272, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33247, + "name": "ElementaryTypeName", + "src": "14840:4:95" + } + ], + "id": 33248, + "name": "VariableDeclaration", + "src": "14840:4:95" + } + ], + "id": 33249, + "name": "ParameterList", + "src": "14839:6:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33251 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestations", + "scope": 33271, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IAttestations", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IAttestations", + "referencedDeclaration": 35924, + "type": "contract IAttestations" + }, + "id": 33250, + "name": "UserDefinedTypeName", + "src": "14852:13:95" + } + ], + "id": 33251, + "name": "VariableDeclaration", + "src": "14852:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IAttestations", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35924, + "type": "type(contract IAttestations)", + "value": "IAttestations" + }, + "id": 33252, + "name": "Identifier", + "src": "14881:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33239, + "type": "address", + "value": "attestationsAddress" + }, + "id": 33253, + "name": "Identifier", + "src": "14895:19:95" + } + ], + "id": 33254, + "name": "FunctionCall", + "src": "14881:34:95" + } + ], + "id": 33255, + "name": "VariableDeclarationStatement", + "src": "14852:63:95" + }, + { + "attributes": { + "assignments": [ + 33257, + null + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "completedAttestations", + "scope": 33271, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33256, + "name": "ElementaryTypeName", + "src": "14922:6:95" + } + ], + "id": 33257, + "name": "VariableDeclaration", + "src": "14922:28:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple(uint32,uint32)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAttestationStats", + "referencedDeclaration": 35806, + "type": "function (bytes32,address) view external returns (uint32,uint32)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33251, + "type": "contract IAttestations", + "value": "attestations" + }, + "id": 33258, + "name": "Identifier", + "src": "14956:12:95" + } + ], + "id": 33259, + "name": "MemberAccess", + "src": "14956:32:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33241, + "type": "bytes32", + "value": "identifier" + }, + "id": 33260, + "name": "Identifier", + "src": "14989:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33243, + "type": "address", + "value": "account" + }, + "id": 33261, + "name": "Identifier", + "src": "15001:7:95" + } + ], + "id": 33262, + "name": "FunctionCall", + "src": "14956:53:95" + } + ], + "id": 33263, + "name": "VariableDeclarationStatement", + "src": "14921:88:95" + }, + { + "attributes": { + "functionReturnParameters": 33249 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint256)", + "value": "uint256" + }, + "id": 33264, + "name": "ElementaryTypeNameExpression", + "src": "15023:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33257, + "type": "uint64", + "value": "completedAttestations" + }, + "id": 33265, + "name": "Identifier", + "src": "15031:21:95" + } + ], + "id": 33266, + "name": "FunctionCall", + "src": "15023:30:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33245, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33267, + "name": "Identifier", + "src": "15057:15:95" + } + ], + "id": 33268, + "name": "BinaryOperation", + "src": "15023:49:95" + } + ], + "id": 33269, + "name": "TupleExpression", + "src": "15022:51:95" + } + ], + "id": 33270, + "name": "Return", + "src": "15015:58:95" + } + ], + "id": 33271, + "name": "Block", + "src": "14846:232:95" + } + ], + "id": 33272, + "name": "FunctionDefinition", + "src": "14670:408:95" + }, + { + "attributes": { + "documentation": "@notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n contract and applies the escrow V1 check against minAttestations.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@param trustedIssuers The trustedIssuer addresses to search through.\n@return Whether or not a trustedIssuer is Attestations.sol & attestations\n exceed minAttestations for (identifier, account).", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "hasCompletedV1AttestationsAsTrustedIssuer", + "scope": 33717, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "attestationsAddress", + "scope": 33323, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33273, + "name": "ElementaryTypeName", + "src": "15831:7:95" + } + ], + "id": 33274, + "name": "VariableDeclaration", + "src": "15831:27:95" + }, + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33323, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33275, + "name": "ElementaryTypeName", + "src": "15864:7:95" + } + ], + "id": 33276, + "name": "VariableDeclaration", + "src": "15864:18:95" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33323, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33277, + "name": "ElementaryTypeName", + "src": "15888:7:95" + } + ], + "id": 33278, + "name": "VariableDeclaration", + "src": "15888:15:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 33323, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33279, + "name": "ElementaryTypeName", + "src": "15909:7:95" + } + ], + "id": 33280, + "name": "VariableDeclaration", + "src": "15909:23:95" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 33323, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33281, + "name": "ElementaryTypeName", + "src": "15938:7:95" + } + ], + "id": 33282, + "name": "ArrayTypeName", + "src": "15938:9:95" + } + ], + "id": 33283, + "name": "VariableDeclaration", + "src": "15938:31:95" + } + ], + "id": 33284, + "name": "ParameterList", + "src": "15825:148:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33323, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33285, + "name": "ElementaryTypeName", + "src": "15997:4:95" + } + ], + "id": 33286, + "name": "VariableDeclaration", + "src": "15997:4:95" + } + ], + "id": 33287, + "name": "ParameterList", + "src": "15996:6:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "assignments": [ + 33289 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 33319, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33288, + "name": "ElementaryTypeName", + "src": "16014:7:95" + } + ], + "id": 33289, + "name": "VariableDeclaration", + "src": "16014:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33290, + "name": "Literal", + "src": "16026:1:95" + } + ], + "id": 33291, + "name": "VariableDeclarationStatement", + "src": "16014:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33289, + "type": "uint256", + "value": "i" + }, + "id": 33292, + "name": "Identifier", + "src": "16029:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33283, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33293, + "name": "Identifier", + "src": "16033:14:95" + } + ], + "id": 33294, + "name": "MemberAccess", + "src": "16033:21:95" + } + ], + "id": 33295, + "name": "BinaryOperation", + "src": "16029:25:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33289, + "type": "uint256", + "value": "i" + }, + "id": 33296, + "name": "Identifier", + "src": "16056:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33289, + "type": "uint256", + "value": "i" + }, + "id": 33297, + "name": "Identifier", + "src": "16060:1:95" + } + ], + "id": 33298, + "name": "MemberAccess", + "src": "16060:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33299, + "name": "Literal", + "src": "16066:1:95" + } + ], + "id": 33300, + "name": "FunctionCall", + "src": "16060:8:95" + } + ], + "id": 33301, + "name": "Assignment", + "src": "16056:12:95" + } + ], + "id": 33302, + "name": "ExpressionStatement", + "src": "16056:12:95" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33283, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33303, + "name": "Identifier", + "src": "16082:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33289, + "type": "uint256", + "value": "i" + }, + "id": 33304, + "name": "Identifier", + "src": "16097:1:95" + } + ], + "id": 33305, + "name": "IndexAccess", + "src": "16082:17:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33274, + "type": "address", + "value": "attestationsAddress" + }, + "id": 33306, + "name": "Identifier", + "src": "16103:19:95" + } + ], + "id": 33307, + "name": "BinaryOperation", + "src": "16082:40:95" + }, + { + "children": [ + { + "id": 33308, + "name": "Continue", + "src": "16134:8:95" + } + ], + "id": 33309, + "name": "Block", + "src": "16124:27:95" + } + ], + "id": 33310, + "name": "IfStatement", + "src": "16078:73:95" + }, + { + "attributes": { + "functionReturnParameters": 33287 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33272, + "type": "function (address,bytes32,address,uint256) view returns (bool)", + "value": "hasCompletedV1Attestations" + }, + "id": 33311, + "name": "Identifier", + "src": "16262:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33274, + "type": "address", + "value": "attestationsAddress" + }, + "id": 33312, + "name": "Identifier", + "src": "16289:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33276, + "type": "bytes32", + "value": "identifier" + }, + "id": 33313, + "name": "Identifier", + "src": "16310:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33278, + "type": "address", + "value": "account" + }, + "id": 33314, + "name": "Identifier", + "src": "16322:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33280, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33315, + "name": "Identifier", + "src": "16331:15:95" + } + ], + "id": 33316, + "name": "FunctionCall", + "src": "16262:85:95" + } + ], + "id": 33317, + "name": "Return", + "src": "16255:92:95" + } + ], + "id": 33318, + "name": "Block", + "src": "16070:284:95" + } + ], + "id": 33319, + "name": "ForStatement", + "src": "16009:345:95" + }, + { + "attributes": { + "functionReturnParameters": 33287 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 33320, + "name": "Literal", + "src": "16366:5:95" + } + ], + "id": 33321, + "name": "Return", + "src": "16359:12:95" + } + ], + "id": 33322, + "name": "Block", + "src": "16003:373:95" + } + ], + "id": 33323, + "name": "FunctionDefinition", + "src": "15775:601:95" + }, + { + "attributes": { + "documentation": "@notice Checks if there are attestations for account <-> identifier from\n any of trustedIssuers in FederatedAttestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param trustedIssuers Issuer addresses whose attestations to trust.\n@return Whether or not attestations exist in FederatedAttestations.sol\n for (identifier, account).", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "hasCompletedV2Attestations", + "scope": 33717, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33379, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33324, + "name": "ElementaryTypeName", + "src": "16908:7:95" + } + ], + "id": 33325, + "name": "VariableDeclaration", + "src": "16908:18:95" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33379, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33326, + "name": "ElementaryTypeName", + "src": "16932:7:95" + } + ], + "id": 33327, + "name": "VariableDeclaration", + "src": "16932:15:95" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 33379, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33328, + "name": "ElementaryTypeName", + "src": "16953:7:95" + } + ], + "id": 33329, + "name": "ArrayTypeName", + "src": "16953:9:95" + } + ], + "id": 33330, + "name": "VariableDeclaration", + "src": "16953:31:95" + } + ], + "id": 33331, + "name": "ParameterList", + "src": "16902:86:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33379, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33332, + "name": "ElementaryTypeName", + "src": "17012:4:95" + } + ], + "id": 33333, + "name": "VariableDeclaration", + "src": "17012:4:95" + } + ], + "id": 33334, + "name": "ParameterList", + "src": "17011:6:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33336 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "federatedAttestations", + "scope": 33378, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IFederatedAttestations", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFederatedAttestations", + "referencedDeclaration": 36153, + "type": "contract IFederatedAttestations" + }, + "id": 33335, + "name": "UserDefinedTypeName", + "src": "17078:22:95" + } + ], + "id": 33336, + "name": "VariableDeclaration", + "src": "17078:44:95" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IFederatedAttestations", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8648, + "type": "function () view returns (contract IFederatedAttestations)", + "value": "getFederatedAttestations" + }, + "id": 33337, + "name": "Identifier", + "src": "17125:24:95" + } + ], + "id": 33338, + "name": "FunctionCall", + "src": "17125:26:95" + } + ], + "id": 33339, + "name": "VariableDeclarationStatement", + "src": "17078:73:95" + }, + { + "attributes": { + "assignments": [ + null, + 33343, + null, + null, + null + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "accounts", + "scope": 33378, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33341, + "name": "ElementaryTypeName", + "src": "17160:7:95" + } + ], + "id": 33342, + "name": "ArrayTypeName", + "src": "17160:9:95" + } + ], + "id": 33343, + "name": "VariableDeclaration", + "src": "17160:25:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "lookupAttestations", + "referencedDeclaration": 36104, + "type": "function (bytes32,address[] memory) view external returns (uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33336, + "type": "contract IFederatedAttestations", + "value": "federatedAttestations" + }, + "id": 33344, + "name": "Identifier", + "src": "17195:21:95" + } + ], + "id": 33345, + "name": "MemberAccess", + "src": "17195:40:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33325, + "type": "bytes32", + "value": "identifier" + }, + "id": 33346, + "name": "Identifier", + "src": "17243:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33330, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33347, + "name": "Identifier", + "src": "17261:14:95" + } + ], + "id": 33348, + "name": "FunctionCall", + "src": "17195:86:95" + } + ], + "id": 33349, + "name": "VariableDeclarationStatement", + "src": "17157:124:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33351 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 33375, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33350, + "name": "ElementaryTypeName", + "src": "17368:7:95" + } + ], + "id": 33351, + "name": "VariableDeclaration", + "src": "17368:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33352, + "name": "Literal", + "src": "17380:1:95" + } + ], + "id": 33353, + "name": "VariableDeclarationStatement", + "src": "17368:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33351, + "type": "uint256", + "value": "i" + }, + "id": 33354, + "name": "Identifier", + "src": "17383:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33343, + "type": "address[] memory", + "value": "accounts" + }, + "id": 33355, + "name": "Identifier", + "src": "17387:8:95" + } + ], + "id": 33356, + "name": "MemberAccess", + "src": "17387:15:95" + } + ], + "id": 33357, + "name": "BinaryOperation", + "src": "17383:19:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33351, + "type": "uint256", + "value": "i" + }, + "id": 33358, + "name": "Identifier", + "src": "17404:1:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33351, + "type": "uint256", + "value": "i" + }, + "id": 33359, + "name": "Identifier", + "src": "17408:1:95" + } + ], + "id": 33360, + "name": "MemberAccess", + "src": "17408:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33361, + "name": "Literal", + "src": "17414:1:95" + } + ], + "id": 33362, + "name": "FunctionCall", + "src": "17408:8:95" + } + ], + "id": 33363, + "name": "Assignment", + "src": "17404:12:95" + } + ], + "id": 33364, + "name": "ExpressionStatement", + "src": "17404:12:95" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33343, + "type": "address[] memory", + "value": "accounts" + }, + "id": 33365, + "name": "Identifier", + "src": "17430:8:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33351, + "type": "uint256", + "value": "i" + }, + "id": 33366, + "name": "Identifier", + "src": "17439:1:95" + } + ], + "id": 33367, + "name": "IndexAccess", + "src": "17430:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33327, + "type": "address", + "value": "account" + }, + "id": 33368, + "name": "Identifier", + "src": "17445:7:95" + } + ], + "id": 33369, + "name": "BinaryOperation", + "src": "17430:22:95" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33334 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 33370, + "name": "Literal", + "src": "17471:4:95" + } + ], + "id": 33371, + "name": "Return", + "src": "17464:11:95" + } + ], + "id": 33372, + "name": "Block", + "src": "17454:30:95" + } + ], + "id": 33373, + "name": "IfStatement", + "src": "17426:58:95" + } + ], + "id": 33374, + "name": "Block", + "src": "17418:72:95" + } + ], + "id": 33375, + "name": "ForStatement", + "src": "17363:127:95" + }, + { + "attributes": { + "functionReturnParameters": 33334 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 33376, + "name": "Literal", + "src": "17502:5:95" + } + ], + "id": 33377, + "name": "Return", + "src": "17495:12:95" + } + ], + "id": 33378, + "name": "Block", + "src": "17018:494:95" + } + ], + "id": 33379, + "name": "FunctionDefinition", + "src": "16867:645:95" + }, + { + "attributes": { + "documentation": "@notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n enable backwards-compatible function signature for `transfer`,\n and since `transfer` cannot directly call `transferWithTrustedIssuers`\n due to reentrancy guard.\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "_transfer", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33380, + "name": "ElementaryTypeName", + "src": "18810:7:95" + } + ], + "id": 33381, + "name": "VariableDeclaration", + "src": "18810:18:95" + }, + { + "attributes": { + "constant": false, + "name": "token", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33382, + "name": "ElementaryTypeName", + "src": "18834:7:95" + } + ], + "id": 33383, + "name": "VariableDeclaration", + "src": "18834:13:95" + }, + { + "attributes": { + "constant": false, + "name": "value", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33384, + "name": "ElementaryTypeName", + "src": "18853:7:95" + } + ], + "id": 33385, + "name": "VariableDeclaration", + "src": "18853:13:95" + }, + { + "attributes": { + "constant": false, + "name": "expirySeconds", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33386, + "name": "ElementaryTypeName", + "src": "18872:7:95" + } + ], + "id": 33387, + "name": "VariableDeclaration", + "src": "18872:21:95" + }, + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33388, + "name": "ElementaryTypeName", + "src": "18899:7:95" + } + ], + "id": 33389, + "name": "VariableDeclaration", + "src": "18899:17:95" + }, + { + "attributes": { + "constant": false, + "name": "minAttestations", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33390, + "name": "ElementaryTypeName", + "src": "18922:7:95" + } + ], + "id": 33391, + "name": "VariableDeclaration", + "src": "18922:23:95" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 33602, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33392, + "name": "ElementaryTypeName", + "src": "18951:7:95" + } + ], + "id": 33393, + "name": "ArrayTypeName", + "src": "18951:9:95" + } + ], + "id": 33394, + "name": "VariableDeclaration", + "src": "18951:31:95" + } + ], + "id": 33395, + "name": "ParameterList", + "src": "18804:182:95" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33602, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33396, + "name": "ElementaryTypeName", + "src": "19004:4:95" + } + ], + "id": 33397, + "name": "VariableDeclaration", + "src": "19004:4:95" + } + ], + "id": 33398, + "name": "ParameterList", + "src": "19003:6:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3", + "typeString": "literal_string \"Invalid transfer inputs.\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33399, + "name": "Identifier", + "src": "19016:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33383, + "type": "address", + "value": "token" + }, + "id": 33400, + "name": "Identifier", + "src": "19024:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 33401, + "name": "ElementaryTypeNameExpression", + "src": "19033:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33402, + "name": "Literal", + "src": "19041:1:95" + } + ], + "id": 33403, + "name": "FunctionCall", + "src": "19033:10:95" + } + ], + "id": 33404, + "name": "BinaryOperation", + "src": "19024:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33385, + "type": "uint256", + "value": "value" + }, + "id": 33405, + "name": "Identifier", + "src": "19047:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33406, + "name": "Literal", + "src": "19055:1:95" + } + ], + "id": 33407, + "name": "BinaryOperation", + "src": "19047:9:95" + } + ], + "id": 33408, + "name": "BinaryOperation", + "src": "19024:32:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33387, + "type": "uint256", + "value": "expirySeconds" + }, + "id": 33409, + "name": "Identifier", + "src": "19060:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33410, + "name": "Literal", + "src": "19076:1:95" + } + ], + "id": 33411, + "name": "BinaryOperation", + "src": "19060:17:95" + } + ], + "id": 33412, + "name": "BinaryOperation", + "src": "19024:53:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e76616c6964207472616e7366657220696e707574732e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Invalid transfer inputs.\"", + "value": "Invalid transfer inputs." + }, + "id": 33413, + "name": "Literal", + "src": "19079:26:95" + } + ], + "id": 33414, + "name": "FunctionCall", + "src": "19016:90:95" + } + ], + "id": 33415, + "name": "ExpressionStatement", + "src": "19016:90:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67", + "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33416, + "name": "Identifier", + "src": "19112:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33381, + "type": "bytes32", + "value": "identifier" + }, + "id": 33417, + "name": "Identifier", + "src": "19129:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33418, + "name": "Literal", + "src": "19143:1:95" + } + ], + "id": 33419, + "name": "BinaryOperation", + "src": "19129:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33391, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33420, + "name": "Identifier", + "src": "19148:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33421, + "name": "Literal", + "src": "19166:1:95" + } + ], + "id": 33422, + "name": "BinaryOperation", + "src": "19148:19:95" + } + ], + "id": 33423, + "name": "BinaryOperation", + "src": "19129:38:95" + } + ], + "id": 33424, + "name": "TupleExpression", + "src": "19128:40:95" + } + ], + "id": 33425, + "name": "UnaryOperation", + "src": "19127:41:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e746966696572", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\"", + "value": "Invalid privacy inputs: Can't require attestations if no identifier" + }, + "id": 33426, + "name": "Literal", + "src": "19176:69:95" + } + ], + "id": 33427, + "name": "FunctionCall", + "src": "19112:139:95" + } + ], + "id": 33428, + "name": "ExpressionStatement", + "src": "19112:139:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030", + "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33429, + "name": "Identifier", + "src": "19500:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33391, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33430, + "name": "Identifier", + "src": "19517:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33431, + "name": "Literal", + "src": "19536:1:95" + } + ], + "id": 33432, + "name": "BinaryOperation", + "src": "19517:20:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33394, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33433, + "name": "Identifier", + "src": "19541:14:95" + } + ], + "id": 33434, + "name": "MemberAccess", + "src": "19541:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33435, + "name": "Literal", + "src": "19565:1:95" + } + ], + "id": 33436, + "name": "BinaryOperation", + "src": "19541:25:95" + } + ], + "id": 33437, + "name": "BinaryOperation", + "src": "19517:49:95" + } + ], + "id": 33438, + "name": "TupleExpression", + "src": "19516:51:95" + } + ], + "id": 33439, + "name": "UnaryOperation", + "src": "19515:52:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e7320617265207265717569726564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"trustedIssuers may only be set when attestations are required\"", + "value": "trustedIssuers may only be set when attestations are required" + }, + "id": 33440, + "name": "Literal", + "src": "19575:63:95" + } + ], + "id": 33441, + "name": "FunctionCall", + "src": "19500:144:95" + } + ], + "id": 33442, + "name": "ExpressionStatement", + "src": "19500:144:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920", + "typeString": "literal_string \"Too many trustedIssuers provided\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33443, + "name": "Identifier", + "src": "19783:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33394, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33444, + "name": "Identifier", + "src": "19798:14:95" + } + ], + "id": 33445, + "name": "MemberAccess", + "src": "19798:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32732, + "type": "uint256", + "value": "MAX_TRUSTED_ISSUERS_PER_PAYMENT" + }, + "id": 33446, + "name": "Identifier", + "src": "19823:31:95" + } + ], + "id": 33447, + "name": "BinaryOperation", + "src": "19798:56:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "546f6f206d616e792074727573746564497373756572732070726f7669646564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Too many trustedIssuers provided\"", + "value": "Too many trustedIssuers provided" + }, + "id": 33448, + "name": "Literal", + "src": "19862:34:95" + } + ], + "id": 33449, + "name": "FunctionCall", + "src": "19783:119:95" + } + ], + "id": 33450, + "name": "ExpressionStatement", + "src": "19783:119:95" + }, + { + "attributes": { + "assignments": [ + 33452 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestations", + "scope": 33601, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IAttestations", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IAttestations", + "referencedDeclaration": 35924, + "type": "contract IAttestations" + }, + "id": 33451, + "name": "UserDefinedTypeName", + "src": "19909:13:95" + } + ], + "id": 33452, + "name": "VariableDeclaration", + "src": "19909:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IAttestations", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8561, + "type": "function () view returns (contract IAttestations)", + "value": "getAttestations" + }, + "id": 33453, + "name": "Identifier", + "src": "19938:15:95" + } + ], + "id": 33454, + "name": "FunctionCall", + "src": "19938:17:95" + } + ], + "id": 33455, + "name": "VariableDeclarationStatement", + "src": "19909:46:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba", + "typeString": "literal_string \"minAttestations larger than limit\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33456, + "name": "Identifier", + "src": "19961:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33391, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33457, + "name": "Identifier", + "src": "19976:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getMaxAttestations", + "referencedDeclaration": 35869, + "type": "function () view external returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33452, + "type": "contract IAttestations", + "value": "attestations" + }, + "id": 33458, + "name": "Identifier", + "src": "19995:12:95" + } + ], + "id": 33459, + "name": "MemberAccess", + "src": "19995:31:95" + } + ], + "id": 33460, + "name": "FunctionCall", + "src": "19995:33:95" + } + ], + "id": 33461, + "name": "BinaryOperation", + "src": "19976:52:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "6d696e4174746573746174696f6e73206c6172676572207468616e206c696d6974", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"minAttestations larger than limit\"", + "value": "minAttestations larger than limit" + }, + "id": 33462, + "name": "Literal", + "src": "20036:35:95" + } + ], + "id": 33463, + "name": "FunctionCall", + "src": "19961:116:95" + } + ], + "id": 33464, + "name": "ExpressionStatement", + "src": "19961:116:95" + }, + { + "attributes": { + "assignments": [ + 33466 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "sentIndex", + "scope": 33601, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33465, + "name": "ElementaryTypeName", + "src": "20084:7:95" + } + ], + "id": 33466, + "name": "VariableDeclaration", + "src": "20084:17:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 219, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "push", + "referencedDeclaration": null, + "type": "function (address) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32721, + "type": "mapping(address => address[] storage ref)", + "value": "sentPaymentIds" + }, + "id": 33467, + "name": "Identifier", + "src": "20104:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33468, + "name": "Identifier", + "src": "20119:3:95" + } + ], + "id": 33469, + "name": "MemberAccess", + "src": "20119:10:95" + } + ], + "id": 33470, + "name": "IndexAccess", + "src": "20104:26:95" + } + ], + "id": 33471, + "name": "MemberAccess", + "src": "20104:31:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33472, + "name": "Identifier", + "src": "20136:9:95" + } + ], + "id": 33473, + "name": "FunctionCall", + "src": "20104:42:95" + } + ], + "id": 33474, + "name": "MemberAccess", + "src": "20104:46:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33475, + "name": "Literal", + "src": "20151:1:95" + } + ], + "id": 33476, + "name": "FunctionCall", + "src": "20104:49:95" + } + ], + "id": 33477, + "name": "VariableDeclarationStatement", + "src": "20084:69:95" + }, + { + "attributes": { + "assignments": [ + 33479 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "receivedIndex", + "scope": 33601, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33478, + "name": "ElementaryTypeName", + "src": "20159:7:95" + } + ], + "id": 33479, + "name": "VariableDeclaration", + "src": "20159:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 219, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "push", + "referencedDeclaration": null, + "type": "function (address) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32716, + "type": "mapping(bytes32 => address[] storage ref)", + "value": "receivedPaymentIds" + }, + "id": 33480, + "name": "Identifier", + "src": "20183:18:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33381, + "type": "bytes32", + "value": "identifier" + }, + "id": 33481, + "name": "Identifier", + "src": "20202:10:95" + } + ], + "id": 33482, + "name": "IndexAccess", + "src": "20183:30:95" + } + ], + "id": 33483, + "name": "MemberAccess", + "src": "20183:35:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33484, + "name": "Identifier", + "src": "20219:9:95" + } + ], + "id": 33485, + "name": "FunctionCall", + "src": "20183:46:95" + } + ], + "id": 33486, + "name": "MemberAccess", + "src": "20183:50:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33487, + "name": "Literal", + "src": "20234:1:95" + } + ], + "id": 33488, + "name": "FunctionCall", + "src": "20183:53:95" + } + ], + "id": 33489, + "name": "VariableDeclarationStatement", + "src": "20159:77:95" + }, + { + "attributes": { + "assignments": [ + 33491 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "newPayment", + "scope": 33601, + "stateVariable": false, + "storageLocation": "storage", + "type": "struct Escrow.EscrowedPayment", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "EscrowedPayment", + "referencedDeclaration": 32707, + "type": "struct Escrow.EscrowedPayment" + }, + "id": 33490, + "name": "UserDefinedTypeName", + "src": "20243:15:95" + } + ], + "id": 33491, + "name": "VariableDeclaration", + "src": "20243:34:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33492, + "name": "Identifier", + "src": "20280:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33493, + "name": "Identifier", + "src": "20297:9:95" + } + ], + "id": 33494, + "name": "IndexAccess", + "src": "20280:27:95" + } + ], + "id": 33495, + "name": "VariableDeclarationStatement", + "src": "20243:64:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9", + "typeString": "literal_string \"paymentId already used\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33496, + "name": "Identifier", + "src": "20313:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": 32702, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33497, + "name": "Identifier", + "src": "20321:10:95" + } + ], + "id": 33498, + "name": "MemberAccess", + "src": "20321:20:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33499, + "name": "Literal", + "src": "20345:1:95" + } + ], + "id": 33500, + "name": "BinaryOperation", + "src": "20321:25:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "7061796d656e74496420616c72656164792075736564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"paymentId already used\"", + "value": "paymentId already used" + }, + "id": 33501, + "name": "Literal", + "src": "20348:24:95" + } + ], + "id": 33502, + "name": "FunctionCall", + "src": "20313:60:95" + } + ], + "id": 33503, + "name": "ExpressionStatement", + "src": "20313:60:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33504, + "name": "Identifier", + "src": "20379:10:95" + } + ], + "id": 33506, + "name": "MemberAccess", + "src": "20379:30:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33381, + "type": "bytes32", + "value": "identifier" + }, + "id": 33507, + "name": "Identifier", + "src": "20412:10:95" + } + ], + "id": 33508, + "name": "Assignment", + "src": "20379:43:95" + } + ], + "id": 33509, + "name": "ExpressionStatement", + "src": "20379:43:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "sender", + "referencedDeclaration": 32692, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33510, + "name": "Identifier", + "src": "20428:10:95" + } + ], + "id": 33512, + "name": "MemberAccess", + "src": "20428:17:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33513, + "name": "Identifier", + "src": "20448:3:95" + } + ], + "id": 33514, + "name": "MemberAccess", + "src": "20448:10:95" + } + ], + "id": 33515, + "name": "Assignment", + "src": "20428:30:95" + } + ], + "id": 33516, + "name": "ExpressionStatement", + "src": "20428:30:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "token", + "referencedDeclaration": 32694, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33517, + "name": "Identifier", + "src": "20464:10:95" + } + ], + "id": 33519, + "name": "MemberAccess", + "src": "20464:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33383, + "type": "address", + "value": "token" + }, + "id": 33520, + "name": "Identifier", + "src": "20483:5:95" + } + ], + "id": 33521, + "name": "Assignment", + "src": "20464:24:95" + } + ], + "id": 33522, + "name": "ExpressionStatement", + "src": "20464:24:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "value", + "referencedDeclaration": 32696, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33523, + "name": "Identifier", + "src": "20494:10:95" + } + ], + "id": 33525, + "name": "MemberAccess", + "src": "20494:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33385, + "type": "uint256", + "value": "value" + }, + "id": 33526, + "name": "Identifier", + "src": "20513:5:95" + } + ], + "id": 33527, + "name": "Assignment", + "src": "20494:24:95" + } + ], + "id": 33528, + "name": "ExpressionStatement", + "src": "20494:24:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "sentIndex", + "referencedDeclaration": 32698, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33529, + "name": "Identifier", + "src": "20524:10:95" + } + ], + "id": 33531, + "name": "MemberAccess", + "src": "20524:20:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33466, + "type": "uint256", + "value": "sentIndex" + }, + "id": 33532, + "name": "Identifier", + "src": "20547:9:95" + } + ], + "id": 33533, + "name": "Assignment", + "src": "20524:32:95" + } + ], + "id": 33534, + "name": "ExpressionStatement", + "src": "20524:32:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "receivedIndex", + "referencedDeclaration": 32700, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33535, + "name": "Identifier", + "src": "20562:10:95" + } + ], + "id": 33537, + "name": "MemberAccess", + "src": "20562:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33479, + "type": "uint256", + "value": "receivedIndex" + }, + "id": 33538, + "name": "Identifier", + "src": "20589:13:95" + } + ], + "id": 33539, + "name": "Assignment", + "src": "20562:40:95" + } + ], + "id": 33540, + "name": "ExpressionStatement", + "src": "20562:40:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "timestamp", + "referencedDeclaration": 32702, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33541, + "name": "Identifier", + "src": "20608:10:95" + } + ], + "id": 33543, + "name": "MemberAccess", + "src": "20608:20:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42896, + "type": "block", + "value": "block" + }, + "id": 33544, + "name": "Identifier", + "src": "20631:5:95" + } + ], + "id": 33545, + "name": "MemberAccess", + "src": "20631:15:95" + } + ], + "id": 33546, + "name": "Assignment", + "src": "20608:38:95" + } + ], + "id": 33547, + "name": "ExpressionStatement", + "src": "20608:38:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "expirySeconds", + "referencedDeclaration": 32704, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33548, + "name": "Identifier", + "src": "20652:10:95" + } + ], + "id": 33550, + "name": "MemberAccess", + "src": "20652:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33387, + "type": "uint256", + "value": "expirySeconds" + }, + "id": 33551, + "name": "Identifier", + "src": "20679:13:95" + } + ], + "id": 33552, + "name": "Assignment", + "src": "20652:40:95" + } + ], + "id": 33553, + "name": "ExpressionStatement", + "src": "20652:40:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "minAttestations", + "referencedDeclaration": 32706, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33491, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "newPayment" + }, + "id": 33554, + "name": "Identifier", + "src": "20698:10:95" + } + ], + "id": 33556, + "name": "MemberAccess", + "src": "20698:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33391, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33557, + "name": "Identifier", + "src": "20727:15:95" + } + ], + "id": 33558, + "name": "Assignment", + "src": "20698:44:95" + } + ], + "id": 33559, + "name": "ExpressionStatement", + "src": "20698:44:95" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33394, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33560, + "name": "Identifier", + "src": "20792:14:95" + } + ], + "id": 33561, + "name": "MemberAccess", + "src": "20792:21:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33562, + "name": "Literal", + "src": "20816:1:95" + } + ], + "id": 33563, + "name": "BinaryOperation", + "src": "20792:25:95" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32726, + "type": "mapping(address => address[] storage ref)", + "value": "trustedIssuersPerPayment" + }, + "id": 33564, + "name": "Identifier", + "src": "20827:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33565, + "name": "Identifier", + "src": "20852:9:95" + } + ], + "id": 33566, + "name": "IndexAccess", + "src": "20827:35:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33394, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33567, + "name": "Identifier", + "src": "20865:14:95" + } + ], + "id": 33568, + "name": "Assignment", + "src": "20827:52:95" + } + ], + "id": 33569, + "name": "ExpressionStatement", + "src": "20827:52:95" + } + ], + "id": 33570, + "name": "Block", + "src": "20819:67:95" + } + ], + "id": 33571, + "name": "IfStatement", + "src": "20788:98:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransferFrom", + "referencedDeclaration": 1013, + "type": "function (contract IERC20,address,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract ERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 886, + "type": "type(contract ERC20)", + "value": "ERC20" + }, + "id": 33572, + "name": "Identifier", + "src": "20892:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33383, + "type": "address", + "value": "token" + }, + "id": 33573, + "name": "Identifier", + "src": "20898:5:95" + } + ], + "id": 33574, + "name": "FunctionCall", + "src": "20892:12:95" + } + ], + "id": 33575, + "name": "MemberAccess", + "src": "20892:29:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33576, + "name": "Identifier", + "src": "20922:3:95" + } + ], + "id": 33577, + "name": "MemberAccess", + "src": "20922:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Escrow_$33717", + "typeString": "contract Escrow" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 33578, + "name": "ElementaryTypeNameExpression", + "src": "20934:7:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 43126, + "type": "contract Escrow", + "value": "this" + }, + "id": 33579, + "name": "Identifier", + "src": "20942:4:95" + } + ], + "id": 33580, + "name": "FunctionCall", + "src": "20934:13:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33385, + "type": "uint256", + "value": "value" + }, + "id": 33581, + "name": "Identifier", + "src": "20949:5:95" + } + ], + "id": 33582, + "name": "FunctionCall", + "src": "20892:63:95" + } + ], + "id": 33583, + "name": "ExpressionStatement", + "src": "20892:63:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32653, + "type": "function (address,bytes32,address,uint256,address,uint256)", + "value": "Transfer" + }, + "id": 33584, + "name": "Identifier", + "src": "20966:8:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33585, + "name": "Identifier", + "src": "20975:3:95" + } + ], + "id": 33586, + "name": "MemberAccess", + "src": "20975:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33381, + "type": "bytes32", + "value": "identifier" + }, + "id": 33587, + "name": "Identifier", + "src": "20987:10:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33383, + "type": "address", + "value": "token" + }, + "id": 33588, + "name": "Identifier", + "src": "20999:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33385, + "type": "uint256", + "value": "value" + }, + "id": 33589, + "name": "Identifier", + "src": "21006:5:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33590, + "name": "Identifier", + "src": "21013:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33391, + "type": "uint256", + "value": "minAttestations" + }, + "id": 33591, + "name": "Identifier", + "src": "21024:15:95" + } + ], + "id": 33592, + "name": "FunctionCall", + "src": "20966:74:95" + } + ], + "id": 33593, + "name": "EmitStatement", + "src": "20961:79:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32660, + "type": "function (address,address[] memory)", + "value": "TrustedIssuersSet" + }, + "id": 33594, + "name": "Identifier", + "src": "21116:17:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33389, + "type": "address", + "value": "paymentId" + }, + "id": 33595, + "name": "Identifier", + "src": "21134:9:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33394, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 33596, + "name": "Identifier", + "src": "21145:14:95" + } + ], + "id": 33597, + "name": "FunctionCall", + "src": "21116:44:95" + } + ], + "id": 33598, + "name": "EmitStatement", + "src": "21111:49:95" + }, + { + "attributes": { + "functionReturnParameters": 33398 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 33599, + "name": "Literal", + "src": "21173:4:95" + } + ], + "id": 33600, + "name": "Return", + "src": "21166:11:95" + } + ], + "id": 33601, + "name": "Block", + "src": "19010:2172:95" + } + ], + "id": 33602, + "name": "FunctionDefinition", + "src": "18786:2396:95" + }, + { + "attributes": { + "documentation": "@notice Deletes the payment from its receiver's and sender's lists of payments,\nand zeroes out all the data in the struct.\n@param paymentId The ID of the payment to be deleted.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "deletePayment", + "scope": 33717, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "paymentId", + "scope": 33716, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33603, + "name": "ElementaryTypeName", + "src": "21409:7:95" + } + ], + "id": 33604, + "name": "VariableDeclaration", + "src": "21409:17:95" + } + ], + "id": 33605, + "name": "ParameterList", + "src": "21408:19:95" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33606, + "name": "ParameterList", + "src": "21436:0:95" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33608 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "payment", + "scope": 33715, + "stateVariable": false, + "storageLocation": "storage", + "type": "struct Escrow.EscrowedPayment", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "EscrowedPayment", + "referencedDeclaration": 32707, + "type": "struct Escrow.EscrowedPayment" + }, + "id": 33607, + "name": "UserDefinedTypeName", + "src": "21442:15:95" + } + ], + "id": 33608, + "name": "VariableDeclaration", + "src": "21442:31:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33609, + "name": "Identifier", + "src": "21476:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33604, + "type": "address", + "value": "paymentId" + }, + "id": 33610, + "name": "Identifier", + "src": "21493:9:95" + } + ], + "id": 33611, + "name": "IndexAccess", + "src": "21476:27:95" + } + ], + "id": 33612, + "name": "VariableDeclarationStatement", + "src": "21442:61:95" + }, + { + "attributes": { + "assignments": [ + 33616 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "received", + "scope": 33715, + "stateVariable": false, + "storageLocation": "storage", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33614, + "name": "ElementaryTypeName", + "src": "21509:7:95" + } + ], + "id": 33615, + "name": "ArrayTypeName", + "src": "21509:9:95" + } + ], + "id": 33616, + "name": "VariableDeclaration", + "src": "21509:26:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32716, + "type": "mapping(bytes32 => address[] storage ref)", + "value": "receivedPaymentIds" + }, + "id": 33617, + "name": "Identifier", + "src": "21538:18:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "recipientIdentifier", + "referencedDeclaration": 32690, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33618, + "name": "Identifier", + "src": "21557:7:95" + } + ], + "id": 33619, + "name": "MemberAccess", + "src": "21557:27:95" + } + ], + "id": 33620, + "name": "IndexAccess", + "src": "21538:47:95" + } + ], + "id": 33621, + "name": "VariableDeclarationStatement", + "src": "21509:76:95" + }, + { + "attributes": { + "assignments": [ + 33625 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "sent", + "scope": 33715, + "stateVariable": false, + "storageLocation": "storage", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33623, + "name": "ElementaryTypeName", + "src": "21591:7:95" + } + ], + "id": 33624, + "name": "ArrayTypeName", + "src": "21591:9:95" + } + ], + "id": 33625, + "name": "VariableDeclaration", + "src": "21591:22:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32721, + "type": "mapping(address => address[] storage ref)", + "value": "sentPaymentIds" + }, + "id": 33626, + "name": "Identifier", + "src": "21616:14:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": 32692, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33627, + "name": "Identifier", + "src": "21631:7:95" + } + ], + "id": 33628, + "name": "MemberAccess", + "src": "21631:14:95" + } + ], + "id": 33629, + "name": "IndexAccess", + "src": "21616:30:95" + } + ], + "id": 33630, + "name": "VariableDeclarationStatement", + "src": "21591:55:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "receivedIndex", + "referencedDeclaration": 32700, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33631, + "name": "Identifier", + "src": "21653:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33632, + "name": "Identifier", + "src": "21670:8:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33633, + "name": "Identifier", + "src": "21679:8:95" + } + ], + "id": 33634, + "name": "MemberAccess", + "src": "21679:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33635, + "name": "Literal", + "src": "21697:1:95" + } + ], + "id": 33636, + "name": "BinaryOperation", + "src": "21679:19:95" + } + ], + "id": 33637, + "name": "IndexAccess", + "src": "21670:29:95" + } + ], + "id": 33638, + "name": "IndexAccess", + "src": "21653:47:95" + } + ], + "id": 33639, + "name": "MemberAccess", + "src": "21653:61:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "receivedIndex", + "referencedDeclaration": 32700, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33640, + "name": "Identifier", + "src": "21717:7:95" + } + ], + "id": 33641, + "name": "MemberAccess", + "src": "21717:21:95" + } + ], + "id": 33642, + "name": "Assignment", + "src": "21653:85:95" + } + ], + "id": 33643, + "name": "ExpressionStatement", + "src": "21653:85:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33644, + "name": "Identifier", + "src": "21744:8:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "receivedIndex", + "referencedDeclaration": 32700, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33645, + "name": "Identifier", + "src": "21753:7:95" + } + ], + "id": 33646, + "name": "MemberAccess", + "src": "21753:21:95" + } + ], + "id": 33647, + "name": "IndexAccess", + "src": "21744:31:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33648, + "name": "Identifier", + "src": "21778:8:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33649, + "name": "Identifier", + "src": "21787:8:95" + } + ], + "id": 33650, + "name": "MemberAccess", + "src": "21787:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33651, + "name": "Literal", + "src": "21805:1:95" + } + ], + "id": 33652, + "name": "BinaryOperation", + "src": "21787:19:95" + } + ], + "id": 33653, + "name": "IndexAccess", + "src": "21778:29:95" + } + ], + "id": 33654, + "name": "Assignment", + "src": "21744:63:95" + } + ], + "id": 33655, + "name": "ExpressionStatement", + "src": "21744:63:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33656, + "name": "Identifier", + "src": "21813:8:95" + } + ], + "id": 33658, + "name": "MemberAccess", + "src": "21813:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 219, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33616, + "type": "address[] storage pointer", + "value": "received" + }, + "id": 33659, + "name": "Identifier", + "src": "21831:8:95" + } + ], + "id": 33660, + "name": "MemberAccess", + "src": "21831:15:95" + } + ], + "id": 33661, + "name": "MemberAccess", + "src": "21831:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33662, + "name": "Literal", + "src": "21851:1:95" + } + ], + "id": 33663, + "name": "FunctionCall", + "src": "21831:22:95" + } + ], + "id": 33664, + "name": "Assignment", + "src": "21813:40:95" + } + ], + "id": 33665, + "name": "ExpressionStatement", + "src": "21813:40:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "sentIndex", + "referencedDeclaration": 32698, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33666, + "name": "Identifier", + "src": "21860:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33667, + "name": "Identifier", + "src": "21877:4:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33668, + "name": "Identifier", + "src": "21882:4:95" + } + ], + "id": 33669, + "name": "MemberAccess", + "src": "21882:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33670, + "name": "Literal", + "src": "21896:1:95" + } + ], + "id": 33671, + "name": "BinaryOperation", + "src": "21882:15:95" + } + ], + "id": 33672, + "name": "IndexAccess", + "src": "21877:21:95" + } + ], + "id": 33673, + "name": "IndexAccess", + "src": "21860:39:95" + } + ], + "id": 33674, + "name": "MemberAccess", + "src": "21860:49:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "sentIndex", + "referencedDeclaration": 32698, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33675, + "name": "Identifier", + "src": "21912:7:95" + } + ], + "id": 33676, + "name": "MemberAccess", + "src": "21912:17:95" + } + ], + "id": 33677, + "name": "Assignment", + "src": "21860:69:95" + } + ], + "id": 33678, + "name": "ExpressionStatement", + "src": "21860:69:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33679, + "name": "Identifier", + "src": "21935:4:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "sentIndex", + "referencedDeclaration": 32698, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33608, + "type": "struct Escrow.EscrowedPayment storage pointer", + "value": "payment" + }, + "id": 33680, + "name": "Identifier", + "src": "21940:7:95" + } + ], + "id": 33681, + "name": "MemberAccess", + "src": "21940:17:95" + } + ], + "id": 33682, + "name": "IndexAccess", + "src": "21935:23:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33683, + "name": "Identifier", + "src": "21961:4:95" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33684, + "name": "Identifier", + "src": "21966:4:95" + } + ], + "id": 33685, + "name": "MemberAccess", + "src": "21966:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33686, + "name": "Literal", + "src": "21980:1:95" + } + ], + "id": 33687, + "name": "BinaryOperation", + "src": "21966:15:95" + } + ], + "id": 33688, + "name": "IndexAccess", + "src": "21961:21:95" + } + ], + "id": 33689, + "name": "Assignment", + "src": "21935:47:95" + } + ], + "id": 33690, + "name": "ExpressionStatement", + "src": "21935:47:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33691, + "name": "Identifier", + "src": "21988:4:95" + } + ], + "id": 33693, + "name": "MemberAccess", + "src": "21988:11:95" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 219, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33625, + "type": "address[] storage pointer", + "value": "sent" + }, + "id": 33694, + "name": "Identifier", + "src": "22002:4:95" + } + ], + "id": 33695, + "name": "MemberAccess", + "src": "22002:11:95" + } + ], + "id": 33696, + "name": "MemberAccess", + "src": "22002:15:95" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33697, + "name": "Literal", + "src": "22018:1:95" + } + ], + "id": 33698, + "name": "FunctionCall", + "src": "22002:18:95" + } + ], + "id": 33699, + "name": "Assignment", + "src": "21988:32:95" + } + ], + "id": 33700, + "name": "ExpressionStatement", + "src": "21988:32:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "delete", + "prefix": true, + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct Escrow.EscrowedPayment storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32711, + "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)", + "value": "escrowedPayments" + }, + "id": 33701, + "name": "Identifier", + "src": "22034:16:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33604, + "type": "address", + "value": "paymentId" + }, + "id": 33702, + "name": "Identifier", + "src": "22051:9:95" + } + ], + "id": 33703, + "name": "IndexAccess", + "src": "22034:27:95" + } + ], + "id": 33704, + "name": "UnaryOperation", + "src": "22027:34:95" + } + ], + "id": 33705, + "name": "ExpressionStatement", + "src": "22027:34:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "delete", + "prefix": true, + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32726, + "type": "mapping(address => address[] storage ref)", + "value": "trustedIssuersPerPayment" + }, + "id": 33706, + "name": "Identifier", + "src": "22074:24:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33604, + "type": "address", + "value": "paymentId" + }, + "id": 33707, + "name": "Identifier", + "src": "22099:9:95" + } + ], + "id": 33708, + "name": "IndexAccess", + "src": "22074:35:95" + } + ], + "id": 33709, + "name": "UnaryOperation", + "src": "22067:42:95" + } + ], + "id": 33710, + "name": "ExpressionStatement", + "src": "22067:42:95" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 32664, + "type": "function (address)", + "value": "TrustedIssuersUnset" + }, + "id": 33711, + "name": "Identifier", + "src": "22120:19:95" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33604, + "type": "address", + "value": "paymentId" + }, + "id": 33712, + "name": "Identifier", + "src": "22140:9:95" + } + ], + "id": 33713, + "name": "FunctionCall", + "src": "22120:30:95" + } + ], + "id": 33714, + "name": "EmitStatement", + "src": "22115:35:95" + } + ], + "id": 33715, + "name": "Block", + "src": "21436:719:95" + } + ], + "id": 33716, + "name": "FunctionDefinition", + "src": "21386:769:95" + } + ], + "id": 33717, + "name": "ContractDefinition", + "src": "650:21507:95" + } + ], + "id": 33718, + "name": "SourceUnit", + "src": "0:22158:95" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.7", + "updatedAt": "2022-09-23T16:17:10.926Z", + "devdoc": { + "methods": { + "addDefaultTrustedIssuer(address)": { + "details": "Throws if trustedIssuer is null or already in defaultTrustedIssuers.Throws if defaultTrustedIssuers is already at max allowed length.", + "params": { + "trustedIssuer": "Address of the trustedIssuer to add." + } + }, + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization" + } + }, + "getDefaultTrustedIssuers()": { + "return": "An array of addresses of trusted issuers." + }, + "getReceivedPaymentIds(bytes32)": { + "params": { + "identifier": "The hash of an identifier of the receiver of the escrowed payment." + }, + "return": "An array containing all the IDs of the Escrowed Payments that were received by the specified receiver." + }, + "getSentPaymentIds(address)": { + "params": { + "sender": "The address of the sender of the escrowed payments." + }, + "return": "An array containing all the IDs of the Escrowed Payments that were sent by the specified sender." + }, + "getTrustedIssuersPerPayment(address)": { + "params": { + "paymentId": "The ID of the payment to get." + }, + "return": "An array of addresses of trusted issuers set for an escrowed payment." + }, + "getVersionNumber()": { + "return": "The storage, major, minor, and patch version of the contract." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "removeDefaultTrustedIssuer(address,uint256)": { + "details": "Throws if trustedIssuer is not in defaultTrustedIssuers at index.", + "params": { + "index": "Index of trustedIssuer in defaultTrustedIssuers.", + "trustedIssuer": "Address of the trustedIssuer to remove." + } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "revoke(address)": { + "details": "Throws if 'token' or 'value' is 0.Throws if msg.sender is not the sender of payment.Throws if redeem time hasn't been reached yet.", + "params": { + "paymentId": "The ID for the EscrowedPayment struct that contains all relevant information." + } + }, + "transfer(bytes32,address,uint256,uint256,address,uint256)": { + "details": "Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.If minAttestations is 0, trustedIssuers will be set to empty list.msg.sender needs to have already approved this contract to transfer", + "params": { + "expirySeconds": "The number of seconds before the sender can revoke the payment.", + "identifier": "The hashed identifier of a user to transfer to.", + "minAttestations": "The min number of attestations required to withdraw the payment.", + "paymentId": "The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.", + "token": "The token to be transferred.", + "value": "The amount to be transferred." + }, + "return": "True if transfer succeeded." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])": { + "details": "Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.Throws if minAttestations == 0 but trustedIssuers are provided.msg.sender needs to have already approved this contract to transfer.", + "params": { + "expirySeconds": "The number of seconds before the sender can revoke the payment.", + "identifier": "The hashed identifier of a user to transfer to.", + "minAttestations": "The min number of attestations required to withdraw the payment.", + "paymentId": "The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.", + "token": "The token to be transferred.", + "trustedIssuers": "Array of issuers whose attestations in FederatedAttestations.sol will be accepted to prove ownership over an identifier.", + "value": "The amount to be transferred." + }, + "return": "True if transfer succeeded." + }, + "withdraw(address,uint8,bytes32,bytes32)": { + "details": "Throws if 'token' or 'value' is 0.Throws if msg.sender does not prove ownership of the withdraw key.", + "params": { + "paymentId": "The ID for the EscrowedPayment struct that contains all relevant information.", + "r": "Output value r of the ECDSA signature.", + "s": "Output value s of the ECDSA signature.", + "v": "The recovery id of the incoming ECDSA signature." + }, + "return": "True if withdraw succeeded." + } + } + }, + "userdoc": { + "methods": { + "addDefaultTrustedIssuer(address)": { + "notice": "Add an address to the defaultTrustedIssuers list." + }, + "constructor": "Sets initialized == true on implementation contracts", + "getDefaultTrustedIssuers()": { + "notice": "Gets trusted issuers set as default for payments by `transfer` function." + }, + "getReceivedPaymentIds(bytes32)": { + "notice": "Gets array of all Escrowed Payments received by identifier." + }, + "getSentPaymentIds(address)": { + "notice": "Gets array of all Escrowed Payment IDs sent by sender." + }, + "getTrustedIssuersPerPayment(address)": { + "notice": "Gets array of all trusted issuers set per paymentId." + }, + "getVersionNumber()": { + "notice": "Returns the storage, major, minor, and patch version of the contract." + }, + "initialize()": { + "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy." + }, + "removeDefaultTrustedIssuer(address,uint256)": { + "notice": "Remove an address from the defaultTrustedIssuers list." + }, + "revoke(address)": { + "notice": "Revokes tokens for a sender who is redeeming a payment after it has expired." + }, + "transfer(bytes32,address,uint256,uint256,address,uint256)": { + "notice": "Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and minAttestations). Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`. (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)" + }, + "transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])": { + "notice": "Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and attestations completed by trustedIssuers)." + }, + "withdraw(address,uint8,bytes32,bytes32)": { + "notice": "Withdraws tokens for a verified user." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/EscrowProxy.json b/celo-social-connect-dapp/packages/react-app/abis/EscrowProxy.json new file mode 100644 index 00000000..57bba391 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/EscrowProxy.json @@ -0,0 +1,332 @@ +{ + "contractName": "EscrowProxy", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerSet", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [], + "name": "_getImplementation", + "outputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_getOwner", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "_setAndInitializeImplementation", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "_setImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "_transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"_setAndInitializeImplementation\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"_setImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"_transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_setAndInitializeImplementation(address,bytes)\":{\"details\":\"Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.\",\"params\":{\"callbackData\":\"The abi-encoded function call to perform in the implementation contract.\",\"implementation\":\"Address of the new target contract.\"}},\"_setImplementation(address)\":{\"details\":\"If the target contract needs to be initialized, call setAndInitializeImplementation instead.\",\"params\":{\"implementation\":\"Address of the new target contract.\"}},\"_transferOwnership(address)\":{\"params\":{\"newOwner\":\"Address of the new owner account.\"}}}},\"userdoc\":{\"methods\":{\"_getImplementation()\":{\"notice\":\"Returns the implementation address.\"},\"_getOwner()\":{\"notice\":\"Returns the Proxy owner's address.\"},\"_setAndInitializeImplementation(address,bytes)\":{\"notice\":\"Sets the address of the implementation contract and calls into it.\"},\"_setImplementation(address)\":{\"notice\":\"Sets the address of the implementation contract.\"},\"_transferOwnership(address)\":{\"notice\":\"Transfers ownership of Proxy to a new owner.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/proxies/EscrowProxy.sol\":\"EscrowProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\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 */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Proxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n/* solhint-disable no-inline-assembly, no-complex-fallback, avoid-low-level-calls */\\n\\nimport \\\"openzeppelin-solidity/contracts/utils/Address.sol\\\";\\n\\n/**\\n * @title A Proxy utilizing the Unstructured Storage pattern.\\n */\\ncontract Proxy {\\n // Used to store the address of the owner.\\n bytes32 private constant OWNER_POSITION = bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1);\\n // Used to store the address of the implementation contract.\\n bytes32 private constant IMPLEMENTATION_POSITION = bytes32(\\n uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1\\n );\\n\\n event OwnerSet(address indexed owner);\\n event ImplementationSet(address indexed implementation);\\n\\n constructor() public {\\n _setOwner(msg.sender);\\n }\\n\\n /**\\n * @notice Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(msg.sender == _getOwner(), \\\"sender was not owner\\\");\\n _;\\n }\\n\\n /**\\n * @notice Delegates calls to the implementation contract.\\n */\\n function() external payable {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n address implementationAddress;\\n\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementationAddress := sload(implementationPosition)\\n }\\n\\n // Avoid checking if address is a contract or executing delegated call when\\n // implementation address is 0x0\\n require(implementationAddress != address(0), \\\"No Implementation set\\\");\\n require(Address.isContract(implementationAddress), \\\"Invalid contract address\\\");\\n\\n assembly {\\n // Extract the position of the transaction data (i.e. function ID and arguments).\\n let newCallDataPosition := mload(0x40)\\n mstore(0x40, add(newCallDataPosition, calldatasize))\\n calldatacopy(newCallDataPosition, 0, calldatasize)\\n\\n // Call the smart contract at `implementationAddress` in the context of the proxy contract,\\n // with the same msg.sender and value.\\n let delegatecallSuccess := delegatecall(\\n gas,\\n implementationAddress,\\n newCallDataPosition,\\n calldatasize,\\n 0,\\n 0\\n )\\n\\n // Copy the return value of the call so it can be returned.\\n let returnDataSize := returndatasize\\n let returnDataPosition := mload(0x40)\\n mstore(0x40, add(returnDataPosition, returnDataSize))\\n returndatacopy(returnDataPosition, 0, returnDataSize)\\n\\n // Revert or return depending on whether or not the call was successful.\\n switch delegatecallSuccess\\n case 0 {\\n revert(returnDataPosition, returnDataSize)\\n }\\n default {\\n return(returnDataPosition, returnDataSize)\\n }\\n }\\n }\\n\\n /**\\n * @notice Transfers ownership of Proxy to a new owner.\\n * @param newOwner Address of the new owner account.\\n */\\n function _transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract and calls into it.\\n * @param implementation Address of the new target contract.\\n * @param callbackData The abi-encoded function call to perform in the implementation\\n * contract.\\n * @dev Throws if the initialization callback fails.\\n * @dev If the target contract does not need initialization, use\\n * setImplementation instead.\\n */\\n function _setAndInitializeImplementation(address implementation, bytes calldata callbackData)\\n external\\n payable\\n onlyOwner\\n {\\n _setImplementation(implementation);\\n bool success;\\n bytes memory returnValue;\\n (success, returnValue) = implementation.delegatecall(callbackData);\\n require(success, \\\"initialization callback failed\\\");\\n }\\n\\n /**\\n * @notice Returns the implementation address.\\n */\\n function _getImplementation() external view returns (address implementation) {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementation := sload(implementationPosition)\\n }\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract.\\n * @param implementation Address of the new target contract.\\n * @dev If the target contract needs to be initialized, call\\n * setAndInitializeImplementation instead.\\n */\\n function _setImplementation(address implementation) public onlyOwner {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n require(Address.isContract(implementation), \\\"Invalid contract address\\\");\\n\\n // Store the address of the implementation contract in an explicit storage slot.\\n assembly {\\n sstore(implementationPosition, implementation)\\n }\\n\\n emit ImplementationSet(implementation);\\n }\\n\\n /**\\n * @notice Returns the Proxy owner's address.\\n */\\n function _getOwner() public view returns (address owner) {\\n bytes32 position = OWNER_POSITION;\\n // Load the address of the contract owner from an explicit storage slot.\\n assembly {\\n owner := sload(position)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n require(newOwner != address(0), \\\"owner cannot be 0\\\");\\n bytes32 position = OWNER_POSITION;\\n // Store the address of the contract owner in an explicit storage slot.\\n assembly {\\n sstore(position, newOwner)\\n }\\n emit OwnerSet(newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x650f2a079da45a71970749c9039dece5986835225035b29eca4df1c1dab0d6ac\"},\"project:/contracts/identity/proxies/EscrowProxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"../../common/Proxy.sol\\\";\\n\\n/* solhint-disable no-empty-blocks */\\ncontract EscrowProxy is Proxy {}\\n\",\"keccak256\":\"0x9504e7ba45793b6b55e56dfe09622b95e484dbc62823ab732636110dd2d349f6\"}},\"version\":1}", + "bytecode": "0x60806040526100133361001860201b60201c565b610148565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a25050565b610a22806101576000396000f3fe60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158204c6ef2ad1cfbf018a7aca71ce3223281aa4be0e8225f532322c794883a90395d64736f6c634300050d0032", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158204c6ef2ad1cfbf018a7aca71ce3223281aa4be0e8225f532322c794883a90395d64736f6c634300050d0032", + "sourceMap": "98:32:107:-;;;724:21:22;734:10;724:9;;;:21;;:::i;:::-;98:32:107;;5050:307:22;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o;98:32:107:-;;;;;;;", + "deployedSourceMap": "98:32:107:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:30:22;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;1041:56;;1104:29;1274:22;1268:29;1243:54;;1467:1;1434:35;;:21;:35;;;;1426:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:41;1528:21;1509:18;:41::i;:::-;1501:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:4;1718:11;1774:12;1753:19;1749:38;1743:4;1736:52;1832:12;1829:1;1808:19;1795:50;2151:1;2140;2118:12;2089:19;2058:21;2045:3;2023:137;2256:14;2309:4;2303:11;2358:14;2338:18;2334:39;2328:4;2321:53;2419:14;2416:1;2396:18;2381:53;2528:19;2561:1;2556:71;;;;2683:14;2663:18;2656:42;2556:71;2602:14;2582:18;2575:42;3358:356;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3358:356:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3358:356:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3358:356:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3358:356:22;;;;;;;;;;;;:::i;:::-;;3779:305;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3779:305:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4333:419;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4333:419:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4333:419:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;2847:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2847:95:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2847:95:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;4816:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:230:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;686:610:8;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;3358:356:22:-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:34;3518:14;3499:18;:34::i;:::-;3539:12;3557:24;3612:14;:27;;3640:12;;3612:41;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;3612:41:22;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3587:66:22;;;;;;;;3667:7;3659:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:1;;3358:356;;;:::o;3779:305::-;3832:22;3862:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;3862:56;;4051:22;4045:29;4027:47;;4019:61;;:::o;4333:419::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;4408:56;;4479:34;4498:14;4479:18;:34::i;:::-;4471:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:14;4658:22;4651:46;4732:14;4714:33;;;;;;;;;;;;924:1;4333:419;:::o;2847:95::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:19;2928:8;2918:9;:19::i;:::-;2847:95;:::o;4816:230::-;4858:13;4879:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;4879:33;;5027:8;5021:15;5012:24;;5004:38;;:::o;5050:307::-;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"../../common/Proxy.sol\";\n\n/* solhint-disable no-empty-blocks */\ncontract EscrowProxy is Proxy {}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/proxies/EscrowProxy.sol", + "ast": { + "absolutePath": "project:/contracts/identity/proxies/EscrowProxy.sol", + "exportedSymbols": { + "EscrowProxy": [ + 36211 + ] + }, + "id": 36212, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 36207, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:107" + }, + { + "absolutePath": "project:/contracts/common/Proxy.sol", + "file": "../../common/Proxy.sol", + "id": 36208, + "nodeType": "ImportDirective", + "scope": 36212, + "sourceUnit": 6778, + "src": "26:32:107", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 36209, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6777, + "src": "122:5:107", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$6777", + "typeString": "contract Proxy" + } + }, + "id": 36210, + "nodeType": "InheritanceSpecifier", + "src": "122:5:107" + } + ], + "contractDependencies": [ + 6777 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 36211, + "linearizedBaseContracts": [ + 36211, + 6777 + ], + "name": "EscrowProxy", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 36212, + "src": "98:32:107" + } + ], + "src": "0:131:107" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/identity/proxies/EscrowProxy.sol", + "exportedSymbols": { + "EscrowProxy": [ + 36211 + ] + } + }, + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ] + }, + "id": 36207, + "name": "PragmaDirective", + "src": "0:24:107" + }, + { + "attributes": { + "SourceUnit": 6778, + "absolutePath": "project:/contracts/common/Proxy.sol", + "file": "../../common/Proxy.sol", + "scope": 36212, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 36208, + "name": "ImportDirective", + "src": "26:32:107" + }, + { + "attributes": { + "contractDependencies": [ + 6777 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 36211, + 6777 + ], + "name": "EscrowProxy", + "nodes": [ + null + ], + "scope": 36212 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Proxy", + "referencedDeclaration": 6777, + "type": "contract Proxy" + }, + "id": 36209, + "name": "UserDefinedTypeName", + "src": "122:5:107" + } + ], + "id": 36210, + "name": "InheritanceSpecifier", + "src": "122:5:107" + } + ], + "id": 36211, + "name": "ContractDefinition", + "src": "98:32:107" + } + ], + "id": 36212, + "name": "SourceUnit", + "src": "0:131:107" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.7", + "updatedAt": "2022-09-23T16:17:10.955Z", + "devdoc": { + "methods": { + "_setAndInitializeImplementation(address,bytes)": { + "details": "Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.", + "params": { + "callbackData": "The abi-encoded function call to perform in the implementation contract.", + "implementation": "Address of the new target contract." + } + }, + "_setImplementation(address)": { + "details": "If the target contract needs to be initialized, call setAndInitializeImplementation instead.", + "params": { + "implementation": "Address of the new target contract." + } + }, + "_transferOwnership(address)": { + "params": { + "newOwner": "Address of the new owner account." + } + } + } + }, + "userdoc": { + "methods": { + "_getImplementation()": { + "notice": "Returns the implementation address." + }, + "_getOwner()": { + "notice": "Returns the Proxy owner's address." + }, + "_setAndInitializeImplementation(address,bytes)": { + "notice": "Sets the address of the implementation contract and calls into it." + }, + "_setImplementation(address)": { + "notice": "Sets the address of the implementation contract." + }, + "_transferOwnership(address)": { + "notice": "Transfers ownership of Proxy to a new owner." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestations.json b/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestations.json new file mode 100644 index 00000000..f5e244c2 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestations.json @@ -0,0 +1,33477 @@ +{ + "contractName": "FederatedAttestations", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "publishedOn", + "type": "uint64" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "publishedOn", + "type": "uint64" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "eip712DomainSeparator", + "type": "bytes32" + } + ], + "name": "EIP712DomainSeparatorSet", + "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" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_ATTESTATIONS_PER_IDENTIFIER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_IDENTIFIERS_PER_ADDRESS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "addressToIdentifiers", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "eip712DomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "identifierToAttestations", + "outputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "publishedOn", + "type": "uint64" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "revokedAttestations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + } + ], + "name": "registerAttestationAsIssuer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "registerAttestation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeAttestation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "identifiers", + "type": "bytes32[]" + }, + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "batchRevokeAttestations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "trustedIssuers", + "type": "address[]" + } + ], + "name": "lookupAttestations", + "outputs": [ + { + "internalType": "uint256[]", + "name": "countsPerIssuer", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "signers", + "type": "address[]" + }, + { + "internalType": "uint64[]", + "name": "issuedOns", + "type": "uint64[]" + }, + { + "internalType": "uint64[]", + "name": "publishedOns", + "type": "uint64[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address[]", + "name": "trustedIssuers", + "type": "address[]" + } + ], + "name": "lookupIdentifiers", + "outputs": [ + { + "internalType": "uint256[]", + "name": "countsPerIssuer", + "type": "uint256[]" + }, + { + "internalType": "bytes32[]", + "name": "identifiers", + "type": "bytes32[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "validateAttestationSig", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint64", + "name": "issuedOn", + "type": "uint64" + } + ], + "name": "getUniqueAttestationHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"name\":\"AttestationRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"name\":\"AttestationRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"eip712DomainSeparator\",\"type\":\"bytes32\"}],\"name\":\"EIP712DomainSeparatorSet\",\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"EIP712_OWNERSHIP_ATTESTATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_ATTESTATIONS_PER_IDENTIFIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_IDENTIFIERS_PER_ADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"addressToIdentifiers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"identifiers\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchRevokeAttestations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eip712DomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"}],\"name\":\"getUniqueAttestationHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"identifierToAttestations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"lookupAttestations\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"countsPerIssuer\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"uint64[]\",\"name\":\"issuedOns\",\"type\":\"uint64[]\"},{\"internalType\":\"uint64[]\",\"name\":\"publishedOns\",\"type\":\"uint64[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"lookupIdentifiers\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"countsPerIssuer\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"identifiers\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"registerAttestation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"}],\"name\":\"registerAttestationAsIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAttestation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"revokedAttestations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"validateAttestationSig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"batchRevokeAttestations(address,bytes32[],address[])\":{\"details\":\"Throws if the number of identifiers and accounts is not the sameThrows if sender is not the issuer or currently registered signer of issuerThrows if an attestation is not found for identifiers[i] <-> accounts[i]\",\"params\":{\"accounts\":\"Addresses of the accounts mapped to the identifiers at the same indices\",\"identifiers\":\"Hash of the identifiers\",\"issuer\":\"Address of the issuer of all attestations to be revoked\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"lookupAttestations(bytes32,address[])\":{\"details\":\"Adds attestation info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)\",\"params\":{\"identifier\":\"Hash of the identifier\",\"trustedIssuers\":\"Array of n issuers whose attestations will be included\"},\"return\":\"countsPerIssuer Array of number of attestations returned per issuer For m (== sum([0])) found attestations: accounts Array of m accounts signers Array of m signersissuedOns Array of m issuedOnspublishedOns Array of m publishedOns\"},\"lookupIdentifiers(address,address[])\":{\"details\":\"Adds identifier info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)\",\"params\":{\"account\":\"Address of the account\",\"trustedIssuers\":\"Array of n issuers whose identifier mappings will be used\"},\"return\":\"countsPerIssuer Array of number of identifiers returned per issueridentifiers Array (length == sum([0])) of identifiers\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"details\":\"Throws if an attestation with the same (identifier, issuer, account) already exists\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \",\"issuer\":\"Address of the attestation issuer\",\"r\":\"Output value r of the ECDSA signature\",\"s\":\"Output value s of the ECDSA signature\",\"signer\":\"Address of the signer of the attestation\",\"v\":\"The recovery id of the incoming ECDSA signature\"}},\"registerAttestationAsIssuer(bytes32,address,uint64)\":{\"details\":\"Attestation signer and issuer in storage is set to msg.senderThrows if an attestation with the same (identifier, issuer, account) already exists\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAttestation(bytes32,address,address)\":{\"details\":\"Throws if sender is not the issuer, signer, or account\",\"params\":{\"account\":\"Address of the account mapped to the identifier\",\"identifier\":\"Hash of the identifier to be revoked\",\"issuer\":\"Address of the attestation issuer\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"details\":\"Throws if attestation has been revokedThrows if signer is not an authorized AttestationSigner of the issuer\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \",\"issuer\":\"Address of the attestation issuer\",\"r\":\"Output value r of the ECDSA signature\",\"s\":\"Output value s of the ECDSA signature\",\"signer\":\"Address of the signer of the attestation\",\"v\":\"The recovery id of the incoming ECDSA signature\"}}},\"title\":\"Contract mapping identifiers to accounts\"},\"userdoc\":{\"methods\":{\"batchRevokeAttestations(address,bytes32[],address[])\":{\"notice\":\"Revokes attestations [identifiers <-> accounts] from issuer\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"lookupAttestations(bytes32,address[])\":{\"notice\":\"Returns info about attestations for `identifier` produced by signers of `trustedIssuers`\"},\"lookupIdentifiers(address,address[])\":{\"notice\":\"Returns identifiers mapped to `account` by signers of `trustedIssuers`\"},\"registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"notice\":\"Registers an attestation with a valid signature\"},\"registerAttestationAsIssuer(bytes32,address,uint64)\":{\"notice\":\"Registers an attestation directly from the issuer\"},\"revokeAttestation(bytes32,address,address)\":{\"notice\":\"Revokes an attestation \"},\"validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"notice\":\"Validates the given attestation and signature\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/FederatedAttestations.sol\":\"FederatedAttestations\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.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 GSN 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 */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"content\":\"pragma solidity ^0.5.0;\\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 ECDSA {\\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 * NOTE: This call _does not revert_ if the signature is invalid, or\\n * if the signer is otherwise unable to be retrieved. In those scenarios,\\n * the zero address is returned.\\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 // Check the signature length\\n if (signature.length != 65) {\\n return (address(0));\\n }\\n\\n // Divide the signature in r, s and v variables\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n // solhint-disable-next-line no-inline-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\\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 (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): 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);\\n }\\n\\n if (v != 27 && v != 28) {\\n return address(0);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n return ecrecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * replicates the behavior of the\\n * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\\n * JSON-RPC method.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n}\\n\",\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\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 * 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 */\\ncontract Ownable is Context {\\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 constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = 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 onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\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 `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/utils/SafeCast.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and then downcasting.\\n *\\n * _Available since v2.5.0._\\n */\\nlibrary SafeCast {\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value < 2**128, \\\"SafeCast: value doesn\\\\'t fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value < 2**64, \\\"SafeCast: value doesn\\\\'t fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value < 2**32, \\\"SafeCast: value doesn\\\\'t fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value < 2**16, \\\"SafeCast: value doesn\\\\'t fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits.\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value < 2**8, \\\"SafeCast: value doesn\\\\'t fit in 8 bits\\\");\\n return uint8(value);\\n }\\n}\\n\",\"keccak256\":\"0xb7353a57c9e371c85983df8997caf9bb6fa60c3744b34b2bfcf4faa52d06eaec\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/Signatures.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\\\";\\n\\nlibrary Signatures {\\n /**\\n * @notice Given a signed address, returns the signer of the address.\\n * @param message The address that was signed.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfAddress(address message, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes32 hash = keccak256(abi.encodePacked(message));\\n return getSignerOfMessageHash(hash, v, r, s);\\n }\\n\\n /**\\n * @notice Given a message hash, returns the signer of the address.\\n * @param messageHash The hash of a message.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfMessageHash(bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = ECDSA.toEthSignedMessageHash(messageHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash, construct the typed data hash\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @return The EIP712 typed data hash\\n */\\n function toEthSignedTypedDataHash(bytes32 eip712DomainSeparator, bytes32 structHash)\\n public\\n pure\\n returns (bytes32)\\n {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", eip712DomainSeparator, structHash));\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash and a signature return the signer\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfTypedDataHash(\\n bytes32 eip712DomainSeparator,\\n bytes32 structHash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public pure returns (address) {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = toEthSignedTypedDataHash(eip712DomainSeparator, structHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n}\\n\",\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/FederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/utils/SafeCast.sol\\\";\\n\\nimport \\\"./interfaces/IFederatedAttestations.sol\\\";\\nimport \\\"../common/interfaces/IAccounts.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\n\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/UsingRegistryV2.sol\\\";\\nimport \\\"../common/Signatures.sol\\\";\\n\\n/**\\n * @title Contract mapping identifiers to accounts\\n */\\ncontract FederatedAttestations is\\n IFederatedAttestations,\\n ICeloVersionedContract,\\n Ownable,\\n Initializable,\\n UsingRegistryV2\\n{\\n using SafeMath for uint256;\\n using SafeCast for uint256;\\n\\n struct OwnershipAttestation {\\n address account;\\n address signer;\\n uint64 issuedOn;\\n uint64 publishedOn;\\n // using uint64 to allow for extra space to add parameters\\n }\\n\\n // Mappings from identifier <-> attestation are separated by issuer,\\n // *requiring* users to specify issuers when retrieving attestations.\\n // Maintaining bidirectional mappings (vs. in Attestations.sol) makes it possible\\n // to perform lookups by identifier or account without indexing event data.\\n\\n // identifier -> issuer -> attestations\\n mapping(bytes32 => mapping(address => OwnershipAttestation[])) public identifierToAttestations;\\n // account -> issuer -> identifiers\\n mapping(address => mapping(address => bytes32[])) public addressToIdentifiers;\\n\\n // unique attestation hash -> isRevoked\\n mapping(bytes32 => bool) public revokedAttestations;\\n\\n bytes32 public eip712DomainSeparator;\\n bytes32 public constant EIP712_OWNERSHIP_ATTESTATION_TYPEHASH = keccak256(\\n abi.encodePacked(\\n \\\"OwnershipAttestation(bytes32 identifier,address issuer,\\\",\\n \\\"address account,address signer,uint64 issuedOn)\\\"\\n )\\n );\\n\\n // Changing any of these constraints will require re-benchmarking\\n // and checking assumptions for batch revocation.\\n // These can only be modified by releasing a new version of this contract.\\n uint256 public constant MAX_ATTESTATIONS_PER_IDENTIFIER = 20;\\n uint256 public constant MAX_IDENTIFIERS_PER_ADDRESS = 20;\\n\\n event EIP712DomainSeparatorSet(bytes32 eip712DomainSeparator);\\n event AttestationRegistered(\\n bytes32 indexed identifier,\\n address indexed issuer,\\n address indexed account,\\n address signer,\\n uint64 issuedOn,\\n uint64 publishedOn\\n );\\n event AttestationRevoked(\\n bytes32 indexed identifier,\\n address indexed issuer,\\n address indexed account,\\n address signer,\\n uint64 issuedOn,\\n uint64 publishedOn\\n );\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts\\n * @param test Set to true to skip implementation initialization\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 1, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n setEip712DomainSeparator();\\n }\\n\\n /**\\n * @notice Registers an attestation directly from the issuer\\n * @param identifier Hash of the identifier to be attested\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @dev Attestation signer and issuer in storage is set to msg.sender\\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\\n */\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external\\n {\\n _registerAttestation(identifier, msg.sender, account, msg.sender, issuedOn);\\n }\\n\\n /**\\n * @notice Registers an attestation with a valid signature\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n * @param v The recovery id of the incoming ECDSA signature\\n * @param r Output value r of the ECDSA signature\\n * @param s Output value s of the ECDSA signature\\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\\n */\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external {\\n validateAttestationSig(identifier, issuer, account, signer, issuedOn, v, r, s);\\n _registerAttestation(identifier, issuer, account, signer, issuedOn);\\n }\\n\\n /**\\n * @notice Revokes an attestation \\n * @param identifier Hash of the identifier to be revoked\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account mapped to the identifier\\n * @dev Throws if sender is not the issuer, signer, or account\\n */\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external {\\n require(\\n account == msg.sender ||\\n // Minor gas optimization to prevent storage lookup in Accounts.sol if issuer == msg.sender\\n issuer == msg.sender ||\\n getAccounts().attestationSignerToAccount(msg.sender) == issuer,\\n \\\"Sender does not have permission to revoke this attestation\\\"\\n );\\n _revokeAttestation(identifier, issuer, account);\\n }\\n\\n /**\\n * @notice Revokes attestations [identifiers <-> accounts] from issuer\\n * @param issuer Address of the issuer of all attestations to be revoked\\n * @param identifiers Hash of the identifiers\\n * @param accounts Addresses of the accounts mapped to the identifiers\\n * at the same indices\\n * @dev Throws if the number of identifiers and accounts is not the same\\n * @dev Throws if sender is not the issuer or currently registered signer of issuer\\n * @dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]\\n */\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external {\\n require(identifiers.length == accounts.length, \\\"Unequal number of identifiers and accounts\\\");\\n require(\\n issuer == msg.sender || getAccounts().attestationSignerToAccount(msg.sender) == issuer,\\n \\\"Sender does not have permission to revoke attestations from this issuer\\\"\\n );\\n\\n for (uint256 i = 0; i < identifiers.length; i = i.add(1)) {\\n _revokeAttestation(identifiers[i], issuer, accounts[i]);\\n }\\n }\\n\\n /**\\n * @notice Returns info about attestations for `identifier` produced by \\n * signers of `trustedIssuers`\\n * @param identifier Hash of the identifier\\n * @param trustedIssuers Array of n issuers whose attestations will be included\\n * @return countsPerIssuer Array of number of attestations returned per issuer\\n * For m (== sum([0])) found attestations: \\n * @return accounts Array of m accounts \\n * @return signers Array of m signers\\n * @return issuedOns Array of m issuedOns\\n * @return publishedOns Array of m publishedOns\\n * @dev Adds attestation info to the arrays in order of provided trustedIssuers\\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\\n */\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory countsPerIssuer,\\n address[] memory accounts,\\n address[] memory signers,\\n uint64[] memory issuedOns,\\n uint64[] memory publishedOns\\n )\\n {\\n uint256 totalAttestations;\\n (totalAttestations, countsPerIssuer) = getNumAttestations(identifier, trustedIssuers);\\n\\n accounts = new address[](totalAttestations);\\n signers = new address[](totalAttestations);\\n issuedOns = new uint64[](totalAttestations);\\n publishedOns = new uint64[](totalAttestations);\\n\\n totalAttestations = 0;\\n OwnershipAttestation[] memory attestationsPerIssuer;\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n attestationsPerIssuer = identifierToAttestations[identifier][trustedIssuers[i]];\\n for (uint256 j = 0; j < attestationsPerIssuer.length; j = j.add(1)) {\\n accounts[totalAttestations] = attestationsPerIssuer[j].account;\\n signers[totalAttestations] = attestationsPerIssuer[j].signer;\\n issuedOns[totalAttestations] = attestationsPerIssuer[j].issuedOn;\\n publishedOns[totalAttestations] = attestationsPerIssuer[j].publishedOn;\\n totalAttestations = totalAttestations.add(1);\\n }\\n }\\n return (countsPerIssuer, accounts, signers, issuedOns, publishedOns);\\n }\\n\\n /**\\n * @notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\\n * @param account Address of the account\\n * @param trustedIssuers Array of n issuers whose identifier mappings will be used\\n * @return countsPerIssuer Array of number of identifiers returned per issuer\\n * @return identifiers Array (length == sum([0])) of identifiers\\n * @dev Adds identifier info to the arrays in order of provided trustedIssuers\\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\\n */\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory countsPerIssuer, bytes32[] memory identifiers)\\n {\\n uint256 totalIdentifiers;\\n (totalIdentifiers, countsPerIssuer) = getNumIdentifiers(account, trustedIssuers);\\n\\n identifiers = new bytes32[](totalIdentifiers);\\n bytes32[] memory identifiersPerIssuer;\\n\\n uint256 currIndex = 0;\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n identifiersPerIssuer = addressToIdentifiers[account][trustedIssuers[i]];\\n for (uint256 j = 0; j < identifiersPerIssuer.length; j = j.add(1)) {\\n identifiers[currIndex] = identifiersPerIssuer[j];\\n currIndex = currIndex.add(1);\\n }\\n }\\n return (countsPerIssuer, identifiers);\\n }\\n\\n /**\\n * @notice Validates the given attestation and signature\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n * @param v The recovery id of the incoming ECDSA signature\\n * @param r Output value r of the ECDSA signature\\n * @param s Output value s of the ECDSA signature\\n * @dev Throws if attestation has been revoked\\n * @dev Throws if signer is not an authorized AttestationSigner of the issuer\\n */\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public view {\\n // attestationSignerToAccount instead of isSigner allows the issuer to act as its own signer\\n require(\\n getAccounts().attestationSignerToAccount(signer) == issuer,\\n \\\"Signer is not a currently authorized AttestationSigner for the issuer\\\"\\n );\\n bytes32 structHash = getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn);\\n address guessedSigner = Signatures.getSignerOfTypedDataHash(\\n eip712DomainSeparator,\\n structHash,\\n v,\\n r,\\n s\\n );\\n require(guessedSigner == signer, \\\"Signature is invalid\\\");\\n }\\n\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) public pure returns (bytes32) {\\n return\\n keccak256(\\n abi.encode(\\n EIP712_OWNERSHIP_ATTESTATION_TYPEHASH,\\n identifier,\\n issuer,\\n account,\\n signer,\\n issuedOn\\n )\\n );\\n }\\n\\n /**\\n * @notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.\\n */\\n function setEip712DomainSeparator() internal {\\n uint256 chainId;\\n assembly {\\n chainId := chainid\\n }\\n\\n eip712DomainSeparator = keccak256(\\n abi.encode(\\n keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n ),\\n keccak256(bytes(\\\"FederatedAttestations\\\")),\\n keccak256(\\\"1.0\\\"),\\n chainId,\\n address(this)\\n )\\n );\\n emit EIP712DomainSeparatorSet(eip712DomainSeparator);\\n }\\n\\n /**\\n * @notice Helper function for lookupAttestations to calculate the\\n total number of attestations completed for an identifier\\n by each trusted issuer\\n * @param identifier Hash of the identifier\\n * @param trustedIssuers Array of n issuers whose attestations will be included\\n * @return totalAttestations Sum total of attestations found\\n * @return countsPerIssuer Array of number of attestations found per issuer\\n */\\n function getNumAttestations(bytes32 identifier, address[] memory trustedIssuers)\\n internal\\n view\\n returns (uint256 totalAttestations, uint256[] memory countsPerIssuer)\\n {\\n totalAttestations = 0;\\n uint256 numAttestationsForIssuer;\\n countsPerIssuer = new uint256[](trustedIssuers.length);\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n numAttestationsForIssuer = identifierToAttestations[identifier][trustedIssuers[i]].length;\\n totalAttestations = totalAttestations.add(numAttestationsForIssuer);\\n countsPerIssuer[i] = numAttestationsForIssuer;\\n }\\n return (totalAttestations, countsPerIssuer);\\n }\\n\\n /**\\n * @notice Helper function for lookupIdentifiers to calculate the\\n total number of identifiers completed for an identifier\\n by each trusted issuer\\n * @param account Address of the account\\n * @param trustedIssuers Array of n issuers whose identifiers will be included\\n * @return totalIdentifiers Sum total of identifiers found\\n * @return countsPerIssuer Array of number of identifiers found per issuer\\n */\\n function getNumIdentifiers(address account, address[] memory trustedIssuers)\\n internal\\n view\\n returns (uint256 totalIdentifiers, uint256[] memory countsPerIssuer)\\n {\\n totalIdentifiers = 0;\\n uint256 numIdentifiersForIssuer;\\n countsPerIssuer = new uint256[](trustedIssuers.length);\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n numIdentifiersForIssuer = addressToIdentifiers[account][trustedIssuers[i]].length;\\n totalIdentifiers = totalIdentifiers.add(numIdentifiersForIssuer);\\n countsPerIssuer[i] = numIdentifiersForIssuer;\\n }\\n return (totalIdentifiers, countsPerIssuer);\\n }\\n\\n /**\\n * @notice Registers an attestation\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n */\\n function _registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) private {\\n require(\\n !revokedAttestations[getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn)],\\n \\\"Attestation has been revoked\\\"\\n );\\n uint256 numExistingAttestations = identifierToAttestations[identifier][issuer].length;\\n require(\\n numExistingAttestations.add(1) <= MAX_ATTESTATIONS_PER_IDENTIFIER,\\n \\\"Max attestations already registered for identifier\\\"\\n );\\n require(\\n addressToIdentifiers[account][issuer].length.add(1) <= MAX_IDENTIFIERS_PER_ADDRESS,\\n \\\"Max identifiers already registered for account\\\"\\n );\\n\\n for (uint256 i = 0; i < numExistingAttestations; i = i.add(1)) {\\n // This enforces only one attestation to be uploaded\\n // for a given set of (identifier, issuer, account)\\n // Editing/upgrading an attestation requires that it be revoked before a new one is registered\\n require(\\n identifierToAttestations[identifier][issuer][i].account != account,\\n \\\"Attestation for this account already exists\\\"\\n );\\n }\\n uint64 publishedOn = uint64(block.timestamp);\\n OwnershipAttestation memory attestation = OwnershipAttestation(\\n account,\\n signer,\\n issuedOn,\\n publishedOn\\n );\\n identifierToAttestations[identifier][issuer].push(attestation);\\n addressToIdentifiers[account][issuer].push(identifier);\\n emit AttestationRegistered(identifier, issuer, account, signer, issuedOn, publishedOn);\\n }\\n\\n /**\\n * @notice Revokes an attestation:\\n * helper function for revokeAttestation and batchRevokeAttestations\\n * @param identifier Hash of the identifier to be revoked\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account mapped to the identifier\\n * @dev Reverts if attestation is not found mapping identifier <-> account\\n */\\n function _revokeAttestation(bytes32 identifier, address issuer, address account) private {\\n OwnershipAttestation[] storage attestations = identifierToAttestations[identifier][issuer];\\n uint256 lenAttestations = attestations.length;\\n for (uint256 i = 0; i < lenAttestations; i = i.add(1)) {\\n if (attestations[i].account != account) {\\n continue;\\n }\\n\\n OwnershipAttestation memory attestation = attestations[i];\\n // This is meant to delete the attestations in the array\\n // and then move the last element in the array to that empty spot,\\n // to avoid having empty elements in the array\\n if (i != lenAttestations - 1) {\\n attestations[i] = attestations[lenAttestations - 1];\\n }\\n attestations.pop();\\n\\n bool deletedIdentifier = false;\\n bytes32[] storage identifiers = addressToIdentifiers[account][issuer];\\n uint256 lenIdentifiers = identifiers.length;\\n\\n for (uint256 j = 0; j < lenIdentifiers; j = j.add(1)) {\\n if (identifiers[j] != identifier) {\\n continue;\\n }\\n if (j != lenIdentifiers - 1) {\\n identifiers[j] = identifiers[lenIdentifiers - 1];\\n }\\n identifiers.pop();\\n deletedIdentifier = true;\\n break;\\n }\\n // Should never be false - both mappings should always be updated in unison\\n assert(deletedIdentifier);\\n\\n bytes32 attestationHash = getUniqueAttestationHash(\\n identifier,\\n issuer,\\n account,\\n attestation.signer,\\n attestation.issuedOn\\n );\\n revokedAttestations[attestationHash] = true;\\n\\n emit AttestationRevoked(\\n identifier,\\n issuer,\\n account,\\n attestation.signer,\\n attestation.issuedOn,\\n attestation.publishedOn\\n );\\n return;\\n }\\n revert(\\\"Attestation to be revoked does not exist\\\");\\n }\\n}\\n\",\"keccak256\":\"0xcc1fc6bd31c63ef84e41e5f7b78fbeb13c5c65aa1dd3cce2ce4db998e86e7ddc\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200389e3803806200389e833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350806200011b576001600060146101000a81548160ff0219169083151502179055505b50506200012b565b600033905090565b613763806200013b6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638129fc1c116100c3578063b4b773421161007c578063b4b7734214610889578063b71aae46146108a7578063cba33ce01461096b578063e27ff311146109ed578063e3a1b7c614610adb578063f2fde38b14610bdc5761014d565b80638129fc1c146105395780638da5cb5b146105435780638f32d59b1461058d57806394b09057146105af5780639b43e48014610673578063a862e12e146106915761014d565b80635b07fdd8116101155780635b07fdd8146103155780635fa2fc30146103335780636125a6c214610379578063715018a6146104af57806373dfde98146104b95780637e68298d1461051b5761014d565b80630ab3ddc6146101525780631100b32414610208578063158ef93e1461027657806328c1f99b1461029857806354255be0146102e2575b600080fd5b6101f2600480360360a081101561016857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b6102746004803603606081101561021e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d48565b005b61027e610f06565b604051808215151515815260200191505060405180910390f35b6102a0610f19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610f1f565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b61031d610f45565b6040518082815260200191505060405180910390f35b61035f6004803603602081101561034957600080fd5b8101908080359060200190929190505050610f4b565b604051808215151515815260200191505060405180910390f35b6104106004803603604081101561038f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b9091929391929390505050610f6b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045757808201518184015260208101905061043c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561049957808201518184015260208101905061047e565b5050505090500194505050505060405180910390f35b6104b761119c565b005b610519600480360360608110156104cf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506112d5565b005b6105236112e7565b6040518082815260200191505060405180910390f35b61054161131f565b005b61054b6113d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105956113f9565b604051808215151515815260200191505060405180910390f35b61067160048036036101008110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611457565b005b61067b61170d565b6040518082815260200191505060405180910390f35b610712600480360360408110156106a757600080fd5b8101908080359060200190929190803590602001906401000000008111156106ce57600080fd5b8201836020820111156106e057600080fd5b8035906020019184602083028401116401000000008311171561070257600080fd5b9091929391929390505050611712565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561076557808201518184015260208101905061074a565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107a757808201518184015260208101905061078c565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156107e95780820151818401526020810190506107ce565b50505050905001868103835288818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561086d578082015181840152602081019050610852565b505050509050019a505050505050505050505060405180910390f35b610891611bef565b6040518082815260200191505060405180910390f35b61096960048036036101008110156108be57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611bf4565b005b6109d76004803603606081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c1b565b6040518082815260200191505060405180910390f35b610ad960048036036060811015610a0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846020830284011164010000000083111715610a7457600080fd5b909192939192939080359060200190640100000000811115610a9557600080fd5b820183602082011115610aa757600080fd5b80359060200191846020830284011164010000000083111715610ac957600080fd5b9091929391929390505050611c56565b005b610b3160048036036060811015610af157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ea5565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200194505050505060405180910390f35b610c1e60048036036020811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f64565b005b600060405160200180806136be6037913960370180613572602f9139602f019050604051602081830303815290604052805190602001208686868686604051602001808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610dad57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610ea157508173ffffffffffffffffffffffffffffffffffffffff16610dd2611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e4e57600080fd5b505afa158015610e62573d6000803e3d6000fd5b505050506040513d6020811015610e7857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b610ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806136f5603a913960400191505060405180910390fd5b610f018383836120c5565b505050565b600060149054906101000a900460ff1681565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b60045481565b60036020528060005260406000206000915054906101000a900460ff1681565b6060806000610fbb86868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612807565b809450819250505080604051908082528060200260200182016040528015610ff25781602001602082028038833980820191505090505b5091506060600080905060008090505b8787905081101561118a57600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089898481811061105a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156110fb57602002820191906000526020600020905b8154815260200190600101908083116110e7575b5050505050925060008090505b835181101561116e5783818151811061111d57fe5b602002602001015186848151811061113157fe5b60200260200101818152505061115160018461294090919063ffffffff16565b925061116760018261294090919063ffffffff16565b9050611108565b5061118360018261294090919063ffffffff16565b9050611002565b50848494509450505050935093915050565b6111a46113f9565b611216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e283338433856129c8565b505050565b60405160200180806136be6037913960370180613572602f9139602f0190506040516020818303038152906040528051906020012081565b600060149054906101000a900460ff16156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506113c6336130a9565b6113ce6131ed565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143b613330565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8673ffffffffffffffffffffffffffffffffffffffff16611476611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806134ae6045913960600191505060405180910390fd5b60006115a88989898989610c20565b9050600073__Signatures____________________________6334d1a233600454848888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561162357600080fd5b505af4158015611637573d6000803e3d6000fd5b505050506040513d602081101561164d57600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e617475726520697320696e76616c696400000000000000000000000081525060200191505060405180910390fd5b50505050505050505050565b601481565b6060806060806060600061176789898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613338565b80975081925050508060405190808252806020026020018201604052801561179e5781602001602082028038833980820191505090505b509450806040519080825280602002602001820160405280156117d05781602001602082028038833980820191505090505b509350806040519080825280602002602001820160405280156118025781602001602082028038833980820191505090505b509250806040519080825280602002602001820160405280156118345781602001602082028038833980820191505090505b50915060009050606060008090505b89899050811015611bd257600160008c815260200190815260200160002060008b8b8481811061186f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611a2857838290600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815260200190600101906118e6565b50505050915060008090505b8251811015611bb657828181518110611a4957fe5b602002602001015160000151888581518110611a6157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611aa757fe5b602002602001015160200151878581518110611abf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611b0557fe5b602002602001015160400151868581518110611b1d57fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050828181518110611b4b57fe5b602002602001015160600151858581518110611b6357fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611b9960018561294090919063ffffffff16565b9350611baf60018261294090919063ffffffff16565b9050611a34565b50611bcb60018261294090919063ffffffff16565b9050611843565b508686868686965096509650965096505050939792965093509350565b601481565b611c048888888888888888611457565b611c1188888888886129c8565b5050505050505050565b60026020528260005260406000206020528160005260406000208181548110611c4057fe5b9060005260206000200160009250925050505481565b818190508484905014611cb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613625602a913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611dd757508473ffffffffffffffffffffffffffffffffffffffff16611d08611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b611e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806136776047913960600191505060405180910390fd5b60008090505b84849050811015611e9d57611e82858583818110611e4c57fe5b9050602002013587858585818110611e6057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166120c5565b611e9660018261294090919063ffffffff16565b9050611e32565b505050505050565b60016020528260005260406000206020528160005260406000208181548110611eca57fe5b906000526020600020906003020160009250925050508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900467ffffffffffffffff16908060020160009054906101000a900467ffffffffffffffff16905084565b611f6c6113f9565b611fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611fe7816130a9565b50565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4163636f756e74730000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561208557600080fd5b505afa158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b8101908080519060200190929190505050905090565b60006001600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b818110156127b0578373ffffffffffffffffffffffffffffffffffffffff1683828154811061215357fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a557612795565b6121ad613445565b8382815481106121b957fe5b90600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060018303821461247d578360018403815481106122fd57fe5b906000526020600020906003020184838154811061231757fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900467ffffffffffffffff168160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b8380548061248757fe5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690555050905560008090506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b81811015612665578a8382815481106125cd57fe5b9060005260206000200154146125e25761264a565b600182038114612621578260018303815481106125fb57fe5b906000526020600020015483828154811061261257fe5b90600052602060002001819055505b8280548061262b57fe5b6001900381819060005260206000200160009055905560019350612665565b61265e60018261294090919063ffffffff16565b90506125b8565b508261266d57fe5b60006126848b8b8b88602001518960400151610c20565b905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c7f0e809784d3b3d167f6c74498bc305f88df3512e888b4f0b7fa5f6d06c10a962e886020015189604001518a60600151604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050612802565b6127a960018261294090919063ffffffff16565b9050612128565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061364f6028913960400191505060405180910390fd5b505050565b6000606060009150600083516040519080825280602002602001820160405280156128415781602001602082028038833980820191505090505b50915060008090505b845181101561293157600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008683815181106128a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905091506128fb828561294090919063ffffffff16565b93508183828151811061290a57fe5b60200260200101818152505061292a60018261294090919063ffffffff16565b905061284a565b50828292509250509250929050565b6000808284019050838110156129be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600360006129d98787878787610c20565b815260200190815260200160002060009054906101000a900460ff1615612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4174746573746174696f6e20686173206265656e207265766f6b65640000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506014612ad660018361294090919063ffffffff16565b1115612b2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135a16032913960400191505060405180910390fd5b6014612bc26001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061294090919063ffffffff16565b1115612c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613544602e913960400191505060405180910390fd5b60008090505b81811015612d53578473ffffffffffffffffffffffffffffffffffffffff166001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612c9957fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613519602b913960400191505060405180910390fd5b612d4c60018261294090919063ffffffff16565b9050612c1f565b506000429050612d61613445565b60405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff1681526020018367ffffffffffffffff1681525090506001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190915055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16897f3ed7f328925f9f666cc51d584ea4f0260f040f224d26993c6f89a6eb9845ed6f888887604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134f36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600046905060405180806135d360529139605201905060405180910390206040518060400160405280601581526020017f4665646572617465644174746573746174696f6e7300000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206004819055507ffc0bad7bd2704c62e2e5e69325dc36cb761ace9063381f1bf0152485a052526e6004546040518082815260200191505060405180910390a150565b600033905090565b6000606060009150600083516040519080825280602002602001820160405280156133725781602001602082028038833980820191505090505b50915060008090505b8451811015613436576001600087815260200190815260200160002060008683815181106133a557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150613400828561294090919063ffffffff16565b93508183828151811061340f57fe5b60200260200101818152505061342f60018261294090919063ffffffff16565b905061337b565b50828292509250509250929050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152509056fe5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f7220746865206973737565724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734174746573746174696f6e20666f722074686973206163636f756e7420616c7265616479206578697374734d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e7461646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e294d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e74734174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f7420657869737453656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d2074686973206973737565724f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6ea265627a7a72315820642f2b5f62e449fee2ac2cb4b65674878bba2905bafc77f108ff8334da7339b864736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638129fc1c116100c3578063b4b773421161007c578063b4b7734214610889578063b71aae46146108a7578063cba33ce01461096b578063e27ff311146109ed578063e3a1b7c614610adb578063f2fde38b14610bdc5761014d565b80638129fc1c146105395780638da5cb5b146105435780638f32d59b1461058d57806394b09057146105af5780639b43e48014610673578063a862e12e146106915761014d565b80635b07fdd8116101155780635b07fdd8146103155780635fa2fc30146103335780636125a6c214610379578063715018a6146104af57806373dfde98146104b95780637e68298d1461051b5761014d565b80630ab3ddc6146101525780631100b32414610208578063158ef93e1461027657806328c1f99b1461029857806354255be0146102e2575b600080fd5b6101f2600480360360a081101561016857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b6102746004803603606081101561021e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d48565b005b61027e610f06565b604051808215151515815260200191505060405180910390f35b6102a0610f19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610f1f565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b61031d610f45565b6040518082815260200191505060405180910390f35b61035f6004803603602081101561034957600080fd5b8101908080359060200190929190505050610f4b565b604051808215151515815260200191505060405180910390f35b6104106004803603604081101561038f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b9091929391929390505050610f6b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045757808201518184015260208101905061043c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561049957808201518184015260208101905061047e565b5050505090500194505050505060405180910390f35b6104b761119c565b005b610519600480360360608110156104cf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506112d5565b005b6105236112e7565b6040518082815260200191505060405180910390f35b61054161131f565b005b61054b6113d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105956113f9565b604051808215151515815260200191505060405180910390f35b61067160048036036101008110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611457565b005b61067b61170d565b6040518082815260200191505060405180910390f35b610712600480360360408110156106a757600080fd5b8101908080359060200190929190803590602001906401000000008111156106ce57600080fd5b8201836020820111156106e057600080fd5b8035906020019184602083028401116401000000008311171561070257600080fd5b9091929391929390505050611712565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561076557808201518184015260208101905061074a565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107a757808201518184015260208101905061078c565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156107e95780820151818401526020810190506107ce565b50505050905001868103835288818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561086d578082015181840152602081019050610852565b505050509050019a505050505050505050505060405180910390f35b610891611bef565b6040518082815260200191505060405180910390f35b61096960048036036101008110156108be57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611bf4565b005b6109d76004803603606081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c1b565b6040518082815260200191505060405180910390f35b610ad960048036036060811015610a0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846020830284011164010000000083111715610a7457600080fd5b909192939192939080359060200190640100000000811115610a9557600080fd5b820183602082011115610aa757600080fd5b80359060200191846020830284011164010000000083111715610ac957600080fd5b9091929391929390505050611c56565b005b610b3160048036036060811015610af157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ea5565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200194505050505060405180910390f35b610c1e60048036036020811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f64565b005b600060405160200180806136be6037913960370180613572602f9139602f019050604051602081830303815290604052805190602001208686868686604051602001808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610dad57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610ea157508173ffffffffffffffffffffffffffffffffffffffff16610dd2611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e4e57600080fd5b505afa158015610e62573d6000803e3d6000fd5b505050506040513d6020811015610e7857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b610ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806136f5603a913960400191505060405180910390fd5b610f018383836120c5565b505050565b600060149054906101000a900460ff1681565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b60045481565b60036020528060005260406000206000915054906101000a900460ff1681565b6060806000610fbb86868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612807565b809450819250505080604051908082528060200260200182016040528015610ff25781602001602082028038833980820191505090505b5091506060600080905060008090505b8787905081101561118a57600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089898481811061105a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156110fb57602002820191906000526020600020905b8154815260200190600101908083116110e7575b5050505050925060008090505b835181101561116e5783818151811061111d57fe5b602002602001015186848151811061113157fe5b60200260200101818152505061115160018461294090919063ffffffff16565b925061116760018261294090919063ffffffff16565b9050611108565b5061118360018261294090919063ffffffff16565b9050611002565b50848494509450505050935093915050565b6111a46113f9565b611216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e283338433856129c8565b505050565b60405160200180806136be6037913960370180613572602f9139602f0190506040516020818303038152906040528051906020012081565b600060149054906101000a900460ff16156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506113c6336130a9565b6113ce6131ed565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143b613330565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8673ffffffffffffffffffffffffffffffffffffffff16611476611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806134ae6045913960600191505060405180910390fd5b60006115a88989898989610c20565b9050600073__Signatures____________________________6334d1a233600454848888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561162357600080fd5b505af4158015611637573d6000803e3d6000fd5b505050506040513d602081101561164d57600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e617475726520697320696e76616c696400000000000000000000000081525060200191505060405180910390fd5b50505050505050505050565b601481565b6060806060806060600061176789898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613338565b80975081925050508060405190808252806020026020018201604052801561179e5781602001602082028038833980820191505090505b509450806040519080825280602002602001820160405280156117d05781602001602082028038833980820191505090505b509350806040519080825280602002602001820160405280156118025781602001602082028038833980820191505090505b509250806040519080825280602002602001820160405280156118345781602001602082028038833980820191505090505b50915060009050606060008090505b89899050811015611bd257600160008c815260200190815260200160002060008b8b8481811061186f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611a2857838290600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815260200190600101906118e6565b50505050915060008090505b8251811015611bb657828181518110611a4957fe5b602002602001015160000151888581518110611a6157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611aa757fe5b602002602001015160200151878581518110611abf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611b0557fe5b602002602001015160400151868581518110611b1d57fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050828181518110611b4b57fe5b602002602001015160600151858581518110611b6357fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611b9960018561294090919063ffffffff16565b9350611baf60018261294090919063ffffffff16565b9050611a34565b50611bcb60018261294090919063ffffffff16565b9050611843565b508686868686965096509650965096505050939792965093509350565b601481565b611c048888888888888888611457565b611c1188888888886129c8565b5050505050505050565b60026020528260005260406000206020528160005260406000208181548110611c4057fe5b9060005260206000200160009250925050505481565b818190508484905014611cb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613625602a913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611dd757508473ffffffffffffffffffffffffffffffffffffffff16611d08611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b611e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806136776047913960600191505060405180910390fd5b60008090505b84849050811015611e9d57611e82858583818110611e4c57fe5b9050602002013587858585818110611e6057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166120c5565b611e9660018261294090919063ffffffff16565b9050611e32565b505050505050565b60016020528260005260406000206020528160005260406000208181548110611eca57fe5b906000526020600020906003020160009250925050508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900467ffffffffffffffff16908060020160009054906101000a900467ffffffffffffffff16905084565b611f6c6113f9565b611fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611fe7816130a9565b50565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4163636f756e74730000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561208557600080fd5b505afa158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b8101908080519060200190929190505050905090565b60006001600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b818110156127b0578373ffffffffffffffffffffffffffffffffffffffff1683828154811061215357fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a557612795565b6121ad613445565b8382815481106121b957fe5b90600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060018303821461247d578360018403815481106122fd57fe5b906000526020600020906003020184838154811061231757fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900467ffffffffffffffff168160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b8380548061248757fe5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690555050905560008090506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b81811015612665578a8382815481106125cd57fe5b9060005260206000200154146125e25761264a565b600182038114612621578260018303815481106125fb57fe5b906000526020600020015483828154811061261257fe5b90600052602060002001819055505b8280548061262b57fe5b6001900381819060005260206000200160009055905560019350612665565b61265e60018261294090919063ffffffff16565b90506125b8565b508261266d57fe5b60006126848b8b8b88602001518960400151610c20565b905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c7f0e809784d3b3d167f6c74498bc305f88df3512e888b4f0b7fa5f6d06c10a962e886020015189604001518a60600151604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050612802565b6127a960018261294090919063ffffffff16565b9050612128565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061364f6028913960400191505060405180910390fd5b505050565b6000606060009150600083516040519080825280602002602001820160405280156128415781602001602082028038833980820191505090505b50915060008090505b845181101561293157600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008683815181106128a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905091506128fb828561294090919063ffffffff16565b93508183828151811061290a57fe5b60200260200101818152505061292a60018261294090919063ffffffff16565b905061284a565b50828292509250509250929050565b6000808284019050838110156129be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600360006129d98787878787610c20565b815260200190815260200160002060009054906101000a900460ff1615612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4174746573746174696f6e20686173206265656e207265766f6b65640000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506014612ad660018361294090919063ffffffff16565b1115612b2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135a16032913960400191505060405180910390fd5b6014612bc26001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061294090919063ffffffff16565b1115612c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613544602e913960400191505060405180910390fd5b60008090505b81811015612d53578473ffffffffffffffffffffffffffffffffffffffff166001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612c9957fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613519602b913960400191505060405180910390fd5b612d4c60018261294090919063ffffffff16565b9050612c1f565b506000429050612d61613445565b60405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff1681526020018367ffffffffffffffff1681525090506001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190915055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16897f3ed7f328925f9f666cc51d584ea4f0260f040f224d26993c6f89a6eb9845ed6f888887604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134f36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600046905060405180806135d360529139605201905060405180910390206040518060400160405280601581526020017f4665646572617465644174746573746174696f6e7300000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206004819055507ffc0bad7bd2704c62e2e5e69325dc36cb761ace9063381f1bf0152485a052526e6004546040518082815260200191505060405180910390a150565b600033905090565b6000606060009150600083516040519080825280602002602001820160405280156133725781602001602082028038833980820191505090505b50915060008090505b8451811015613436576001600087815260200190815260200160002060008683815181106133a557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150613400828561294090919063ffffffff16565b93508183828151811061340f57fe5b60200260200101818152505061342f60018261294090919063ffffffff16565b905061337b565b50828292509250509250929050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152509056fe5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f7220746865206973737565724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734174746573746174696f6e20666f722074686973206163636f756e7420616c7265616479206578697374734d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e7461646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e294d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e74734174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f7420657869737453656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d2074686973206973737565724f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6ea265627a7a72315820642f2b5f62e449fee2ac2cb4b65674878bba2905bafc77f108ff8334da7339b864736f6c634300050d0032", + "sourceMap": "604:18705:96:-;;;2831:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;2831:52:96;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2831:52:96;;;;;;;;;;;;;;;;2875:4;698:17:4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;2831:52:96;604:18705;;788:96:0;833:15;867:10;860:17;;788:96;:::o;604:18705:96:-;;;;;;;", + "deployedSourceMap": "604:18705:96:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:18705:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:391;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11904:391:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5377:469;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5377:469:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3057:117:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1595:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1595:51:96;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9632:799;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9632:799:96;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9632:799:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9632:799:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9632:799:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9632:799:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9632:799:96;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;3865:192:96;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3865:192:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1691:227;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3286:116;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11132:768:96;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11132:768:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2184:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7707:1380;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7707:1380:96;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7707:1380:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7707:1380:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7707:1380:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;2120:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4725:353;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4725:353:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1471:77;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1471:77:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6402:566;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6402:566:96;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6402:566:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6402:566:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6402:566:96;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6402:566:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6402:566:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6402:566:96;;;;;;;;;;;;:::i;:::-;;1335:94;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1335:94:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;11904:391:96;12069:7;1770:144;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1770:144:96;;;1755:163;;;;;;12187:10;12209:6;12227:7;12246:6;12264:8;12116:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12116:166:96;;;12097:193;;;;;;12084:206;;11904:391;;;;;;;:::o;5377:469::-;5498:10;5487:21;;:7;:21;;;:153;;;;5630:10;5620:20;;:6;:20;;;5487:153;:227;;;;5708:6;5652:62;;:13;:11;:13::i;:::-;:40;;;5693:10;5652:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5652:52:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5652:52:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5652:52:96;;;;;;;;;;;;;;;;:62;;;5487:227;5472:316;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:47;5813:10;5825:6;5833:7;5794:18;:47::i;:::-;5377:469;;;:::o;53:23:19:-;;;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;3057:117:96:-;3108:7;3117;3126;3135;3158:1;3161;3164;3167;3150:19;;;;;;;;;;;;;;;;;;;;3057:117;;;;:::o;1651:36::-;;;;:::o;1595:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;9632:799::-;9746:32;9780:28;9818:24;9886:42;9904:7;9913:14;;9886:42;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9886:42:96;;;;;;:17;:42::i;:::-;9848:80;;;;;;;;9963:16;9949:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9949:31:96;;;;9935:45;;9986:37;10030:17;10050:1;10030:21;;10063:9;10075:1;10063:13;;10058:326;10082:14;;:21;;10078:1;:25;10058:326;;;10150:20;:29;10171:7;10150:29;;;;;;;;;;;;;;;:48;10180:14;;10195:1;10180:17;;;;;;;;;;;;;;;10150:48;;;;;;;;;;;;;;;10127:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10211:9;10223:1;10211:13;;10206:172;10230:20;:27;10226:1;:31;10206:172;;;10308:20;10329:1;10308:23;;;;;;;;;;;;;;10283:11;10295:9;10283:22;;;;;;;;;;;;;:48;;;;;10353:16;10367:1;10353:9;:13;;:16;;;;:::i;:::-;10341:28;;10263:8;10269:1;10263;:5;;:8;;;;:::i;:::-;10259:12;;10206:172;;;;10109:8;10115:1;10109;:5;;:8;;;;:::i;:::-;10105:12;;10058:326;;;;10397:15;10414:11;10389:37;;;;;;;9632:799;;;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;3865:192:96:-;3977:75;3998:10;4010;4022:7;4031:10;4043:8;3977:20;:75::i;:::-;3865:192;;;:::o;1691:227::-;1770:144;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1770:144:96;;;1755:163;;;;;;1691:227;:::o;3286:116::-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;3335:30:96;3354:10;3335:18;:30::i;:::-;3371:26;:24;:26::i;:::-;3286:116::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;11132:768:96:-;11499:6;11447:58;;:13;:11;:13::i;:::-;:40;;;11488:6;11447:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11447:48:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11447:48:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11447:48:96;;;;;;;;;;;;;;;;:58;;;11432:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11596:18;11617:71;11642:10;11654:6;11662:7;11671:6;11679:8;11617:24;:71::i;:::-;11596:92;;11694:21;11718:10;:35;11761:21;;11790:10;11808:1;11817;11826;11718:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11718:115:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11718:115:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11718:115:96;;;;;;;;;;;;;;;;11694:139;;11864:6;11847:23;;:13;:23;;;11839:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11132:768;;;;;;;;;;:::o;2184:56::-;2238:2;2184:56;:::o;7707:1380::-;7832:32;7872:25;7905:24;7937:25;7970:28;8013:25;8083:46;8102:10;8114:14;;8083:46;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8083:46:96;;;;;;:18;:46::i;:::-;8044:85;;;;;;;;8161:17;8147:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8147:32:96;;;;8136:43;;8209:17;8195:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8195:32:96;;;;8185:42;;8258:17;8245:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8245:31:96;;;;8233:43;;8310:17;8297:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8297:31:96;;;;8282:46;;8355:1;8335:21;;8362:51;8425:9;8437:1;8425:13;;8420:589;8444:14;;:21;;8440:1;:25;8420:589;;;8513:24;:36;8538:10;8513:36;;;;;;;;;;;:55;8550:14;;8565:1;8550:17;;;;;;;;;;;;;;;8513:55;;;;;;;;;;;;;;;8489:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8581:9;8593:1;8581:13;;8576:427;8600:21;:28;8596:1;:32;8576:427;;;8684:21;8706:1;8684:24;;;;;;;;;;;;;;:32;;;8654:8;8663:17;8654:27;;;;;;;;;;;;;:62;;;;;;;;;;;8755:21;8777:1;8755:24;;;;;;;;;;;;;;:31;;;8726:7;8734:17;8726:26;;;;;;;;;;;;;:60;;;;;;;;;;;8827:21;8849:1;8827:24;;;;;;;;;;;;;;:33;;;8796:9;8806:17;8796:28;;;;;;;;;;;;;:64;;;;;;;;;;;8904:21;8926:1;8904:24;;;;;;;;;;;;;;:36;;;8870:12;8883:17;8870:31;;;;;;;;;;;;;:70;;;;;;;;;;;8970:24;8992:1;8970:17;:21;;:24;;;;:::i;:::-;8950:44;;8634:8;8640:1;8634;:5;;:8;;;;:::i;:::-;8630:12;;8576:427;;;;8471:8;8477:1;8471;:5;;:8;;;;:::i;:::-;8467:12;;8420:589;;;;9022:15;9039:8;9049:7;9058:9;9069:12;9014:68;;;;;;;;;;;;7707:1380;;;;;;;;;:::o;2120:60::-;2178:2;2120:60;:::o;4725:353::-;4922:78;4945:10;4957:6;4965:7;4974:6;4982:8;4992:1;4995;4998;4922:22;:78::i;:::-;5006:67;5027:10;5039:6;5047:7;5056:6;5064:8;5006:20;:67::i;:::-;4725:353;;;;;;;;:::o;1471:77::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6402:566::-;6573:8;;:15;;6551:11;;:18;;:37;6543:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:10;6656:20;;:6;:20;;;:86;;;;6736:6;6680:62;;:13;:11;:13::i;:::-;:40;;;6721:10;6680:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6680:52:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6680:52:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6680:52:96;;;;;;;;;;;;;;;;:62;;;6656:86;6641:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:9;6853:1;6841:13;;6836:128;6860:11;;:18;;6856:1;:22;6836:128;;;6902:55;6921:11;;6933:1;6921:14;;;;;;;;;;;;;6937:6;6945:8;;6954:1;6945:11;;;;;;;;;;;;;;;6902:18;:55::i;:::-;6884:8;6890:1;6884;:5;;:8;;;;:::i;:::-;6880:12;;6836:128;;;;6402:566;;;;;:::o;1335:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;3734:143:27:-;3780:9;949:42;3814:35;;;1130:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1130:28:27;;;1120:39;;;;;;3814:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3814:57:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3814:57:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3814:57:27;;;;;;;;;;;;;;;;3797:75;;3734:143;:::o;17442:1865:96:-;17537:43;17583:24;:36;17608:10;17583:36;;;;;;;;;;;:44;17620:6;17583:44;;;;;;;;;;;;;;;17537:90;;17633:23;17659:12;:19;;;;17633:45;;17689:9;17701:1;17689:13;;17684:1563;17708:15;17704:1;:19;17684:1563;;;17778:7;17751:34;;:12;17764:1;17751:15;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:34;;;17747:67;;17797:8;;17747:67;17822:39;;:::i;:::-;17864:12;17877:1;17864:15;;;;;;;;;;;;;;;;;;17822:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18103:1;18085:15;:19;18080:1;:24;18076:100;;18134:12;18165:1;18147:15;:19;18134:33;;;;;;;;;;;;;;;;;;18116:12;18129:1;18116:15;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:100;18183:12;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18210:22;18235:5;18210:30;;18248:29;18280:20;:29;18301:7;18280:29;;;;;;;;;;;;;;;:37;18310:6;18280:37;;;;;;;;;;;;;;;18248:69;;18325:22;18350:11;:18;;;;18325:43;;18382:9;18394:1;18382:13;;18377:322;18401:14;18397:1;:18;18377:322;;;18463:10;18445:11;18457:1;18445:14;;;;;;;;;;;;;;;;:28;18441:65;;18487:8;;18441:65;18541:1;18524:14;:18;18519:1;:23;18515:100;;18573:11;18602:1;18585:14;:18;18573:31;;;;;;;;;;;;;;;;18556:11;18568:1;18556:14;;;;;;;;;;;;;;;:48;;;;18515:100;18624:11;:17;;;;;;;;;;;;;;;;;;;;;;;;18671:4;18651:24;;18685:5;;18377:322;18421:8;18427:1;18421;:5;;:8;;;;:::i;:::-;18417:12;;18377:322;;;;18795:17;18788:25;;;;18822:23;18848:143;18882:10;18902:6;18918:7;18935:11;:18;;;18963:11;:20;;;18848:24;:143::i;:::-;18822:169;;19038:4;18999:19;:36;19019:15;18999:36;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19120:7;19056:170;;19104:6;19056:170;;19084:10;19056:170;19137:11;:18;;;19165:11;:20;;;19195:11;:23;;;19056:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19234:7;;;;;;;;;;17684:1563;17729:8;17735:1;17729;:5;;:8;;;;:::i;:::-;17725:12;;17684:1563;;;;19252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17442:1865;;;;:::o;14462:637::-;14574:24;14600:32;14661:1;14642:20;;14668:31;14737:14;:21;14723:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;14723:36:96;;;;14705:54;;14771:9;14783:1;14771:13;;14766:281;14790:14;:21;14786:1;:25;14766:281;;;14861:20;:29;14882:7;14861:29;;;;;;;;;;;;;;;:48;14891:14;14906:1;14891:17;;;;;;;;;;;;;;14861:48;;;;;;;;;;;;;;;:55;;;;14835:81;;14943:45;14964:23;14943:16;:20;;:45;;;;:::i;:::-;14924:64;;15017:23;14996:15;15012:1;14996:18;;;;;;;;;;;;;:44;;;;;14817:8;14823:1;14817;:5;;:8;;;;:::i;:::-;14813:12;;14766:281;;;;15060:16;15078:15;15052:42;;;;;14462:637;;;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;15484:1575:96:-;15654:19;:92;15674:71;15699:10;15711:6;15719:7;15728:6;15736:8;15674:24;:71::i;:::-;15654:92;;;;;;;;;;;;;;;;;;;;;15653:93;15638:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15796:31;15830:24;:36;15855:10;15830:36;;;;;;;;;;;:44;15867:6;15830:44;;;;;;;;;;;;;;;:51;;;;15796:85;;2178:2;15902:30;15930:1;15902:23;:27;;:30;;;;:::i;:::-;:65;;15887:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2238:2;16054:51;16103:1;16054:20;:29;16075:7;16054:29;;;;;;;;;;;;;;;:37;16084:6;16054:37;;;;;;;;;;;;;;;:44;;;;:48;;:51;;;;:::i;:::-;:82;;16039:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16210:9;16222:1;16210:13;;16205:442;16229:23;16225:1;:27;16205:442;;;16570:7;16511:66;;:24;:36;16536:10;16511:36;;;;;;;;;;;:44;16548:6;16511:44;;;;;;;;;;;;;;;16556:1;16511:47;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:66;;;;16494:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16258:8;16264:1;16258;:5;;:8;;;;:::i;:::-;16254:12;;16205:442;;;;16652:18;16680:15;16652:44;;16702:39;;:::i;:::-;16744:90;;;;;;;;16772:7;16744:90;;;;;;16787:6;16744:90;;;;;;16801:8;16744:90;;;;;;16817:11;16744:90;;;;;16702:132;;16840:24;:36;16865:10;16840:36;;;;;;;;;;;:44;16877:6;16840:44;;;;;;;;;;;;;;;16890:11;16840:62;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16840:62:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16908:20;:29;16929:7;16908:29;;;;;;;;;;;;;;;:37;16938:6;16908:37;;;;;;;;;;;;;;;16951:10;16908:54;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16908:54:96;;;;;;;;;;;;;;;;;;;;;;17015:7;16973:81;;17007:6;16973:81;;16995:10;16973:81;17024:6;17032:8;17042:11;16973:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15484:1575;;;;;;;;:::o;2178:225:4:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;12405:489:96:-;12456:15;12505:7;12494:18;;12585:115;;;;;;;;;;;;;;;;;;;12720:30;;;;;;;;;;;;;;;;;12710:41;;;;;;12761:16;;;;;;;;;;;;;;;;;;;12787:7;12812:4;12565:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12565:260:96;;;12548:283;;;;;;12524:21;:307;;;;12842:47;12867:21;;12842:47;;;;;;;;;;;;;;;;;;12405:489;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;13354:657:96:-;13470:25;13497:32;13559:1;13539:21;;13566:32;13636:14;:21;13622:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;13622:36:96;;;;13604:54;;13670:9;13682:1;13670:13;;13665:293;13689:14;:21;13685:1;:25;13665:293;;;13761:24;:36;13786:10;13761:36;;;;;;;;;;;:55;13798:14;13813:1;13798:17;;;;;;;;;;;;;;13761:55;;;;;;;;;;;;;;;:62;;;;13734:89;;13851:47;13873:24;13851:17;:21;;:47;;;;:::i;:::-;13831:67;;13927:24;13906:15;13922:1;13906:18;;;;;;;;;;;;;:45;;;;;13716:8;13722:1;13716;:5;;:8;;;;:::i;:::-;13712:12;;13665:293;;;;13971:17;13990:15;13963:43;;;;;13354:657;;;;;:::o;604:18705::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/utils/SafeCast.sol\";\n\nimport \"./interfaces/IFederatedAttestations.sol\";\nimport \"../common/interfaces/IAccounts.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\n\nimport \"../common/Initializable.sol\";\nimport \"../common/UsingRegistryV2.sol\";\nimport \"../common/Signatures.sol\";\n\n/**\n * @title Contract mapping identifiers to accounts\n */\ncontract FederatedAttestations is\n IFederatedAttestations,\n ICeloVersionedContract,\n Ownable,\n Initializable,\n UsingRegistryV2\n{\n using SafeMath for uint256;\n using SafeCast for uint256;\n\n struct OwnershipAttestation {\n address account;\n address signer;\n uint64 issuedOn;\n uint64 publishedOn;\n // using uint64 to allow for extra space to add parameters\n }\n\n // Mappings from identifier <-> attestation are separated by issuer,\n // *requiring* users to specify issuers when retrieving attestations.\n // Maintaining bidirectional mappings (vs. in Attestations.sol) makes it possible\n // to perform lookups by identifier or account without indexing event data.\n\n // identifier -> issuer -> attestations\n mapping(bytes32 => mapping(address => OwnershipAttestation[])) public identifierToAttestations;\n // account -> issuer -> identifiers\n mapping(address => mapping(address => bytes32[])) public addressToIdentifiers;\n\n // unique attestation hash -> isRevoked\n mapping(bytes32 => bool) public revokedAttestations;\n\n bytes32 public eip712DomainSeparator;\n bytes32 public constant EIP712_OWNERSHIP_ATTESTATION_TYPEHASH = keccak256(\n abi.encodePacked(\n \"OwnershipAttestation(bytes32 identifier,address issuer,\",\n \"address account,address signer,uint64 issuedOn)\"\n )\n );\n\n // Changing any of these constraints will require re-benchmarking\n // and checking assumptions for batch revocation.\n // These can only be modified by releasing a new version of this contract.\n uint256 public constant MAX_ATTESTATIONS_PER_IDENTIFIER = 20;\n uint256 public constant MAX_IDENTIFIERS_PER_ADDRESS = 20;\n\n event EIP712DomainSeparatorSet(bytes32 eip712DomainSeparator);\n event AttestationRegistered(\n bytes32 indexed identifier,\n address indexed issuer,\n address indexed account,\n address signer,\n uint64 issuedOn,\n uint64 publishedOn\n );\n event AttestationRevoked(\n bytes32 indexed identifier,\n address indexed issuer,\n address indexed account,\n address signer,\n uint64 issuedOn,\n uint64 publishedOn\n );\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n setEip712DomainSeparator();\n }\n\n /**\n * @notice Registers an attestation directly from the issuer\n * @param identifier Hash of the identifier to be attested\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @dev Attestation signer and issuer in storage is set to msg.sender\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\n */\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\n external\n {\n _registerAttestation(identifier, msg.sender, account, msg.sender, issuedOn);\n }\n\n /**\n * @notice Registers an attestation with a valid signature\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n * @param v The recovery id of the incoming ECDSA signature\n * @param r Output value r of the ECDSA signature\n * @param s Output value s of the ECDSA signature\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\n */\n function registerAttestation(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n validateAttestationSig(identifier, issuer, account, signer, issuedOn, v, r, s);\n _registerAttestation(identifier, issuer, account, signer, issuedOn);\n }\n\n /**\n * @notice Revokes an attestation \n * @param identifier Hash of the identifier to be revoked\n * @param issuer Address of the attestation issuer\n * @param account Address of the account mapped to the identifier\n * @dev Throws if sender is not the issuer, signer, or account\n */\n function revokeAttestation(bytes32 identifier, address issuer, address account) external {\n require(\n account == msg.sender ||\n // Minor gas optimization to prevent storage lookup in Accounts.sol if issuer == msg.sender\n issuer == msg.sender ||\n getAccounts().attestationSignerToAccount(msg.sender) == issuer,\n \"Sender does not have permission to revoke this attestation\"\n );\n _revokeAttestation(identifier, issuer, account);\n }\n\n /**\n * @notice Revokes attestations [identifiers <-> accounts] from issuer\n * @param issuer Address of the issuer of all attestations to be revoked\n * @param identifiers Hash of the identifiers\n * @param accounts Addresses of the accounts mapped to the identifiers\n * at the same indices\n * @dev Throws if the number of identifiers and accounts is not the same\n * @dev Throws if sender is not the issuer or currently registered signer of issuer\n * @dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]\n */\n function batchRevokeAttestations(\n address issuer,\n bytes32[] calldata identifiers,\n address[] calldata accounts\n ) external {\n require(identifiers.length == accounts.length, \"Unequal number of identifiers and accounts\");\n require(\n issuer == msg.sender || getAccounts().attestationSignerToAccount(msg.sender) == issuer,\n \"Sender does not have permission to revoke attestations from this issuer\"\n );\n\n for (uint256 i = 0; i < identifiers.length; i = i.add(1)) {\n _revokeAttestation(identifiers[i], issuer, accounts[i]);\n }\n }\n\n /**\n * @notice Returns info about attestations for `identifier` produced by \n * signers of `trustedIssuers`\n * @param identifier Hash of the identifier\n * @param trustedIssuers Array of n issuers whose attestations will be included\n * @return countsPerIssuer Array of number of attestations returned per issuer\n * For m (== sum([0])) found attestations: \n * @return accounts Array of m accounts \n * @return signers Array of m signers\n * @return issuedOns Array of m issuedOns\n * @return publishedOns Array of m publishedOns\n * @dev Adds attestation info to the arrays in order of provided trustedIssuers\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\n */\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\n external\n view\n returns (\n uint256[] memory countsPerIssuer,\n address[] memory accounts,\n address[] memory signers,\n uint64[] memory issuedOns,\n uint64[] memory publishedOns\n )\n {\n uint256 totalAttestations;\n (totalAttestations, countsPerIssuer) = getNumAttestations(identifier, trustedIssuers);\n\n accounts = new address[](totalAttestations);\n signers = new address[](totalAttestations);\n issuedOns = new uint64[](totalAttestations);\n publishedOns = new uint64[](totalAttestations);\n\n totalAttestations = 0;\n OwnershipAttestation[] memory attestationsPerIssuer;\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n attestationsPerIssuer = identifierToAttestations[identifier][trustedIssuers[i]];\n for (uint256 j = 0; j < attestationsPerIssuer.length; j = j.add(1)) {\n accounts[totalAttestations] = attestationsPerIssuer[j].account;\n signers[totalAttestations] = attestationsPerIssuer[j].signer;\n issuedOns[totalAttestations] = attestationsPerIssuer[j].issuedOn;\n publishedOns[totalAttestations] = attestationsPerIssuer[j].publishedOn;\n totalAttestations = totalAttestations.add(1);\n }\n }\n return (countsPerIssuer, accounts, signers, issuedOns, publishedOns);\n }\n\n /**\n * @notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n * @param account Address of the account\n * @param trustedIssuers Array of n issuers whose identifier mappings will be used\n * @return countsPerIssuer Array of number of identifiers returned per issuer\n * @return identifiers Array (length == sum([0])) of identifiers\n * @dev Adds identifier info to the arrays in order of provided trustedIssuers\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\n */\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\n external\n view\n returns (uint256[] memory countsPerIssuer, bytes32[] memory identifiers)\n {\n uint256 totalIdentifiers;\n (totalIdentifiers, countsPerIssuer) = getNumIdentifiers(account, trustedIssuers);\n\n identifiers = new bytes32[](totalIdentifiers);\n bytes32[] memory identifiersPerIssuer;\n\n uint256 currIndex = 0;\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n identifiersPerIssuer = addressToIdentifiers[account][trustedIssuers[i]];\n for (uint256 j = 0; j < identifiersPerIssuer.length; j = j.add(1)) {\n identifiers[currIndex] = identifiersPerIssuer[j];\n currIndex = currIndex.add(1);\n }\n }\n return (countsPerIssuer, identifiers);\n }\n\n /**\n * @notice Validates the given attestation and signature\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n * @param v The recovery id of the incoming ECDSA signature\n * @param r Output value r of the ECDSA signature\n * @param s Output value s of the ECDSA signature\n * @dev Throws if attestation has been revoked\n * @dev Throws if signer is not an authorized AttestationSigner of the issuer\n */\n function validateAttestationSig(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public view {\n // attestationSignerToAccount instead of isSigner allows the issuer to act as its own signer\n require(\n getAccounts().attestationSignerToAccount(signer) == issuer,\n \"Signer is not a currently authorized AttestationSigner for the issuer\"\n );\n bytes32 structHash = getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn);\n address guessedSigner = Signatures.getSignerOfTypedDataHash(\n eip712DomainSeparator,\n structHash,\n v,\n r,\n s\n );\n require(guessedSigner == signer, \"Signature is invalid\");\n }\n\n function getUniqueAttestationHash(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn\n ) public pure returns (bytes32) {\n return\n keccak256(\n abi.encode(\n EIP712_OWNERSHIP_ATTESTATION_TYPEHASH,\n identifier,\n issuer,\n account,\n signer,\n issuedOn\n )\n );\n }\n\n /**\n * @notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.\n */\n function setEip712DomainSeparator() internal {\n uint256 chainId;\n assembly {\n chainId := chainid\n }\n\n eip712DomainSeparator = keccak256(\n abi.encode(\n keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n ),\n keccak256(bytes(\"FederatedAttestations\")),\n keccak256(\"1.0\"),\n chainId,\n address(this)\n )\n );\n emit EIP712DomainSeparatorSet(eip712DomainSeparator);\n }\n\n /**\n * @notice Helper function for lookupAttestations to calculate the\n total number of attestations completed for an identifier\n by each trusted issuer\n * @param identifier Hash of the identifier\n * @param trustedIssuers Array of n issuers whose attestations will be included\n * @return totalAttestations Sum total of attestations found\n * @return countsPerIssuer Array of number of attestations found per issuer\n */\n function getNumAttestations(bytes32 identifier, address[] memory trustedIssuers)\n internal\n view\n returns (uint256 totalAttestations, uint256[] memory countsPerIssuer)\n {\n totalAttestations = 0;\n uint256 numAttestationsForIssuer;\n countsPerIssuer = new uint256[](trustedIssuers.length);\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n numAttestationsForIssuer = identifierToAttestations[identifier][trustedIssuers[i]].length;\n totalAttestations = totalAttestations.add(numAttestationsForIssuer);\n countsPerIssuer[i] = numAttestationsForIssuer;\n }\n return (totalAttestations, countsPerIssuer);\n }\n\n /**\n * @notice Helper function for lookupIdentifiers to calculate the\n total number of identifiers completed for an identifier\n by each trusted issuer\n * @param account Address of the account\n * @param trustedIssuers Array of n issuers whose identifiers will be included\n * @return totalIdentifiers Sum total of identifiers found\n * @return countsPerIssuer Array of number of identifiers found per issuer\n */\n function getNumIdentifiers(address account, address[] memory trustedIssuers)\n internal\n view\n returns (uint256 totalIdentifiers, uint256[] memory countsPerIssuer)\n {\n totalIdentifiers = 0;\n uint256 numIdentifiersForIssuer;\n countsPerIssuer = new uint256[](trustedIssuers.length);\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n numIdentifiersForIssuer = addressToIdentifiers[account][trustedIssuers[i]].length;\n totalIdentifiers = totalIdentifiers.add(numIdentifiersForIssuer);\n countsPerIssuer[i] = numIdentifiersForIssuer;\n }\n return (totalIdentifiers, countsPerIssuer);\n }\n\n /**\n * @notice Registers an attestation\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n */\n function _registerAttestation(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn\n ) private {\n require(\n !revokedAttestations[getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn)],\n \"Attestation has been revoked\"\n );\n uint256 numExistingAttestations = identifierToAttestations[identifier][issuer].length;\n require(\n numExistingAttestations.add(1) <= MAX_ATTESTATIONS_PER_IDENTIFIER,\n \"Max attestations already registered for identifier\"\n );\n require(\n addressToIdentifiers[account][issuer].length.add(1) <= MAX_IDENTIFIERS_PER_ADDRESS,\n \"Max identifiers already registered for account\"\n );\n\n for (uint256 i = 0; i < numExistingAttestations; i = i.add(1)) {\n // This enforces only one attestation to be uploaded\n // for a given set of (identifier, issuer, account)\n // Editing/upgrading an attestation requires that it be revoked before a new one is registered\n require(\n identifierToAttestations[identifier][issuer][i].account != account,\n \"Attestation for this account already exists\"\n );\n }\n uint64 publishedOn = uint64(block.timestamp);\n OwnershipAttestation memory attestation = OwnershipAttestation(\n account,\n signer,\n issuedOn,\n publishedOn\n );\n identifierToAttestations[identifier][issuer].push(attestation);\n addressToIdentifiers[account][issuer].push(identifier);\n emit AttestationRegistered(identifier, issuer, account, signer, issuedOn, publishedOn);\n }\n\n /**\n * @notice Revokes an attestation:\n * helper function for revokeAttestation and batchRevokeAttestations\n * @param identifier Hash of the identifier to be revoked\n * @param issuer Address of the attestation issuer\n * @param account Address of the account mapped to the identifier\n * @dev Reverts if attestation is not found mapping identifier <-> account\n */\n function _revokeAttestation(bytes32 identifier, address issuer, address account) private {\n OwnershipAttestation[] storage attestations = identifierToAttestations[identifier][issuer];\n uint256 lenAttestations = attestations.length;\n for (uint256 i = 0; i < lenAttestations; i = i.add(1)) {\n if (attestations[i].account != account) {\n continue;\n }\n\n OwnershipAttestation memory attestation = attestations[i];\n // This is meant to delete the attestations in the array\n // and then move the last element in the array to that empty spot,\n // to avoid having empty elements in the array\n if (i != lenAttestations - 1) {\n attestations[i] = attestations[lenAttestations - 1];\n }\n attestations.pop();\n\n bool deletedIdentifier = false;\n bytes32[] storage identifiers = addressToIdentifiers[account][issuer];\n uint256 lenIdentifiers = identifiers.length;\n\n for (uint256 j = 0; j < lenIdentifiers; j = j.add(1)) {\n if (identifiers[j] != identifier) {\n continue;\n }\n if (j != lenIdentifiers - 1) {\n identifiers[j] = identifiers[lenIdentifiers - 1];\n }\n identifiers.pop();\n deletedIdentifier = true;\n break;\n }\n // Should never be false - both mappings should always be updated in unison\n assert(deletedIdentifier);\n\n bytes32 attestationHash = getUniqueAttestationHash(\n identifier,\n issuer,\n account,\n attestation.signer,\n attestation.issuedOn\n );\n revokedAttestations[attestationHash] = true;\n\n emit AttestationRevoked(\n identifier,\n issuer,\n account,\n attestation.signer,\n attestation.issuedOn,\n attestation.publishedOn\n );\n return;\n }\n revert(\"Attestation to be revoked does not exist\");\n }\n}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/FederatedAttestations.sol", + "ast": { + "absolutePath": "project:/contracts/identity/FederatedAttestations.sol", + "exportedSymbols": { + "FederatedAttestations": [ + 34897 + ] + }, + "id": 34898, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 33719, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:96" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 33720, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 364, + "src": "26:59:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 33721, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 482, + "src": "86:63:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 33722, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 956, + "src": "150:64:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/utils/SafeCast.sol", + "file": "openzeppelin-solidity/contracts/utils/SafeCast.sol", + "id": 33723, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 1359, + "src": "215:60:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol", + "file": "./interfaces/IFederatedAttestations.sol", + "id": 33724, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 36154, + "src": "277:49:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/interfaces/IAccounts.sol", + "file": "../common/interfaces/IAccounts.sol", + "id": 33725, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 9065, + "src": "327:44:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 33726, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 9108, + "src": "372:57:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 33727, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 5885, + "src": "431:37:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/UsingRegistryV2.sol", + "file": "../common/UsingRegistryV2.sol", + "id": 33728, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 8802, + "src": "469:39:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "id": 33729, + "nodeType": "ImportDirective", + "scope": 34898, + "sourceUnit": 6903, + "src": "509:34:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 33730, + "name": "IFederatedAttestations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 36153, + "src": "640:22:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFederatedAttestations_$36153", + "typeString": "contract IFederatedAttestations" + } + }, + "id": 33731, + "nodeType": "InheritanceSpecifier", + "src": "640:22:96" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 33732, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9107, + "src": "666:22:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 33733, + "nodeType": "InheritanceSpecifier", + "src": "666:22:96" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 33734, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 481, + "src": "692:7:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$481", + "typeString": "contract Ownable" + } + }, + "id": 33735, + "nodeType": "InheritanceSpecifier", + "src": "692:7:96" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 33736, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5884, + "src": "703:13:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$5884", + "typeString": "contract Initializable" + } + }, + "id": 33737, + "nodeType": "InheritanceSpecifier", + "src": "703:13:96" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 33738, + "name": "UsingRegistryV2", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8801, + "src": "720:15:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistryV2_$8801", + "typeString": "contract UsingRegistryV2" + } + }, + "id": 33739, + "nodeType": "InheritanceSpecifier", + "src": "720:15:96" + } + ], + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 9107, + 36153 + ], + "contractKind": "contract", + "documentation": "@title Contract mapping identifiers to accounts", + "fullyImplemented": true, + "id": 34897, + "linearizedBaseContracts": [ + 34897, + 8801, + 5884, + 481, + 26, + 9107, + 36153 + ], + "name": "FederatedAttestations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 33742, + "libraryName": { + "contractScope": null, + "id": 33740, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 363, + "src": "746:8:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$363", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "740:27:96", + "typeName": { + "id": 33741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "759:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 33745, + "libraryName": { + "contractScope": null, + "id": 33743, + "name": "SafeCast", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1358, + "src": "776:8:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeCast_$1358", + "typeString": "library SafeCast" + } + }, + "nodeType": "UsingForDirective", + "src": "770:27:96", + "typeName": { + "id": 33744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "789:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "FederatedAttestations.OwnershipAttestation", + "id": 33754, + "members": [ + { + "constant": false, + "id": 33747, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33754, + "src": "835:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "835:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33749, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 33754, + "src": "856:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "856:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33751, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 33754, + "src": "876:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33750, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "876:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33753, + "name": "publishedOn", + "nodeType": "VariableDeclaration", + "scope": 33754, + "src": "897:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33752, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "897:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "OwnershipAttestation", + "nodeType": "StructDefinition", + "scope": 34897, + "src": "801:182:96", + "visibility": "public" + }, + { + "constant": false, + "id": 33761, + "name": "identifierToAttestations", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "1335:94:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))" + }, + "typeName": { + "id": 33760, + "keyType": { + "id": 33755, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1343:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1335:62:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))" + }, + "valueType": { + "id": 33759, + "keyType": { + "id": 33756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1362:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1354:42:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation[])" + }, + "valueType": { + "baseType": { + "contractScope": null, + "id": 33757, + "name": "OwnershipAttestation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 33754, + "src": "1373:20:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + } + }, + "id": 33758, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1373:22:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation[]" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 33768, + "name": "addressToIdentifiers", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "1471:77:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[]))" + }, + "typeName": { + "id": 33767, + "keyType": { + "id": 33762, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1479:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1471:49:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[]))" + }, + "valueType": { + "id": 33766, + "keyType": { + "id": 33763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1498:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1490:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[])" + }, + "valueType": { + "baseType": { + "id": 33764, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1509:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 33765, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1509:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 33772, + "name": "revokedAttestations", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "1595:51:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 33771, + "keyType": { + "id": 33769, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1603:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1595:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 33770, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1614:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 33774, + "name": "eip712DomainSeparator", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "1651:36:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33773, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1651:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": true, + "id": 33783, + "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "1691:227:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33775, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1691:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c", + "id": 33779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1794:57:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73", + "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\"" + }, + "value": "OwnershipAttestation(bytes32 identifier,address issuer," + }, + { + "argumentTypes": null, + "hexValue": "61646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e29", + "id": 33780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:49:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3", + "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\"" + }, + "value": "address account,address signer,uint64 issuedOn)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73", + "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\"" + }, + { + "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3", + "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 33777, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42893, + "src": "1770:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 33778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1770:16:96", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 33781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1770:144:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 33776, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "1755:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 33782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1755:163:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 33786, + "name": "MAX_ATTESTATIONS_PER_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "2120:60:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2120:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230", + "id": 33785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:2:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 33789, + "name": "MAX_IDENTIFIERS_PER_ADDRESS", + "nodeType": "VariableDeclaration", + "scope": 34897, + "src": "2184:56:96", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230", + "id": 33788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2238:2:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 33793, + "name": "EIP712DomainSeparatorSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 33792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33791, + "indexed": false, + "name": "eip712DomainSeparator", + "nodeType": "VariableDeclaration", + "scope": 33793, + "src": "2276:29:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33790, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2276:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2275:31:96" + }, + "src": "2245:62:96" + }, + { + "anonymous": false, + "documentation": null, + "id": 33807, + "name": "AttestationRegistered", + "nodeType": "EventDefinition", + "parameters": { + "id": 33806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33795, + "indexed": true, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2343:26:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33794, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2343:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33797, + "indexed": true, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2375:22:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2375:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33799, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2403:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33798, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2403:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33801, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2432:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2432:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33803, + "indexed": false, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2452:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33802, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2452:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33805, + "indexed": false, + "name": "publishedOn", + "nodeType": "VariableDeclaration", + "scope": 33807, + "src": "2473:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33804, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2473:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2337:158:96" + }, + "src": "2310:186:96" + }, + { + "anonymous": false, + "documentation": null, + "id": 33821, + "name": "AttestationRevoked", + "nodeType": "EventDefinition", + "parameters": { + "id": 33820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33809, + "indexed": true, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2529:26:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33808, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2529:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33811, + "indexed": true, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2561:22:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33810, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2561:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33813, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2589:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2589:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33815, + "indexed": false, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2618:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2618:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33817, + "indexed": false, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2638:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33816, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2638:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33819, + "indexed": false, + "name": "publishedOn", + "nodeType": "VariableDeclaration", + "scope": 33821, + "src": "2659:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33818, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2659:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2523:158:96" + }, + "src": "2499:183:96" + }, + { + "body": { + "id": 33829, + "nodeType": "Block", + "src": "2881:2:96", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 33830, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 33826, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33823, + "src": "2875:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 33827, + "modifierName": { + "argumentTypes": null, + "id": 33825, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5884, + "src": "2861:13:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "2861:19:96" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33823, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 33830, + "src": "2843:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33822, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2843:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2842:11:96" + }, + "returnParameters": { + "id": 33828, + "nodeType": "ParameterList", + "parameters": [], + "src": "2881:0:96" + }, + "scope": 34897, + "src": "2831:52:96", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 33847, + "nodeType": "Block", + "src": "3144:30:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 33841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3158:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 33842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3161:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 33843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3164:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 33844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3167:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 33845, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3157:12:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 33840, + "id": 33846, + "nodeType": "Return", + "src": "3150:19:96" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "id": 33848, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33831, + "nodeType": "ParameterList", + "parameters": [], + "src": "3082:2:96" + }, + "returnParameters": { + "id": 33840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33833, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33848, + "src": "3108:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3108:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33835, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33848, + "src": "3117:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33834, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3117:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33848, + "src": "3126:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3126:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33839, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 33848, + "src": "3135:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3135:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3107:36:96" + }, + "scope": 34897, + "src": "3057:117:96", + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + { + "body": { + "id": 33861, + "nodeType": "Block", + "src": "3329:73:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33854, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "3354:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3354:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 33853, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "3335:18:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 33856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3335:30:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33857, + "nodeType": "ExpressionStatement", + "src": "3335:30:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 33858, + "name": "setEip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34424, + "src": "3371:24:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 33859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3371:26:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33860, + "nodeType": "ExpressionStatement", + "src": "3371:26:96" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "id": 33862, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 33851, + "modifierName": { + "argumentTypes": null, + "id": 33850, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5883, + "src": "3317:11:96", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3317:11:96" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33849, + "nodeType": "ParameterList", + "parameters": [], + "src": "3305:2:96" + }, + "returnParameters": { + "id": 33852, + "nodeType": "ParameterList", + "parameters": [], + "src": "3329:0:96" + }, + "scope": 34897, + "src": "3286:116:96", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 33881, + "nodeType": "Block", + "src": "3971:86:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33872, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33864, + "src": "3998:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33873, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "4010:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4010:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 33875, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33866, + "src": "4022:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33876, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "4031:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4031:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 33878, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33868, + "src": "4043:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 33871, + "name": "_registerAttestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34709, + "src": "3977:20:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,address,address,uint64)" + } + }, + "id": 33879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3977:75:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33880, + "nodeType": "ExpressionStatement", + "src": "3977:75:96" + } + ] + }, + "documentation": "@notice Registers an attestation directly from the issuer\n@param identifier Hash of the identifier to be attested\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@dev Attestation signer and issuer in storage is set to msg.sender\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists", + "id": 33882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerAttestationAsIssuer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33864, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33882, + "src": "3902:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3902:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33866, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33882, + "src": "3922:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3922:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33868, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 33882, + "src": "3939:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33867, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3939:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3901:54:96" + }, + "returnParameters": { + "id": 33870, + "nodeType": "ParameterList", + "parameters": [], + "src": "3971:0:96" + }, + "scope": 34897, + "src": "3865:192:96", + "stateMutability": "nonpayable", + "superFunction": 36042, + "visibility": "external" + }, + { + "body": { + "id": 33920, + "nodeType": "Block", + "src": "4916:162:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33902, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33884, + "src": "4945:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33903, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33886, + "src": "4957:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33904, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33888, + "src": "4965:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33905, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33890, + "src": "4974:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33906, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33892, + "src": "4982:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 33907, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33894, + "src": "4992:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 33908, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33896, + "src": "4995:1:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33909, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33898, + "src": "4998:1:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 33901, + "name": "validateAttestationSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34361, + "src": "4922:22:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,address,address,address,uint64,uint8,bytes32,bytes32) view" + } + }, + "id": 33910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4922:78:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33911, + "nodeType": "ExpressionStatement", + "src": "4922:78:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33913, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33884, + "src": "5027:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33914, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33886, + "src": "5039:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33915, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33888, + "src": "5047:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33916, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33890, + "src": "5056:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33917, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33892, + "src": "5064:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 33912, + "name": "_registerAttestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34709, + "src": "5006:20:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,address,address,uint64)" + } + }, + "id": 33918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5006:67:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33919, + "nodeType": "ExpressionStatement", + "src": "5006:67:96" + } + ] + }, + "documentation": "@notice Registers an attestation with a valid signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists", + "id": 33921, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerAttestation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33884, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4759:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33883, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4759:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33886, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4783:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4783:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33888, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4803:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4803:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33890, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4824:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4824:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33892, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4844:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 33891, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4844:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33894, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4865:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 33893, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4865:5:96", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33896, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4878:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4878:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33898, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 33921, + "src": "4893:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4893:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4753:153:96" + }, + "returnParameters": { + "id": 33900, + "nodeType": "ParameterList", + "parameters": [], + "src": "4916:0:96" + }, + "scope": 34897, + "src": "4725:353:96", + "stateMutability": "nonpayable", + "superFunction": 36061, + "visibility": "external" + }, + { + "body": { + "id": 33958, + "nodeType": "Block", + "src": "5466:380:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33931, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33927, + "src": "5487:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33932, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "5498:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5498:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5487:21:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33935, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33925, + "src": "5620:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33936, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "5630:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5630:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5620:20:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5487:153:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33943, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "5693:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5693:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 33940, + "name": "getAccounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8548, + "src": "5652:11:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$", + "typeString": "function () view returns (contract IAccounts)" + } + }, + "id": 33941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5652:13:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAccounts_$9064", + "typeString": "contract IAccounts" + } + }, + "id": 33942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "attestationSignerToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 8839, + "src": "5652:40:96", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view external returns (address)" + } + }, + "id": 33945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5652:52:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 33946, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33925, + "src": "5708:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5652:62:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5487:227:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6e", + "id": 33949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5722:60:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e", + "typeString": "literal_string \"Sender does not have permission to revoke this attestation\"" + }, + "value": "Sender does not have permission to revoke this attestation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e", + "typeString": "literal_string \"Sender does not have permission to revoke this attestation\"" + } + ], + "id": 33930, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "5472:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5472:316:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33951, + "nodeType": "ExpressionStatement", + "src": "5472:316:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 33953, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33923, + "src": "5813:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 33954, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33925, + "src": "5825:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 33955, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33927, + "src": "5833:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 33952, + "name": "_revokeAttestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34896, + "src": "5794:18:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 33956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5794:47:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33957, + "nodeType": "ExpressionStatement", + "src": "5794:47:96" + } + ] + }, + "documentation": "@notice Revokes an attestation \n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Throws if sender is not the issuer, signer, or account", + "id": 33959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revokeAttestation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33923, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 33959, + "src": "5404:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 33922, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5404:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33925, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 33959, + "src": "5424:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5424:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33927, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 33959, + "src": "5440:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5440:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5403:53:96" + }, + "returnParameters": { + "id": 33929, + "nodeType": "ParameterList", + "parameters": [], + "src": "5466:0:96" + }, + "scope": 34897, + "src": "5377:469:96", + "stateMutability": "nonpayable", + "superFunction": 36070, + "visibility": "external" + }, + { + "body": { + "id": 34023, + "nodeType": "Block", + "src": "6537:431:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33971, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33964, + "src": "6551:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 33972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6551:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33973, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33967, + "src": "6573:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 33974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6573:15:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6551:37:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e7473", + "id": 33976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6590:44:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694", + "typeString": "literal_string \"Unequal number of identifiers and accounts\"" + }, + "value": "Unequal number of identifiers and accounts" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694", + "typeString": "literal_string \"Unequal number of identifiers and accounts\"" + } + ], + "id": 33970, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "6543:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6543:92:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33978, + "nodeType": "ExpressionStatement", + "src": "6543:92:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 33992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33980, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33961, + "src": "6656:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33981, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "6666:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6666:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6656:20:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 33991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 33987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "6721:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 33988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6721:10:96", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 33984, + "name": "getAccounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8548, + "src": "6680:11:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$", + "typeString": "function () view returns (contract IAccounts)" + } + }, + "id": 33985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6680:13:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAccounts_$9064", + "typeString": "contract IAccounts" + } + }, + "id": 33986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "attestationSignerToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 8839, + "src": "6680:40:96", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view external returns (address)" + } + }, + "id": 33989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6680:52:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 33990, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33961, + "src": "6736:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6680:62:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6656:86:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d207468697320697373756572", + "id": 33993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6750:73:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87", + "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\"" + }, + "value": "Sender does not have permission to revoke attestations from this issuer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87", + "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\"" + } + ], + "id": 33979, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "6641:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 33994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6641:188:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33995, + "nodeType": "ExpressionStatement", + "src": "6641:188:96" + }, + { + "body": { + "id": 34021, + "nodeType": "Block", + "src": "6894:70:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34012, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33964, + "src": "6921:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 34014, + "indexExpression": { + "argumentTypes": null, + "id": 34013, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33997, + "src": "6933:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6921:14:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34015, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33961, + "src": "6937:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34016, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33967, + "src": "6945:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 34018, + "indexExpression": { + "argumentTypes": null, + "id": 34017, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33997, + "src": "6954:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6945:11:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 34011, + "name": "_revokeAttestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34896, + "src": "6902:18:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 34019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6902:55:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34020, + "nodeType": "ExpressionStatement", + "src": "6902:55:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34000, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33997, + "src": "6856:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34001, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33964, + "src": "6860:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 34002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6860:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6856:22:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34022, + "initializationExpression": { + "assignments": [ + 33997 + ], + "declarations": [ + { + "constant": false, + "id": 33997, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34022, + "src": "6841:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6841:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 33999, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 33998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6853:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6841:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34004, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33997, + "src": "6880:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6890:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34005, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33997, + "src": "6884:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "6884:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6884:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6880:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34010, + "nodeType": "ExpressionStatement", + "src": "6880:12:96" + }, + "nodeType": "ForStatement", + "src": "6836:128:96" + } + ] + }, + "documentation": "@notice Revokes attestations [identifiers <-> accounts] from issuer\n@param issuer Address of the issuer of all attestations to be revoked\n@param identifiers Hash of the identifiers\n@param accounts Addresses of the accounts mapped to the identifiers\n at the same indices\n@dev Throws if the number of identifiers and accounts is not the same\n@dev Throws if sender is not the issuer or currently registered signer of issuer\n@dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]", + "id": 34024, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "batchRevokeAttestations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33961, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 34024, + "src": "6440:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6440:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33964, + "name": "identifiers", + "nodeType": "VariableDeclaration", + "scope": 34024, + "src": "6460:30:96", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 33962, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6460:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 33963, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6460:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 33967, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 34024, + "src": "6496:27:96", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 33965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6496:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 33966, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6496:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6434:93:96" + }, + "returnParameters": { + "id": 33969, + "nodeType": "ParameterList", + "parameters": [], + "src": "6537:0:96" + }, + "scope": 34897, + "src": "6402:566:96", + "stateMutability": "nonpayable", + "superFunction": 36081, + "visibility": "external" + }, + { + "body": { + "id": 34194, + "nodeType": "Block", + "src": "8007:1080:96", + "statements": [ + { + "assignments": [ + 34048 + ], + "declarations": [ + { + "constant": false, + "id": 34048, + "name": "totalAttestations", + "nodeType": "VariableDeclaration", + "scope": 34194, + "src": "8013:25:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8013:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34049, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "8013:25:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34050, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8045:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 34051, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34033, + "src": "8064:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 34052, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "8044:36:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34054, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34026, + "src": "8102:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34055, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34029, + "src": "8114:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "id": 34053, + "name": "getNumAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34499, + "src": "8083:18:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (bytes32,address[] memory) view returns (uint256,uint256[] memory)" + } + }, + "id": 34056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8083:46:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "src": "8044:85:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34058, + "nodeType": "ExpressionStatement", + "src": "8044:85:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34059, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34036, + "src": "8136:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34063, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8161:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8147:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 34060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8151:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34061, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8151:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 34064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8147:32:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "8136:43:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34066, + "nodeType": "ExpressionStatement", + "src": "8136:43:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34067, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34039, + "src": "8185:7:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34071, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8209:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8195:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 34068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8199:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34069, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8199:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 34072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8195:32:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "8185:42:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34074, + "nodeType": "ExpressionStatement", + "src": "8185:42:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34075, + "name": "issuedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34042, + "src": "8233:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34079, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8258:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8245:12:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint64[] memory)" + }, + "typeName": { + "baseType": { + "id": 34076, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8249:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34077, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8249:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", + "typeString": "uint64[]" + } + } + }, + "id": 34080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8245:31:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory", + "typeString": "uint64[] memory" + } + }, + "src": "8233:43:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "id": 34082, + "nodeType": "ExpressionStatement", + "src": "8233:43:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34083, + "name": "publishedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34045, + "src": "8282:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34087, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8310:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8297:12:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint64[] memory)" + }, + "typeName": { + "baseType": { + "id": 34084, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8301:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34085, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8301:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", + "typeString": "uint64[]" + } + } + }, + "id": 34088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8297:31:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory", + "typeString": "uint64[] memory" + } + }, + "src": "8282:46:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "id": 34090, + "nodeType": "ExpressionStatement", + "src": "8282:46:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34091, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8335:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 34092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8355:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8335:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34094, + "nodeType": "ExpressionStatement", + "src": "8335:21:96" + }, + { + "assignments": [ + 34098 + ], + "declarations": [ + { + "constant": false, + "id": 34098, + "name": "attestationsPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34194, + "src": "8362:51:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 34096, + "name": "OwnershipAttestation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 33754, + "src": "8362:20:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + } + }, + "id": 34097, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8362:22:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34099, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "8362:51:96" + }, + { + "body": { + "id": 34185, + "nodeType": "Block", + "src": "8481:528:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34115, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8489:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34116, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "8513:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34118, + "indexExpression": { + "argumentTypes": null, + "id": 34117, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34026, + "src": "8538:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8513:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34122, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34119, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34029, + "src": "8550:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 34121, + "indexExpression": { + "argumentTypes": null, + "id": 34120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34101, + "src": "8565:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8550:17:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8513:55:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "src": "8489:79:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34124, + "nodeType": "ExpressionStatement", + "src": "8489:79:96" + }, + { + "body": { + "id": 34183, + "nodeType": "Block", + "src": "8644:359:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34140, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34036, + "src": "8654:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34142, + "indexExpression": { + "argumentTypes": null, + "id": 34141, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8663:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8654:27:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34143, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8684:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34145, + "indexExpression": { + "argumentTypes": null, + "id": 34144, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8706:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8684:24:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34146, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 33747, + "src": "8684:32:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8654:62:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34148, + "nodeType": "ExpressionStatement", + "src": "8654:62:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34149, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34039, + "src": "8726:7:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34151, + "indexExpression": { + "argumentTypes": null, + "id": 34150, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8734:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8726:26:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34152, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8755:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34154, + "indexExpression": { + "argumentTypes": null, + "id": 34153, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8777:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8755:24:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signer", + "nodeType": "MemberAccess", + "referencedDeclaration": 33749, + "src": "8755:31:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8726:60:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34157, + "nodeType": "ExpressionStatement", + "src": "8726:60:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34158, + "name": "issuedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34042, + "src": "8796:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "id": 34160, + "indexExpression": { + "argumentTypes": null, + "id": 34159, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8806:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8796:28:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34161, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8827:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34163, + "indexExpression": { + "argumentTypes": null, + "id": 34162, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8849:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8827:24:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "issuedOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 33751, + "src": "8827:33:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8796:64:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34166, + "nodeType": "ExpressionStatement", + "src": "8796:64:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34167, + "name": "publishedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34045, + "src": "8870:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + "id": 34169, + "indexExpression": { + "argumentTypes": null, + "id": 34168, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8883:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8870:31:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34170, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8904:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34172, + "indexExpression": { + "argumentTypes": null, + "id": 34171, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8926:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8904:24:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "publishedOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 33753, + "src": "8904:36:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8870:70:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34175, + "nodeType": "ExpressionStatement", + "src": "8870:70:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34176, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8950:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8992:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34177, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34048, + "src": "8970:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "8970:21:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8970:24:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8950:44:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34182, + "nodeType": "ExpressionStatement", + "src": "8950:44:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34129, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8596:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34130, + "name": "attestationsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34098, + "src": "8600:21:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + } + }, + "id": 34131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8600:28:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8596:32:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34184, + "initializationExpression": { + "assignments": [ + 34126 + ], + "declarations": [ + { + "constant": false, + "id": 34126, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 34184, + "src": "8581:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8581:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34128, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8593:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8581:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34133, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8630:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8640:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34134, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34126, + "src": "8634:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "8634:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8634:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8630:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34139, + "nodeType": "ExpressionStatement", + "src": "8630:12:96" + }, + "nodeType": "ForStatement", + "src": "8576:427:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34104, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34101, + "src": "8440:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34105, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34029, + "src": "8444:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 34106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8444:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8440:25:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34186, + "initializationExpression": { + "assignments": [ + 34101 + ], + "declarations": [ + { + "constant": false, + "id": 34101, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34186, + "src": "8425:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8425:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34103, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8437:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8425:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34108, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34101, + "src": "8467:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8477:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34109, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34101, + "src": "8471:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "8471:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8471:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8467:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34114, + "nodeType": "ExpressionStatement", + "src": "8467:12:96" + }, + "nodeType": "ForStatement", + "src": "8420:589:96" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34187, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34033, + "src": "9022:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 34188, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34036, + "src": "9039:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 34189, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34039, + "src": "9049:7:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 34190, + "name": "issuedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34042, + "src": "9058:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + }, + { + "argumentTypes": null, + "id": 34191, + "name": "publishedOns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34045, + "src": "9069:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[] memory" + } + } + ], + "id": 34192, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9021:61:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$", + "typeString": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)" + } + }, + "functionReturnParameters": 34046, + "id": 34193, + "nodeType": "Return", + "src": "9014:68:96" + } + ] + }, + "documentation": "@notice Returns info about attestations for `identifier` produced by \n signers of `trustedIssuers`\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return countsPerIssuer Array of number of attestations returned per issuer\n For m (== sum([0])) found attestations: \n@return accounts Array of m accounts \n@return signers Array of m signers\n@return issuedOns Array of m issuedOns\n@return publishedOns Array of m publishedOns\n@dev Adds attestation info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)", + "id": 34195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lookupAttestations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34026, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7735:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34025, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7735:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34029, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7755:33:96", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7755:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34028, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7755:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7734:55:96" + }, + "returnParameters": { + "id": 34046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34033, + "name": "countsPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7832:32:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 34031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7832:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34032, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7832:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34036, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7872:25:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7872:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34035, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7872:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34039, + "name": "signers", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7905:24:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7905:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34038, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7905:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34042, + "name": "issuedOns", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7937:25:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[]" + }, + "typeName": { + "baseType": { + "id": 34040, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "7937:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34041, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7937:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", + "typeString": "uint64[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34045, + "name": "publishedOns", + "nodeType": "VariableDeclaration", + "scope": 34195, + "src": "7970:28:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", + "typeString": "uint64[]" + }, + "typeName": { + "baseType": { + "id": 34043, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "7970:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 34044, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7970:8:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", + "typeString": "uint64[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7824:180:96" + }, + "scope": 34897, + "src": "7707:1380:96", + "stateMutability": "view", + "superFunction": 36104, + "visibility": "external" + }, + { + "body": { + "id": 34301, + "nodeType": "Block", + "src": "9812:619:96", + "statements": [ + { + "assignments": [ + 34210 + ], + "declarations": [ + { + "constant": false, + "id": 34210, + "name": "totalIdentifiers", + "nodeType": "VariableDeclaration", + "scope": 34301, + "src": "9818:24:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9818:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34211, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9818:24:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34212, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34210, + "src": "9849:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 34213, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34204, + "src": "9867:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 34214, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "9848:35:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34216, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34197, + "src": "9904:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34217, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34200, + "src": "9913:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "id": 34215, + "name": "getNumIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34574, + "src": "9886:17:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,address[] memory) view returns (uint256,uint256[] memory)" + } + }, + "id": 34218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9886:42:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "src": "9848:80:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34220, + "nodeType": "ExpressionStatement", + "src": "9848:80:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34221, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34207, + "src": "9935:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34225, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34210, + "src": "9963:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "9949:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 34222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9953:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34223, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9953:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 34226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9949:31:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "src": "9935:45:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 34228, + "nodeType": "ExpressionStatement", + "src": "9935:45:96" + }, + { + "assignments": [ + 34232 + ], + "declarations": [ + { + "constant": false, + "id": 34232, + "name": "identifiersPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34301, + "src": "9986:37:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 34230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9986:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34231, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9986:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34233, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9986:37:96" + }, + { + "assignments": [ + 34235 + ], + "declarations": [ + { + "constant": false, + "id": 34235, + "name": "currIndex", + "nodeType": "VariableDeclaration", + "scope": 34301, + "src": "10030:17:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34234, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10030:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34237, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10050:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10030:21:96" + }, + { + "body": { + "id": 34295, + "nodeType": "Block", + "src": "10119:265:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34253, + "name": "identifiersPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34232, + "src": "10127:20:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34254, + "name": "addressToIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33768, + "src": "10150:20:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[] storage ref))" + } + }, + "id": 34256, + "indexExpression": { + "argumentTypes": null, + "id": 34255, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34197, + "src": "10171:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10150:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[] storage ref)" + } + }, + "id": 34260, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34257, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34200, + "src": "10180:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 34259, + "indexExpression": { + "argumentTypes": null, + "id": 34258, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34239, + "src": "10195:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10180:17:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10150:48:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "src": "10127:71:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 34262, + "nodeType": "ExpressionStatement", + "src": "10127:71:96" + }, + { + "body": { + "id": 34293, + "nodeType": "Block", + "src": "10273:105:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34278, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34207, + "src": "10283:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 34280, + "indexExpression": { + "argumentTypes": null, + "id": 34279, + "name": "currIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34235, + "src": "10295:9:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10283:22:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34281, + "name": "identifiersPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34232, + "src": "10308:20:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 34283, + "indexExpression": { + "argumentTypes": null, + "id": 34282, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34264, + "src": "10329:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10308:23:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10283:48:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34285, + "nodeType": "ExpressionStatement", + "src": "10283:48:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34286, + "name": "currIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34235, + "src": "10341:9:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10367:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34287, + "name": "currIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34235, + "src": "10353:9:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "10353:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10353:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10341:28:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34292, + "nodeType": "ExpressionStatement", + "src": "10341:28:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34267, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34264, + "src": "10226:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34268, + "name": "identifiersPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34232, + "src": "10230:20:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 34269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10230:27:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10226:31:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34294, + "initializationExpression": { + "assignments": [ + 34264 + ], + "declarations": [ + { + "constant": false, + "id": 34264, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 34294, + "src": "10211:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10211:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34266, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10223:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10211:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34271, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34264, + "src": "10259:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10269:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34272, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34264, + "src": "10263:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "10263:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10263:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10259:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34277, + "nodeType": "ExpressionStatement", + "src": "10259:12:96" + }, + "nodeType": "ForStatement", + "src": "10206:172:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34242, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34239, + "src": "10078:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34243, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34200, + "src": "10082:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 34244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10082:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10078:25:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34296, + "initializationExpression": { + "assignments": [ + 34239 + ], + "declarations": [ + { + "constant": false, + "id": 34239, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34296, + "src": "10063:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10063:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34241, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10075:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10063:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34246, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34239, + "src": "10105:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10115:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34247, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34239, + "src": "10109:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "10109:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10109:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10105:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34252, + "nodeType": "ExpressionStatement", + "src": "10105:12:96" + }, + "nodeType": "ForStatement", + "src": "10058:326:96" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34297, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34204, + "src": "10397:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 34298, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34207, + "src": "10414:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "id": 34299, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10396:30:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "tuple(uint256[] memory,bytes32[] memory)" + } + }, + "functionReturnParameters": 34208, + "id": 34300, + "nodeType": "Return", + "src": "10389:37:96" + } + ] + }, + "documentation": "@notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifier mappings will be used\n@return countsPerIssuer Array of number of identifiers returned per issuer\n@return identifiers Array (length == sum([0])) of identifiers\n@dev Adds identifier info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)", + "id": 34302, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lookupIdentifiers", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34197, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34302, + "src": "9659:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9659:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34200, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 34302, + "src": "9676:33:96", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9676:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34199, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9676:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9658:52:96" + }, + "returnParameters": { + "id": 34208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34204, + "name": "countsPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34302, + "src": "9746:32:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 34202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9746:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34203, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9746:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34207, + "name": "identifiers", + "nodeType": "VariableDeclaration", + "scope": 34302, + "src": "9780:28:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 34205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9780:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34206, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9780:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9745:64:96" + }, + "scope": 34897, + "src": "9632:799:96", + "stateMutability": "view", + "superFunction": 36118, + "visibility": "external" + }, + { + "body": { + "id": 34360, + "nodeType": "Block", + "src": "11329:571:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 34328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34325, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34310, + "src": "11488:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 34322, + "name": "getAccounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8548, + "src": "11447:11:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$", + "typeString": "function () view returns (contract IAccounts)" + } + }, + "id": 34323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11447:13:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAccounts_$9064", + "typeString": "contract IAccounts" + } + }, + "id": 34324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "attestationSignerToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 8839, + "src": "11447:40:96", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view external returns (address)" + } + }, + "id": 34326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11447:48:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 34327, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34306, + "src": "11499:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11447:58:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f722074686520697373756572", + "id": 34329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11513:71:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61", + "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\"" + }, + "value": "Signer is not a currently authorized AttestationSigner for the issuer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61", + "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\"" + } + ], + "id": 34321, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "11432:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11432:158:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34331, + "nodeType": "ExpressionStatement", + "src": "11432:158:96" + }, + { + "assignments": [ + 34333 + ], + "declarations": [ + { + "constant": false, + "id": 34333, + "name": "structHash", + "nodeType": "VariableDeclaration", + "scope": 34360, + "src": "11596:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34332, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11596:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34341, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34335, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34304, + "src": "11642:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34336, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34306, + "src": "11654:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34337, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34308, + "src": "11662:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34338, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34310, + "src": "11671:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34339, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34312, + "src": "11679:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34334, + "name": "getUniqueAttestationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34389, + "src": "11617:24:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$", + "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)" + } + }, + "id": 34340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11617:71:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11596:92:96" + }, + { + "assignments": [ + 34343 + ], + "declarations": [ + { + "constant": false, + "id": 34343, + "name": "guessedSigner", + "nodeType": "VariableDeclaration", + "scope": 34360, + "src": "11694:21:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11694:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34352, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34346, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33774, + "src": "11761:21:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34347, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34333, + "src": "11790:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34348, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34314, + "src": "11808:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 34349, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34316, + "src": "11817:1:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34350, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34318, + "src": "11826:1:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 34344, + "name": "Signatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6902, + "src": "11718:10:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Signatures_$6902_$", + "typeString": "type(library Signatures)" + } + }, + "id": 34345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSignerOfTypedDataHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 6901, + "src": "11718:35:96", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 34351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11718:115:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11694:139:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 34356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34354, + "name": "guessedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34343, + "src": "11847:13:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 34355, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34310, + "src": "11864:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11847:23:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e617475726520697320696e76616c6964", + "id": 34357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11872:22:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f", + "typeString": "literal_string \"Signature is invalid\"" + }, + "value": "Signature is invalid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f", + "typeString": "literal_string \"Signature is invalid\"" + } + ], + "id": 34353, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "11839:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11839:56:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34359, + "nodeType": "ExpressionStatement", + "src": "11839:56:96" + } + ] + }, + "documentation": "@notice Validates the given attestation and signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if attestation has been revoked\n@dev Throws if signer is not an authorized AttestationSigner of the issuer", + "id": 34361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "validateAttestationSig", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34304, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11169:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34303, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11169:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34306, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11193:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11193:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34308, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11213:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11213:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34310, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11234:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11234:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34312, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11254:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 34311, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "11254:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34314, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11275:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 34313, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11275:5:96", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34316, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11288:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34315, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11288:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34318, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 34361, + "src": "11303:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11303:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11163:153:96" + }, + "returnParameters": { + "id": 34320, + "nodeType": "ParameterList", + "parameters": [], + "src": "11329:0:96" + }, + "scope": 34897, + "src": "11132:768:96", + "stateMutability": "view", + "superFunction": 36137, + "visibility": "public" + }, + { + "body": { + "id": 34388, + "nodeType": "Block", + "src": "12078:217:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34379, + "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33783, + "src": "12138:37:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34380, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34363, + "src": "12187:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34381, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34365, + "src": "12209:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34382, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34367, + "src": "12227:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34383, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34369, + "src": "12246:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34384, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34371, + "src": "12264:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "argumentTypes": null, + "id": 34377, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42893, + "src": "12116:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 34378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12116:10:96", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 34385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12116:166:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 34376, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "12097:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 34386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12097:193:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 34375, + "id": 34387, + "nodeType": "Return", + "src": "12084:206:96" + } + ] + }, + "documentation": null, + "id": 34389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUniqueAttestationHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34363, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "11943:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34362, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11943:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34365, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "11967:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11967:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34367, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "11987:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11987:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34369, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "12008:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12008:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34371, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "12028:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 34370, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "12028:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11937:110:96" + }, + "returnParameters": { + "id": 34375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34374, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 34389, + "src": "12069:7:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34373, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12069:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12068:9:96" + }, + "scope": 34897, + "src": "11904:391:96", + "stateMutability": "pure", + "superFunction": 36152, + "visibility": "public" + }, + { + "body": { + "id": 34423, + "nodeType": "Block", + "src": "12450:444:96", + "statements": [ + { + "assignments": [ + 34393 + ], + "declarations": [ + { + "constant": false, + "id": 34393, + "name": "chainId", + "nodeType": "VariableDeclaration", + "scope": 34423, + "src": "12456:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12456:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34394, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12456:15:96" + }, + { + "externalReferences": [ + { + "chainId": { + "declaration": 34393, + "isOffset": false, + "isSlot": false, + "src": "12494:7:96", + "valueSize": 1 + } + } + ], + "id": 34395, + "nodeType": "InlineAssembly", + "operations": "{ chainId := chainid() }", + "src": "12477:41:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34396, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33774, + "src": "12524:21:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 34401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12606:84:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 34400, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "12585:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 34402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12585:115:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4665646572617465644174746573746174696f6e73", + "id": 34405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12726:23:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75", + "typeString": "literal_string \"FederatedAttestations\"" + }, + "value": "FederatedAttestations" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75", + "typeString": "literal_string \"FederatedAttestations\"" + } + ], + "id": 34404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12720:5:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 34406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12720:30:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 34403, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "12710:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 34407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12710:41:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "312e30", + "id": 34409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12771:5:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + }, + "value": "1.0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + } + ], + "id": 34408, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "12761:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 34410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12761:16:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34411, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34393, + "src": "12787:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34413, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43128, + "src": "12812:4:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FederatedAttestations_$34897", + "typeString": "contract FederatedAttestations" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_FederatedAttestations_$34897", + "typeString": "contract FederatedAttestations" + } + ], + "id": 34412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12804:7:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 34414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12804:13:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 34398, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42893, + "src": "12565:3:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 34399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12565:10:96", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 34415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12565:260:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 34397, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42900, + "src": "12548:9:96", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 34416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12548:283:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "12524:307:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34418, + "nodeType": "ExpressionStatement", + "src": "12524:307:96" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34420, + "name": "eip712DomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33774, + "src": "12867:21:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 34419, + "name": "EIP712DomainSeparatorSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33793, + "src": "12842:24:96", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 34421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12842:47:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34422, + "nodeType": "EmitStatement", + "src": "12837:52:96" + } + ] + }, + "documentation": "@notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.", + "id": 34424, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setEip712DomainSeparator", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34390, + "nodeType": "ParameterList", + "parameters": [], + "src": "12438:2:96" + }, + "returnParameters": { + "id": 34391, + "nodeType": "ParameterList", + "parameters": [], + "src": "12450:0:96" + }, + "scope": 34897, + "src": "12405:489:96", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 34498, + "nodeType": "Block", + "src": "13533:478:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34437, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34432, + "src": "13539:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 34438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13559:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13539:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34440, + "nodeType": "ExpressionStatement", + "src": "13539:21:96" + }, + { + "assignments": [ + 34442 + ], + "declarations": [ + { + "constant": false, + "id": 34442, + "name": "numAttestationsForIssuer", + "nodeType": "VariableDeclaration", + "scope": 34498, + "src": "13566:32:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13566:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34443, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13566:32:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34444, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34435, + "src": "13604:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34448, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34429, + "src": "13636:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13636:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "13622:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 34445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13626:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34446, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13626:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 34450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13622:36:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "src": "13604:54:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 34452, + "nodeType": "ExpressionStatement", + "src": "13604:54:96" + }, + { + "body": { + "id": 34492, + "nodeType": "Block", + "src": "13726:232:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34468, + "name": "numAttestationsForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34442, + "src": "13734:24:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34469, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "13761:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34471, + "indexExpression": { + "argumentTypes": null, + "id": 34470, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34426, + "src": "13786:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13761:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34475, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34472, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34429, + "src": "13798:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34474, + "indexExpression": { + "argumentTypes": null, + "id": 34473, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34454, + "src": "13813:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13798:17:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13761:55:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "id": 34476, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13761:62:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13734:89:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34478, + "nodeType": "ExpressionStatement", + "src": "13734:89:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34479, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34432, + "src": "13831:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34482, + "name": "numAttestationsForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34442, + "src": "13873:24:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 34480, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34432, + "src": "13851:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "13851:21:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13851:47:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13831:67:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34485, + "nodeType": "ExpressionStatement", + "src": "13831:67:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34486, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34435, + "src": "13906:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 34488, + "indexExpression": { + "argumentTypes": null, + "id": 34487, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34454, + "src": "13922:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13906:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 34489, + "name": "numAttestationsForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34442, + "src": "13927:24:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13906:45:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34491, + "nodeType": "ExpressionStatement", + "src": "13906:45:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34457, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34454, + "src": "13685:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34458, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34429, + "src": "13689:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13689:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13685:25:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34493, + "initializationExpression": { + "assignments": [ + 34454 + ], + "declarations": [ + { + "constant": false, + "id": 34454, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34493, + "src": "13670:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13670:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34456, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13682:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13670:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34461, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34454, + "src": "13712:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13722:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34462, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34454, + "src": "13716:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "13716:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13716:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13712:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34467, + "nodeType": "ExpressionStatement", + "src": "13712:12:96" + }, + "nodeType": "ForStatement", + "src": "13665:293:96" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34494, + "name": "totalAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34432, + "src": "13971:17:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 34495, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34435, + "src": "13990:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 34496, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13970:36:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "functionReturnParameters": 34436, + "id": 34497, + "nodeType": "Return", + "src": "13963:43:96" + } + ] + }, + "documentation": "@notice Helper function for lookupAttestations to calculate the\ntotal number of attestations completed for an identifier\nby each trusted issuer\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return totalAttestations Sum total of attestations found\n@return countsPerIssuer Array of number of attestations found per issuer", + "id": 34499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumAttestations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34426, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34499, + "src": "13382:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34425, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13382:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34429, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 34499, + "src": "13402:31:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13402:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34428, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13402:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13381:53:96" + }, + "returnParameters": { + "id": 34436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34432, + "name": "totalAttestations", + "nodeType": "VariableDeclaration", + "scope": 34499, + "src": "13470:25:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13470:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34435, + "name": "countsPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34499, + "src": "13497:32:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 34433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13497:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34434, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13497:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13469:61:96" + }, + "scope": 34897, + "src": "13354:657:96", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 34573, + "nodeType": "Block", + "src": "14636:463:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34512, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34507, + "src": "14642:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 34513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14661:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14642:20:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34515, + "nodeType": "ExpressionStatement", + "src": "14642:20:96" + }, + { + "assignments": [ + 34517 + ], + "declarations": [ + { + "constant": false, + "id": 34517, + "name": "numIdentifiersForIssuer", + "nodeType": "VariableDeclaration", + "scope": 34573, + "src": "14668:31:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14668:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34518, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14668:31:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34519, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34510, + "src": "14705:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34523, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34504, + "src": "14737:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14737:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14723:13:96", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 34520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14727:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34521, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14727:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 34525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14723:36:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory", + "typeString": "uint256[] memory" + } + }, + "src": "14705:54:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 34527, + "nodeType": "ExpressionStatement", + "src": "14705:54:96" + }, + { + "body": { + "id": 34567, + "nodeType": "Block", + "src": "14827:220:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34543, + "name": "numIdentifiersForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34517, + "src": "14835:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34544, + "name": "addressToIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33768, + "src": "14861:20:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[] storage ref))" + } + }, + "id": 34546, + "indexExpression": { + "argumentTypes": null, + "id": 34545, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34501, + "src": "14882:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14861:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[] storage ref)" + } + }, + "id": 34550, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34547, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34504, + "src": "14891:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34549, + "indexExpression": { + "argumentTypes": null, + "id": 34548, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34529, + "src": "14906:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14891:17:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14861:48:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 34551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14861:55:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14835:81:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34553, + "nodeType": "ExpressionStatement", + "src": "14835:81:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34554, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34507, + "src": "14924:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34557, + "name": "numIdentifiersForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34517, + "src": "14964:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 34555, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34507, + "src": "14943:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "14943:20:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14943:45:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14924:64:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34560, + "nodeType": "ExpressionStatement", + "src": "14924:64:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34561, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34510, + "src": "14996:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 34563, + "indexExpression": { + "argumentTypes": null, + "id": 34562, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34529, + "src": "15012:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14996:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 34564, + "name": "numIdentifiersForIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34517, + "src": "15017:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14996:44:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34566, + "nodeType": "ExpressionStatement", + "src": "14996:44:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34532, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34529, + "src": "14786:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34533, + "name": "trustedIssuers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34504, + "src": "14790:14:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 34534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14790:21:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14786:25:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34568, + "initializationExpression": { + "assignments": [ + 34529 + ], + "declarations": [ + { + "constant": false, + "id": 34529, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34568, + "src": "14771:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14771:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34531, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14783:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14771:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34536, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34529, + "src": "14813:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14823:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34537, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34529, + "src": "14817:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "14817:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14817:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14813:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34542, + "nodeType": "ExpressionStatement", + "src": "14813:12:96" + }, + "nodeType": "ForStatement", + "src": "14766:281:96" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 34569, + "name": "totalIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34507, + "src": "15060:16:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 34570, + "name": "countsPerIssuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34510, + "src": "15078:15:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 34571, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15059:35:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256[] memory)" + } + }, + "functionReturnParameters": 34511, + "id": 34572, + "nodeType": "Return", + "src": "15052:42:96" + } + ] + }, + "documentation": "@notice Helper function for lookupIdentifiers to calculate the\ntotal number of identifiers completed for an identifier\nby each trusted issuer\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifiers will be included\n@return totalIdentifiers Sum total of identifiers found\n@return countsPerIssuer Array of number of identifiers found per issuer", + "id": 34574, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumIdentifiers", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34501, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34574, + "src": "14489:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34500, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14489:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34504, + "name": "trustedIssuers", + "nodeType": "VariableDeclaration", + "scope": 34574, + "src": "14506:31:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 34502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14506:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 34503, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14506:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14488:50:96" + }, + "returnParameters": { + "id": 34511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34507, + "name": "totalIdentifiers", + "nodeType": "VariableDeclaration", + "scope": 34574, + "src": "14574:24:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14574:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34510, + "name": "countsPerIssuer", + "nodeType": "VariableDeclaration", + "scope": 34574, + "src": "14600:32:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 34508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14600:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34509, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14600:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14573:60:96" + }, + "scope": 34897, + "src": "14462:637:96", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 34708, + "nodeType": "Block", + "src": "15632:1427:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15653:93:96", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34588, + "name": "revokedAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33772, + "src": "15654:19:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 34596, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34590, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "15699:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34591, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "15711:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34592, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "15719:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34593, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34582, + "src": "15728:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34594, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34584, + "src": "15736:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34589, + "name": "getUniqueAttestationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34389, + "src": "15674:24:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$", + "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)" + } + }, + "id": 34595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15674:71:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15654:92:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4174746573746174696f6e20686173206265656e207265766f6b6564", + "id": 34598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15754:30:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909", + "typeString": "literal_string \"Attestation has been revoked\"" + }, + "value": "Attestation has been revoked" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909", + "typeString": "literal_string \"Attestation has been revoked\"" + } + ], + "id": 34587, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "15638:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15638:152:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34600, + "nodeType": "ExpressionStatement", + "src": "15638:152:96" + }, + { + "assignments": [ + 34602 + ], + "declarations": [ + { + "constant": false, + "id": 34602, + "name": "numExistingAttestations", + "nodeType": "VariableDeclaration", + "scope": 34708, + "src": "15796:31:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15796:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34609, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34603, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "15830:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34605, + "indexExpression": { + "argumentTypes": null, + "id": 34604, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "15855:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15830:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34607, + "indexExpression": { + "argumentTypes": null, + "id": 34606, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "15867:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15830:44:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "id": 34608, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15830:51:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15796:85:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15930:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34611, + "name": "numExistingAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34602, + "src": "15902:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "15902:27:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15902:30:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 34615, + "name": "MAX_ATTESTATIONS_PER_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33786, + "src": "15936:31:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15902:65:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572", + "id": 34617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15975:52:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d", + "typeString": "literal_string \"Max attestations already registered for identifier\"" + }, + "value": "Max attestations already registered for identifier" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d", + "typeString": "literal_string \"Max attestations already registered for identifier\"" + } + ], + "id": 34610, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "15887:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15887:146:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34619, + "nodeType": "ExpressionStatement", + "src": "15887:146:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16103:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34621, + "name": "addressToIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33768, + "src": "16054:20:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[] storage ref))" + } + }, + "id": 34623, + "indexExpression": { + "argumentTypes": null, + "id": 34622, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "16075:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16054:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[] storage ref)" + } + }, + "id": 34625, + "indexExpression": { + "argumentTypes": null, + "id": 34624, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "16084:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16054:37:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 34626, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16054:44:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "16054:48:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16054:51:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 34630, + "name": "MAX_IDENTIFIERS_PER_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33789, + "src": "16109:27:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16054:82:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e74", + "id": 34632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16144:48:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa", + "typeString": "literal_string \"Max identifiers already registered for account\"" + }, + "value": "Max identifiers already registered for account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa", + "typeString": "literal_string \"Max identifiers already registered for account\"" + } + ], + "id": 34620, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "16039:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16039:159:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34634, + "nodeType": "ExpressionStatement", + "src": "16039:159:96" + }, + { + "body": { + "id": 34663, + "nodeType": "Block", + "src": "16268:379:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 34659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34650, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "16511:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34652, + "indexExpression": { + "argumentTypes": null, + "id": 34651, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "16536:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16511:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34654, + "indexExpression": { + "argumentTypes": null, + "id": 34653, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "16548:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16511:44:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "id": 34656, + "indexExpression": { + "argumentTypes": null, + "id": 34655, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34636, + "src": "16556:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16511:47:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "id": 34657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 33747, + "src": "16511:55:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 34658, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "16570:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16511:66:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4174746573746174696f6e20666f722074686973206163636f756e7420616c726561647920657869737473", + "id": 34660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16587:45:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585", + "typeString": "literal_string \"Attestation for this account already exists\"" + }, + "value": "Attestation for this account already exists" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585", + "typeString": "literal_string \"Attestation for this account already exists\"" + } + ], + "id": 34649, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "src": "16494:7:96", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 34661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16494:146:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34662, + "nodeType": "ExpressionStatement", + "src": "16494:146:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34639, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34636, + "src": "16225:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 34640, + "name": "numExistingAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34602, + "src": "16229:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16225:27:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34664, + "initializationExpression": { + "assignments": [ + 34636 + ], + "declarations": [ + { + "constant": false, + "id": 34636, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34664, + "src": "16210:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16210:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34638, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16222:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "16210:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34642, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34636, + "src": "16254:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16264:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34643, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34636, + "src": "16258:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "16258:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16258:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16254:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34648, + "nodeType": "ExpressionStatement", + "src": "16254:12:96" + }, + "nodeType": "ForStatement", + "src": "16205:442:96" + }, + { + "assignments": [ + 34666 + ], + "declarations": [ + { + "constant": false, + "id": 34666, + "name": "publishedOn", + "nodeType": "VariableDeclaration", + "scope": 34708, + "src": "16652:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 34665, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "16652:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34671, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34668, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42896, + "src": "16680:5:96", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 34669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16680:15:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 34667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16673:6:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": "uint64" + }, + "id": 34670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16673:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16652:44:96" + }, + { + "assignments": [ + 34673 + ], + "declarations": [ + { + "constant": false, + "id": 34673, + "name": "attestation", + "nodeType": "VariableDeclaration", + "scope": 34708, + "src": "16702:39:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + }, + "typeName": { + "contractScope": null, + "id": 34672, + "name": "OwnershipAttestation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 33754, + "src": "16702:20:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34680, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34675, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "16772:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34676, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34582, + "src": "16787:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34677, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34584, + "src": "16801:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 34678, + "name": "publishedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34666, + "src": "16817:11:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34674, + "name": "OwnershipAttestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33754, + "src": "16744:20:96", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_OwnershipAttestation_$33754_storage_ptr_$", + "typeString": "type(struct FederatedAttestations.OwnershipAttestation storage pointer)" + } + }, + "id": 34679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16744:90:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16702:132:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34687, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34673, + "src": "16890:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34681, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "16840:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34684, + "indexExpression": { + "argumentTypes": null, + "id": 34682, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "16865:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16840:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34685, + "indexExpression": { + "argumentTypes": null, + "id": 34683, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "16877:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16840:44:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "id": 34686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16840:49:96", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_OwnershipAttestation_$33754_storage_$returns$_t_uint256_$", + "typeString": "function (struct FederatedAttestations.OwnershipAttestation storage ref) returns (uint256)" + } + }, + "id": 34688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16840:62:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34689, + "nodeType": "ExpressionStatement", + "src": "16840:62:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34696, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "16951:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34690, + "name": "addressToIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33768, + "src": "16908:20:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[] storage ref))" + } + }, + "id": 34693, + "indexExpression": { + "argumentTypes": null, + "id": 34691, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "16929:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16908:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[] storage ref)" + } + }, + "id": 34694, + "indexExpression": { + "argumentTypes": null, + "id": 34692, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "16938:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16908:37:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 34695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16908:42:96", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) returns (uint256)" + } + }, + "id": 34697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16908:54:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34698, + "nodeType": "ExpressionStatement", + "src": "16908:54:96" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34700, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34576, + "src": "16995:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34701, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34578, + "src": "17007:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34702, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34580, + "src": "17015:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34703, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34582, + "src": "17024:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34704, + "name": "issuedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34584, + "src": "17032:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "id": 34705, + "name": "publishedOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34666, + "src": "17042:11:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34699, + "name": "AttestationRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33807, + "src": "16973:21:96", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,address,address,uint64,uint64)" + } + }, + "id": 34706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16973:81:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34707, + "nodeType": "EmitStatement", + "src": "16968:86:96" + } + ] + }, + "documentation": "@notice Registers an attestation\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation", + "id": 34709, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerAttestation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34576, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34709, + "src": "15519:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15519:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34578, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 34709, + "src": "15543:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15543:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34580, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34709, + "src": "15563:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15563:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34582, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 34709, + "src": "15584:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15584:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34584, + "name": "issuedOn", + "nodeType": "VariableDeclaration", + "scope": 34709, + "src": "15604:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 34583, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "15604:6:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15513:110:96" + }, + "returnParameters": { + "id": 34586, + "nodeType": "ParameterList", + "parameters": [], + "src": "15632:0:96" + }, + "scope": 34897, + "src": "15484:1575:96", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 34895, + "nodeType": "Block", + "src": "17531:1776:96", + "statements": [ + { + "assignments": [ + 34721 + ], + "declarations": [ + { + "constant": false, + "id": 34721, + "name": "attestations", + "nodeType": "VariableDeclaration", + "scope": 34895, + "src": "17537:43:96", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 34719, + "name": "OwnershipAttestation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 33754, + "src": "17537:20:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + } + }, + "id": 34720, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17537:22:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34727, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34722, + "name": "identifierToAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33761, + "src": "17583:24:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$", + "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))" + } + }, + "id": 34724, + "indexExpression": { + "argumentTypes": null, + "id": 34723, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34711, + "src": "17608:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17583:36:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$", + "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + } + }, + "id": 34726, + "indexExpression": { + "argumentTypes": null, + "id": 34725, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34713, + "src": "17620:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17583:44:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17537:90:96" + }, + { + "assignments": [ + 34729 + ], + "declarations": [ + { + "constant": false, + "id": 34729, + "name": "lenAttestations", + "nodeType": "VariableDeclaration", + "scope": 34895, + "src": "17633:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17633:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34732, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34730, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "17659:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17659:19:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17633:45:96" + }, + { + "body": { + "id": 34889, + "nodeType": "Block", + "src": "17739:1508:96", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 34752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34747, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "17751:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34749, + "indexExpression": { + "argumentTypes": null, + "id": 34748, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "17764:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17751:15:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "id": 34750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 33747, + "src": "17751:23:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 34751, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34715, + "src": "17778:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17751:34:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 34755, + "nodeType": "IfStatement", + "src": "17747:67:96", + "trueBody": { + "id": 34754, + "nodeType": "Block", + "src": "17787:27:96", + "statements": [ + { + "id": 34753, + "nodeType": "Continue", + "src": "17797:8:96" + } + ] + } + }, + { + "assignments": [ + 34757 + ], + "declarations": [ + { + "constant": false, + "id": 34757, + "name": "attestation", + "nodeType": "VariableDeclaration", + "scope": 34889, + "src": "17822:39:96", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + }, + "typeName": { + "contractScope": null, + "id": 34756, + "name": "OwnershipAttestation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 33754, + "src": "17822:20:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34761, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34758, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "17864:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34760, + "indexExpression": { + "argumentTypes": null, + "id": 34759, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "17877:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17864:15:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17822:57:96" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34762, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "18080:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34763, + "name": "lenAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34729, + "src": "18085:15:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 34764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18103:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18085:19:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18080:24:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 34778, + "nodeType": "IfStatement", + "src": "18076:100:96", + "trueBody": { + "id": 34777, + "nodeType": "Block", + "src": "18106:70:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34767, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "18116:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34769, + "indexExpression": { + "argumentTypes": null, + "id": 34768, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "18129:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18116:15:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34770, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "18134:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34774, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34771, + "name": "lenAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34729, + "src": "18147:15:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 34772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18165:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18147:19:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18134:33:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "src": "18116:51:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref" + } + }, + "id": 34776, + "nodeType": "ExpressionStatement", + "src": "18116:51:96" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 34779, + "name": "attestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34721, + "src": "18183:12:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer" + } + }, + "id": 34781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18183:16:96", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 34782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18183:18:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34783, + "nodeType": "ExpressionStatement", + "src": "18183:18:96" + }, + { + "assignments": [ + 34785 + ], + "declarations": [ + { + "constant": false, + "id": 34785, + "name": "deletedIdentifier", + "nodeType": "VariableDeclaration", + "scope": 34889, + "src": "18210:22:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 34784, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18210:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34787, + "initialValue": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 34786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18235:5:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "18210:30:96" + }, + { + "assignments": [ + 34791 + ], + "declarations": [ + { + "constant": false, + "id": 34791, + "name": "identifiers", + "nodeType": "VariableDeclaration", + "scope": 34889, + "src": "18248:29:96", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 34789, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18248:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34790, + "length": null, + "nodeType": "ArrayTypeName", + "src": "18248:9:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34797, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34792, + "name": "addressToIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33768, + "src": "18280:20:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$", + "typeString": "mapping(address => mapping(address => bytes32[] storage ref))" + } + }, + "id": 34794, + "indexExpression": { + "argumentTypes": null, + "id": 34793, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34715, + "src": "18301:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18280:29:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$", + "typeString": "mapping(address => bytes32[] storage ref)" + } + }, + "id": 34796, + "indexExpression": { + "argumentTypes": null, + "id": 34795, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34713, + "src": "18310:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18280:37:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18248:69:96" + }, + { + "assignments": [ + 34799 + ], + "declarations": [ + { + "constant": false, + "id": 34799, + "name": "lenIdentifiers", + "nodeType": "VariableDeclaration", + "scope": 34889, + "src": "18325:22:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18325:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34802, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34800, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34791, + "src": "18350:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "id": 34801, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18350:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18325:43:96" + }, + { + "body": { + "id": 34852, + "nodeType": "Block", + "src": "18431:268:96", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 34821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34817, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34791, + "src": "18445:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "id": 34819, + "indexExpression": { + "argumentTypes": null, + "id": 34818, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18457:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18445:14:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 34820, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34711, + "src": "18463:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "18445:28:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 34824, + "nodeType": "IfStatement", + "src": "18441:65:96", + "trueBody": { + "id": 34823, + "nodeType": "Block", + "src": "18475:31:96", + "statements": [ + { + "id": 34822, + "nodeType": "Continue", + "src": "18487:8:96" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34825, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18519:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34826, + "name": "lenIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34799, + "src": "18524:14:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 34827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18541:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18524:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18519:23:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 34841, + "nodeType": "IfStatement", + "src": "18515:100:96", + "trueBody": { + "id": 34840, + "nodeType": "Block", + "src": "18544:71:96", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 34838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34830, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34791, + "src": "18556:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "id": 34832, + "indexExpression": { + "argumentTypes": null, + "id": 34831, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18568:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18556:14:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34833, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34791, + "src": "18573:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "id": 34837, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34834, + "name": "lenIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34799, + "src": "18585:14:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 34835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18602:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18585:18:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18573:31:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "18556:48:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 34839, + "nodeType": "ExpressionStatement", + "src": "18556:48:96" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 34842, + "name": "identifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34791, + "src": "18624:11:96", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "id": 34844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18624:15:96", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 34845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18624:17:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34846, + "nodeType": "ExpressionStatement", + "src": "18624:17:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34847, + "name": "deletedIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34785, + "src": "18651:17:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 34848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18671:4:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18651:24:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34850, + "nodeType": "ExpressionStatement", + "src": "18651:24:96" + }, + { + "id": 34851, + "nodeType": "Break", + "src": "18685:5:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34807, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18397:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 34808, + "name": "lenIdentifiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34799, + "src": "18401:14:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18397:18:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34853, + "initializationExpression": { + "assignments": [ + 34804 + ], + "declarations": [ + { + "constant": false, + "id": 34804, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 34853, + "src": "18382:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18382:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34806, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18394:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "18382:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34810, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18417:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18427:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34811, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34804, + "src": "18421:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "18421:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18421:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18417:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34816, + "nodeType": "ExpressionStatement", + "src": "18417:12:96" + }, + "nodeType": "ForStatement", + "src": "18377:322:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34855, + "name": "deletedIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34785, + "src": "18795:17:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 34854, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42895, + "src": "18788:6:96", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 34856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18788:25:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34857, + "nodeType": "ExpressionStatement", + "src": "18788:25:96" + }, + { + "assignments": [ + 34859 + ], + "declarations": [ + { + "constant": false, + "id": 34859, + "name": "attestationHash", + "nodeType": "VariableDeclaration", + "scope": 34889, + "src": "18822:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34858, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18822:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34869, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34861, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34711, + "src": "18882:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34862, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34713, + "src": "18902:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34863, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34715, + "src": "18918:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34864, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34757, + "src": "18935:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34865, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signer", + "nodeType": "MemberAccess", + "referencedDeclaration": 33749, + "src": "18935:18:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34866, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34757, + "src": "18963:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34867, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "issuedOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 33751, + "src": "18963:20:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34860, + "name": "getUniqueAttestationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34389, + "src": "18848:24:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$", + "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)" + } + }, + "id": 34868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18848:143:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18822:169:96" + }, + { + "expression": { + "argumentTypes": null, + "id": 34874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 34870, + "name": "revokedAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33772, + "src": "18999:19:96", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 34872, + "indexExpression": { + "argumentTypes": null, + "id": 34871, + "name": "attestationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34859, + "src": "19019:15:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18999:36:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 34873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19038:4:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18999:43:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34875, + "nodeType": "ExpressionStatement", + "src": "18999:43:96" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 34877, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34711, + "src": "19084:10:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 34878, + "name": "issuer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34713, + "src": "19104:6:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 34879, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34715, + "src": "19120:7:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34880, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34757, + "src": "19137:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signer", + "nodeType": "MemberAccess", + "referencedDeclaration": 33749, + "src": "19137:18:96", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34882, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34757, + "src": "19165:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "issuedOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 33751, + "src": "19165:20:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 34884, + "name": "attestation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34757, + "src": "19195:11:96", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + }, + "id": 34885, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "publishedOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 33753, + "src": "19195:23:96", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 34876, + "name": "AttestationRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33821, + "src": "19056:18:96", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint64_$returns$__$", + "typeString": "function (bytes32,address,address,address,uint64,uint64)" + } + }, + "id": 34886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19056:170:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34887, + "nodeType": "EmitStatement", + "src": "19051:175:96" + }, + { + "expression": null, + "functionReturnParameters": 34717, + "id": 34888, + "nodeType": "Return", + "src": "19234:7:96" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 34739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34737, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "17704:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 34738, + "name": "lenAttestations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34729, + "src": "17708:15:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17704:19:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 34890, + "initializationExpression": { + "assignments": [ + 34734 + ], + "declarations": [ + { + "constant": false, + "id": 34734, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 34890, + "src": "17689:9:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17689:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 34736, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 34735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17701:1:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17689:13:96" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 34745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34740, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "17725:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 34743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17735:1:96", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 34741, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34734, + "src": "17729:1:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "17729:5:96", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 34744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17729:8:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17725:12:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34746, + "nodeType": "ExpressionStatement", + "src": "17725:12:96" + }, + "nodeType": "ForStatement", + "src": "17684:1563:96" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f74206578697374", + "id": 34892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19259:42:96", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f", + "typeString": "literal_string \"Attestation to be revoked does not exist\"" + }, + "value": "Attestation to be revoked does not exist" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f", + "typeString": "literal_string \"Attestation to be revoked does not exist\"" + } + ], + "id": 34891, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 42911, + 42912 + ], + "referencedDeclaration": 42912, + "src": "19252:6:96", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 34893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19252:50:96", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34894, + "nodeType": "ExpressionStatement", + "src": "19252:50:96" + } + ] + }, + "documentation": "@notice Revokes an attestation:\n helper function for revokeAttestation and batchRevokeAttestations\n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Reverts if attestation is not found mapping identifier <-> account", + "id": 34896, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeAttestation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34711, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 34896, + "src": "17470:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34710, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17470:7:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34713, + "name": "issuer", + "nodeType": "VariableDeclaration", + "scope": 34896, + "src": "17490:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17490:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 34715, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 34896, + "src": "17506:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17506:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17469:53:96" + }, + "returnParameters": { + "id": 34717, + "nodeType": "ParameterList", + "parameters": [], + "src": "17531:0:96" + }, + "scope": 34897, + "src": "17442:1865:96", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 34898, + "src": "604:18705:96" + } + ], + "src": "0:19310:96" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/identity/FederatedAttestations.sol", + "exportedSymbols": { + "FederatedAttestations": [ + 34897 + ] + } + }, + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ] + }, + "id": 33719, + "name": "PragmaDirective", + "src": "0:24:96" + }, + { + "attributes": { + "SourceUnit": 364, + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33720, + "name": "ImportDirective", + "src": "26:59:96" + }, + { + "attributes": { + "SourceUnit": 482, + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33721, + "name": "ImportDirective", + "src": "86:63:96" + }, + { + "attributes": { + "SourceUnit": 956, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33722, + "name": "ImportDirective", + "src": "150:64:96" + }, + { + "attributes": { + "SourceUnit": 1359, + "absolutePath": "openzeppelin-solidity/contracts/utils/SafeCast.sol", + "file": "openzeppelin-solidity/contracts/utils/SafeCast.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33723, + "name": "ImportDirective", + "src": "215:60:96" + }, + { + "attributes": { + "SourceUnit": 36154, + "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol", + "file": "./interfaces/IFederatedAttestations.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33724, + "name": "ImportDirective", + "src": "277:49:96" + }, + { + "attributes": { + "SourceUnit": 9065, + "absolutePath": "project:/contracts/common/interfaces/IAccounts.sol", + "file": "../common/interfaces/IAccounts.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33725, + "name": "ImportDirective", + "src": "327:44:96" + }, + { + "attributes": { + "SourceUnit": 9108, + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33726, + "name": "ImportDirective", + "src": "372:57:96" + }, + { + "attributes": { + "SourceUnit": 5885, + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33727, + "name": "ImportDirective", + "src": "431:37:96" + }, + { + "attributes": { + "SourceUnit": 8802, + "absolutePath": "project:/contracts/common/UsingRegistryV2.sol", + "file": "../common/UsingRegistryV2.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33728, + "name": "ImportDirective", + "src": "469:39:96" + }, + { + "attributes": { + "SourceUnit": 6903, + "absolutePath": "project:/contracts/common/Signatures.sol", + "file": "../common/Signatures.sol", + "scope": 34898, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 33729, + "name": "ImportDirective", + "src": "509:34:96" + }, + { + "attributes": { + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 9107, + 36153 + ], + "contractKind": "contract", + "documentation": "@title Contract mapping identifiers to accounts", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 34897, + 8801, + 5884, + 481, + 26, + 9107, + 36153 + ], + "name": "FederatedAttestations", + "scope": 34898 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFederatedAttestations", + "referencedDeclaration": 36153, + "type": "contract IFederatedAttestations" + }, + "id": 33730, + "name": "UserDefinedTypeName", + "src": "640:22:96" + } + ], + "id": 33731, + "name": "InheritanceSpecifier", + "src": "640:22:96" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ICeloVersionedContract", + "referencedDeclaration": 9107, + "type": "contract ICeloVersionedContract" + }, + "id": 33732, + "name": "UserDefinedTypeName", + "src": "666:22:96" + } + ], + "id": 33733, + "name": "InheritanceSpecifier", + "src": "666:22:96" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Ownable", + "referencedDeclaration": 481, + "type": "contract Ownable" + }, + "id": 33734, + "name": "UserDefinedTypeName", + "src": "692:7:96" + } + ], + "id": 33735, + "name": "InheritanceSpecifier", + "src": "692:7:96" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Initializable", + "referencedDeclaration": 5884, + "type": "contract Initializable" + }, + "id": 33736, + "name": "UserDefinedTypeName", + "src": "703:13:96" + } + ], + "id": 33737, + "name": "InheritanceSpecifier", + "src": "703:13:96" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "UsingRegistryV2", + "referencedDeclaration": 8801, + "type": "contract UsingRegistryV2" + }, + "id": 33738, + "name": "UserDefinedTypeName", + "src": "720:15:96" + } + ], + "id": 33739, + "name": "InheritanceSpecifier", + "src": "720:15:96" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 363, + "type": "library SafeMath" + }, + "id": 33740, + "name": "UserDefinedTypeName", + "src": "746:8:96" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33741, + "name": "ElementaryTypeName", + "src": "759:7:96" + } + ], + "id": 33742, + "name": "UsingForDirective", + "src": "740:27:96" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeCast", + "referencedDeclaration": 1358, + "type": "library SafeCast" + }, + "id": 33743, + "name": "UserDefinedTypeName", + "src": "776:8:96" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33744, + "name": "ElementaryTypeName", + "src": "789:7:96" + } + ], + "id": 33745, + "name": "UsingForDirective", + "src": "770:27:96" + }, + { + "attributes": { + "canonicalName": "FederatedAttestations.OwnershipAttestation", + "name": "OwnershipAttestation", + "scope": 34897, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33754, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33746, + "name": "ElementaryTypeName", + "src": "835:7:96" + } + ], + "id": 33747, + "name": "VariableDeclaration", + "src": "835:15:96" + }, + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 33754, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33748, + "name": "ElementaryTypeName", + "src": "856:7:96" + } + ], + "id": 33749, + "name": "VariableDeclaration", + "src": "856:14:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 33754, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33750, + "name": "ElementaryTypeName", + "src": "876:6:96" + } + ], + "id": 33751, + "name": "VariableDeclaration", + "src": "876:15:96" + }, + { + "attributes": { + "constant": false, + "name": "publishedOn", + "scope": 33754, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33752, + "name": "ElementaryTypeName", + "src": "897:6:96" + } + ], + "id": 33753, + "name": "VariableDeclaration", + "src": "897:18:96" + } + ], + "id": 33754, + "name": "StructDefinition", + "src": "801:182:96" + }, + { + "attributes": { + "constant": false, + "name": "identifierToAttestations", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33755, + "name": "ElementaryTypeName", + "src": "1343:7:96" + }, + { + "attributes": { + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation[])" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33756, + "name": "ElementaryTypeName", + "src": "1362:7:96" + }, + { + "attributes": { + "length": null, + "type": "struct FederatedAttestations.OwnershipAttestation[]" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "OwnershipAttestation", + "referencedDeclaration": 33754, + "type": "struct FederatedAttestations.OwnershipAttestation" + }, + "id": 33757, + "name": "UserDefinedTypeName", + "src": "1373:20:96" + } + ], + "id": 33758, + "name": "ArrayTypeName", + "src": "1373:22:96" + } + ], + "id": 33759, + "name": "Mapping", + "src": "1354:42:96" + } + ], + "id": 33760, + "name": "Mapping", + "src": "1335:62:96" + } + ], + "id": 33761, + "name": "VariableDeclaration", + "src": "1335:94:96" + }, + { + "attributes": { + "constant": false, + "name": "addressToIdentifiers", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => mapping(address => bytes32[]))", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => bytes32[]))" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33762, + "name": "ElementaryTypeName", + "src": "1479:7:96" + }, + { + "attributes": { + "type": "mapping(address => bytes32[])" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 33763, + "name": "ElementaryTypeName", + "src": "1498:7:96" + }, + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33764, + "name": "ElementaryTypeName", + "src": "1509:7:96" + } + ], + "id": 33765, + "name": "ArrayTypeName", + "src": "1509:9:96" + } + ], + "id": 33766, + "name": "Mapping", + "src": "1490:29:96" + } + ], + "id": 33767, + "name": "Mapping", + "src": "1471:49:96" + } + ], + "id": 33768, + "name": "VariableDeclaration", + "src": "1471:77:96" + }, + { + "attributes": { + "constant": false, + "name": "revokedAttestations", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(bytes32 => bool)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(bytes32 => bool)" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33769, + "name": "ElementaryTypeName", + "src": "1603:7:96" + }, + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33770, + "name": "ElementaryTypeName", + "src": "1614:4:96" + } + ], + "id": 33771, + "name": "Mapping", + "src": "1595:24:96" + } + ], + "id": 33772, + "name": "VariableDeclaration", + "src": "1595:51:96" + }, + { + "attributes": { + "constant": false, + "name": "eip712DomainSeparator", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33773, + "name": "ElementaryTypeName", + "src": "1651:7:96" + } + ], + "id": 33774, + "name": "VariableDeclaration", + "src": "1651:36:96" + }, + { + "attributes": { + "constant": true, + "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "bytes32", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33775, + "name": "ElementaryTypeName", + "src": "1691:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 33776, + "name": "Identifier", + "src": "1755:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73", + "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\"" + }, + { + "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3", + "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encodePacked", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42893, + "type": "abi", + "value": "abi" + }, + "id": 33777, + "name": "Identifier", + "src": "1770:3:96" + } + ], + "id": 33778, + "name": "MemberAccess", + "src": "1770:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\"", + "value": "OwnershipAttestation(bytes32 identifier,address issuer," + }, + "id": 33779, + "name": "Literal", + "src": "1794:57:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "61646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e29", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"address account,address signer,uint64 issuedOn)\"", + "value": "address account,address signer,uint64 issuedOn)" + }, + "id": 33780, + "name": "Literal", + "src": "1859:49:96" + } + ], + "id": 33781, + "name": "FunctionCall", + "src": "1770:144:96" + } + ], + "id": 33782, + "name": "FunctionCall", + "src": "1755:163:96" + } + ], + "id": 33783, + "name": "VariableDeclaration", + "src": "1691:227:96" + }, + { + "attributes": { + "constant": true, + "name": "MAX_ATTESTATIONS_PER_IDENTIFIER", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33784, + "name": "ElementaryTypeName", + "src": "2120:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 33785, + "name": "Literal", + "src": "2178:2:96" + } + ], + "id": 33786, + "name": "VariableDeclaration", + "src": "2120:60:96" + }, + { + "attributes": { + "constant": true, + "name": "MAX_IDENTIFIERS_PER_ADDRESS", + "scope": 34897, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33787, + "name": "ElementaryTypeName", + "src": "2184:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 33788, + "name": "Literal", + "src": "2238:2:96" + } + ], + "id": 33789, + "name": "VariableDeclaration", + "src": "2184:56:96" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "EIP712DomainSeparatorSet" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "eip712DomainSeparator", + "scope": 33793, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33790, + "name": "ElementaryTypeName", + "src": "2276:7:96" + } + ], + "id": 33791, + "name": "VariableDeclaration", + "src": "2276:29:96" + } + ], + "id": 33792, + "name": "ParameterList", + "src": "2275:31:96" + } + ], + "id": 33793, + "name": "EventDefinition", + "src": "2245:62:96" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "AttestationRegistered" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "identifier", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33794, + "name": "ElementaryTypeName", + "src": "2343:7:96" + } + ], + "id": 33795, + "name": "VariableDeclaration", + "src": "2343:26:96" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "issuer", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33796, + "name": "ElementaryTypeName", + "src": "2375:7:96" + } + ], + "id": 33797, + "name": "VariableDeclaration", + "src": "2375:22:96" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "account", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33798, + "name": "ElementaryTypeName", + "src": "2403:7:96" + } + ], + "id": 33799, + "name": "VariableDeclaration", + "src": "2403:23:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "signer", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33800, + "name": "ElementaryTypeName", + "src": "2432:7:96" + } + ], + "id": 33801, + "name": "VariableDeclaration", + "src": "2432:14:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "issuedOn", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33802, + "name": "ElementaryTypeName", + "src": "2452:6:96" + } + ], + "id": 33803, + "name": "VariableDeclaration", + "src": "2452:15:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "publishedOn", + "scope": 33807, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33804, + "name": "ElementaryTypeName", + "src": "2473:6:96" + } + ], + "id": 33805, + "name": "VariableDeclaration", + "src": "2473:18:96" + } + ], + "id": 33806, + "name": "ParameterList", + "src": "2337:158:96" + } + ], + "id": 33807, + "name": "EventDefinition", + "src": "2310:186:96" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "AttestationRevoked" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "identifier", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33808, + "name": "ElementaryTypeName", + "src": "2529:7:96" + } + ], + "id": 33809, + "name": "VariableDeclaration", + "src": "2529:26:96" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "issuer", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33810, + "name": "ElementaryTypeName", + "src": "2561:7:96" + } + ], + "id": 33811, + "name": "VariableDeclaration", + "src": "2561:22:96" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "account", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33812, + "name": "ElementaryTypeName", + "src": "2589:7:96" + } + ], + "id": 33813, + "name": "VariableDeclaration", + "src": "2589:23:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "signer", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33814, + "name": "ElementaryTypeName", + "src": "2618:7:96" + } + ], + "id": 33815, + "name": "VariableDeclaration", + "src": "2618:14:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "issuedOn", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33816, + "name": "ElementaryTypeName", + "src": "2638:6:96" + } + ], + "id": 33817, + "name": "VariableDeclaration", + "src": "2638:15:96" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "publishedOn", + "scope": 33821, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33818, + "name": "ElementaryTypeName", + "src": "2659:6:96" + } + ], + "id": 33819, + "name": "VariableDeclaration", + "src": "2659:18:96" + } + ], + "id": 33820, + "name": "ParameterList", + "src": "2523:158:96" + } + ], + "id": 33821, + "name": "EventDefinition", + "src": "2499:183:96" + }, + { + "attributes": { + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "name": "", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "test", + "scope": 33830, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 33822, + "name": "ElementaryTypeName", + "src": "2843:4:96" + } + ], + "id": 33823, + "name": "VariableDeclaration", + "src": "2843:9:96" + } + ], + "id": 33824, + "name": "ParameterList", + "src": "2842:11:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33828, + "name": "ParameterList", + "src": "2881:0:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5884, + "type": "type(contract Initializable)", + "value": "Initializable" + }, + "id": 33825, + "name": "Identifier", + "src": "2861:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33823, + "type": "bool", + "value": "test" + }, + "id": 33826, + "name": "Identifier", + "src": "2875:4:96" + } + ], + "id": 33827, + "name": "ModifierInvocation", + "src": "2861:19:96" + }, + { + "attributes": { + "statements": [ + null + ] + }, + "children": [], + "id": 33829, + "name": "Block", + "src": "2881:2:96" + } + ], + "id": 33830, + "name": "FunctionDefinition", + "src": "2831:52:96" + }, + { + "attributes": { + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getVersionNumber", + "scope": 34897, + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33831, + "name": "ParameterList", + "src": "3082:2:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 33848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33832, + "name": "ElementaryTypeName", + "src": "3108:7:96" + } + ], + "id": 33833, + "name": "VariableDeclaration", + "src": "3108:7:96" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 33848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33834, + "name": "ElementaryTypeName", + "src": "3117:7:96" + } + ], + "id": 33835, + "name": "VariableDeclaration", + "src": "3117:7:96" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 33848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33836, + "name": "ElementaryTypeName", + "src": "3126:7:96" + } + ], + "id": 33837, + "name": "VariableDeclaration", + "src": "3126:7:96" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 33848, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33838, + "name": "ElementaryTypeName", + "src": "3135:7:96" + } + ], + "id": 33839, + "name": "VariableDeclaration", + "src": "3135:7:96" + } + ], + "id": 33840, + "name": "ParameterList", + "src": "3107:36:96" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 33840 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33841, + "name": "Literal", + "src": "3158:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 33842, + "name": "Literal", + "src": "3161:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33843, + "name": "Literal", + "src": "3164:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33844, + "name": "Literal", + "src": "3167:1:96" + } + ], + "id": 33845, + "name": "TupleExpression", + "src": "3157:12:96" + } + ], + "id": 33846, + "name": "Return", + "src": "3150:19:96" + } + ], + "id": 33847, + "name": "Block", + "src": "3144:30:96" + } + ], + "id": 33848, + "name": "FunctionDefinition", + "src": "3057:117:96" + }, + { + "attributes": { + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "initialize", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33849, + "name": "ParameterList", + "src": "3305:2:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33852, + "name": "ParameterList", + "src": "3329:0:96" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5883, + "type": "modifier ()", + "value": "initializer" + }, + "id": 33850, + "name": "Identifier", + "src": "3317:11:96" + } + ], + "id": 33851, + "name": "ModifierInvocation", + "src": "3317:11:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 480, + "type": "function (address)", + "value": "_transferOwnership" + }, + "id": 33853, + "name": "Identifier", + "src": "3335:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33854, + "name": "Identifier", + "src": "3354:3:96" + } + ], + "id": 33855, + "name": "MemberAccess", + "src": "3354:10:96" + } + ], + "id": 33856, + "name": "FunctionCall", + "src": "3335:30:96" + } + ], + "id": 33857, + "name": "ExpressionStatement", + "src": "3335:30:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34424, + "type": "function ()", + "value": "setEip712DomainSeparator" + }, + "id": 33858, + "name": "Identifier", + "src": "3371:24:96" + } + ], + "id": 33859, + "name": "FunctionCall", + "src": "3371:26:96" + } + ], + "id": 33860, + "name": "ExpressionStatement", + "src": "3371:26:96" + } + ], + "id": 33861, + "name": "Block", + "src": "3329:73:96" + } + ], + "id": 33862, + "name": "FunctionDefinition", + "src": "3286:116:96" + }, + { + "attributes": { + "documentation": "@notice Registers an attestation directly from the issuer\n@param identifier Hash of the identifier to be attested\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@dev Attestation signer and issuer in storage is set to msg.sender\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "registerAttestationAsIssuer", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": 36042, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33882, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33863, + "name": "ElementaryTypeName", + "src": "3902:7:96" + } + ], + "id": 33864, + "name": "VariableDeclaration", + "src": "3902:18:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33882, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33865, + "name": "ElementaryTypeName", + "src": "3922:7:96" + } + ], + "id": 33866, + "name": "VariableDeclaration", + "src": "3922:15:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 33882, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33867, + "name": "ElementaryTypeName", + "src": "3939:6:96" + } + ], + "id": 33868, + "name": "VariableDeclaration", + "src": "3939:15:96" + } + ], + "id": 33869, + "name": "ParameterList", + "src": "3901:54:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33870, + "name": "ParameterList", + "src": "3971:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34709, + "type": "function (bytes32,address,address,address,uint64)", + "value": "_registerAttestation" + }, + "id": 33871, + "name": "Identifier", + "src": "3977:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33864, + "type": "bytes32", + "value": "identifier" + }, + "id": 33872, + "name": "Identifier", + "src": "3998:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33873, + "name": "Identifier", + "src": "4010:3:96" + } + ], + "id": 33874, + "name": "MemberAccess", + "src": "4010:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33866, + "type": "address", + "value": "account" + }, + "id": 33875, + "name": "Identifier", + "src": "4022:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33876, + "name": "Identifier", + "src": "4031:3:96" + } + ], + "id": 33877, + "name": "MemberAccess", + "src": "4031:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33868, + "type": "uint64", + "value": "issuedOn" + }, + "id": 33878, + "name": "Identifier", + "src": "4043:8:96" + } + ], + "id": 33879, + "name": "FunctionCall", + "src": "3977:75:96" + } + ], + "id": 33880, + "name": "ExpressionStatement", + "src": "3977:75:96" + } + ], + "id": 33881, + "name": "Block", + "src": "3971:86:96" + } + ], + "id": 33882, + "name": "FunctionDefinition", + "src": "3865:192:96" + }, + { + "attributes": { + "documentation": "@notice Registers an attestation with a valid signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "registerAttestation", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": 36061, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33883, + "name": "ElementaryTypeName", + "src": "4759:7:96" + } + ], + "id": 33884, + "name": "VariableDeclaration", + "src": "4759:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33885, + "name": "ElementaryTypeName", + "src": "4783:7:96" + } + ], + "id": 33886, + "name": "VariableDeclaration", + "src": "4783:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33887, + "name": "ElementaryTypeName", + "src": "4803:7:96" + } + ], + "id": 33888, + "name": "VariableDeclaration", + "src": "4803:15:96" + }, + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33889, + "name": "ElementaryTypeName", + "src": "4824:7:96" + } + ], + "id": 33890, + "name": "VariableDeclaration", + "src": "4824:14:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 33891, + "name": "ElementaryTypeName", + "src": "4844:6:96" + } + ], + "id": 33892, + "name": "VariableDeclaration", + "src": "4844:15:96" + }, + { + "attributes": { + "constant": false, + "name": "v", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 33893, + "name": "ElementaryTypeName", + "src": "4865:5:96" + } + ], + "id": 33894, + "name": "VariableDeclaration", + "src": "4865:7:96" + }, + { + "attributes": { + "constant": false, + "name": "r", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33895, + "name": "ElementaryTypeName", + "src": "4878:7:96" + } + ], + "id": 33896, + "name": "VariableDeclaration", + "src": "4878:9:96" + }, + { + "attributes": { + "constant": false, + "name": "s", + "scope": 33921, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33897, + "name": "ElementaryTypeName", + "src": "4893:7:96" + } + ], + "id": 33898, + "name": "VariableDeclaration", + "src": "4893:9:96" + } + ], + "id": 33899, + "name": "ParameterList", + "src": "4753:153:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33900, + "name": "ParameterList", + "src": "4916:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34361, + "type": "function (bytes32,address,address,address,uint64,uint8,bytes32,bytes32) view", + "value": "validateAttestationSig" + }, + "id": 33901, + "name": "Identifier", + "src": "4922:22:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33884, + "type": "bytes32", + "value": "identifier" + }, + "id": 33902, + "name": "Identifier", + "src": "4945:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33886, + "type": "address", + "value": "issuer" + }, + "id": 33903, + "name": "Identifier", + "src": "4957:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33888, + "type": "address", + "value": "account" + }, + "id": 33904, + "name": "Identifier", + "src": "4965:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33890, + "type": "address", + "value": "signer" + }, + "id": 33905, + "name": "Identifier", + "src": "4974:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33892, + "type": "uint64", + "value": "issuedOn" + }, + "id": 33906, + "name": "Identifier", + "src": "4982:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33894, + "type": "uint8", + "value": "v" + }, + "id": 33907, + "name": "Identifier", + "src": "4992:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33896, + "type": "bytes32", + "value": "r" + }, + "id": 33908, + "name": "Identifier", + "src": "4995:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33898, + "type": "bytes32", + "value": "s" + }, + "id": 33909, + "name": "Identifier", + "src": "4998:1:96" + } + ], + "id": 33910, + "name": "FunctionCall", + "src": "4922:78:96" + } + ], + "id": 33911, + "name": "ExpressionStatement", + "src": "4922:78:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34709, + "type": "function (bytes32,address,address,address,uint64)", + "value": "_registerAttestation" + }, + "id": 33912, + "name": "Identifier", + "src": "5006:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33884, + "type": "bytes32", + "value": "identifier" + }, + "id": 33913, + "name": "Identifier", + "src": "5027:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33886, + "type": "address", + "value": "issuer" + }, + "id": 33914, + "name": "Identifier", + "src": "5039:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33888, + "type": "address", + "value": "account" + }, + "id": 33915, + "name": "Identifier", + "src": "5047:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33890, + "type": "address", + "value": "signer" + }, + "id": 33916, + "name": "Identifier", + "src": "5056:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33892, + "type": "uint64", + "value": "issuedOn" + }, + "id": 33917, + "name": "Identifier", + "src": "5064:8:96" + } + ], + "id": 33918, + "name": "FunctionCall", + "src": "5006:67:96" + } + ], + "id": 33919, + "name": "ExpressionStatement", + "src": "5006:67:96" + } + ], + "id": 33920, + "name": "Block", + "src": "4916:162:96" + } + ], + "id": 33921, + "name": "FunctionDefinition", + "src": "4725:353:96" + }, + { + "attributes": { + "documentation": "@notice Revokes an attestation \n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Throws if sender is not the issuer, signer, or account", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "revokeAttestation", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": 36070, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 33959, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33922, + "name": "ElementaryTypeName", + "src": "5404:7:96" + } + ], + "id": 33923, + "name": "VariableDeclaration", + "src": "5404:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 33959, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33924, + "name": "ElementaryTypeName", + "src": "5424:7:96" + } + ], + "id": 33925, + "name": "VariableDeclaration", + "src": "5424:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 33959, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33926, + "name": "ElementaryTypeName", + "src": "5440:7:96" + } + ], + "id": 33927, + "name": "VariableDeclaration", + "src": "5440:15:96" + } + ], + "id": 33928, + "name": "ParameterList", + "src": "5403:53:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33929, + "name": "ParameterList", + "src": "5466:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e", + "typeString": "literal_string \"Sender does not have permission to revoke this attestation\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33930, + "name": "Identifier", + "src": "5472:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33927, + "type": "address", + "value": "account" + }, + "id": 33931, + "name": "Identifier", + "src": "5487:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33932, + "name": "Identifier", + "src": "5498:3:96" + } + ], + "id": 33933, + "name": "MemberAccess", + "src": "5498:10:96" + } + ], + "id": 33934, + "name": "BinaryOperation", + "src": "5487:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33925, + "type": "address", + "value": "issuer" + }, + "id": 33935, + "name": "Identifier", + "src": "5620:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33936, + "name": "Identifier", + "src": "5630:3:96" + } + ], + "id": 33937, + "name": "MemberAccess", + "src": "5630:10:96" + } + ], + "id": 33938, + "name": "BinaryOperation", + "src": "5620:20:96" + } + ], + "id": 33939, + "name": "BinaryOperation", + "src": "5487:153:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "attestationSignerToAccount", + "referencedDeclaration": 8839, + "type": "function (address) view external returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IAccounts", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8548, + "type": "function () view returns (contract IAccounts)", + "value": "getAccounts" + }, + "id": 33940, + "name": "Identifier", + "src": "5652:11:96" + } + ], + "id": 33941, + "name": "FunctionCall", + "src": "5652:13:96" + } + ], + "id": 33942, + "name": "MemberAccess", + "src": "5652:40:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33943, + "name": "Identifier", + "src": "5693:3:96" + } + ], + "id": 33944, + "name": "MemberAccess", + "src": "5693:10:96" + } + ], + "id": 33945, + "name": "FunctionCall", + "src": "5652:52:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33925, + "type": "address", + "value": "issuer" + }, + "id": 33946, + "name": "Identifier", + "src": "5708:6:96" + } + ], + "id": 33947, + "name": "BinaryOperation", + "src": "5652:62:96" + } + ], + "id": 33948, + "name": "BinaryOperation", + "src": "5487:227:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Sender does not have permission to revoke this attestation\"", + "value": "Sender does not have permission to revoke this attestation" + }, + "id": 33949, + "name": "Literal", + "src": "5722:60:96" + } + ], + "id": 33950, + "name": "FunctionCall", + "src": "5472:316:96" + } + ], + "id": 33951, + "name": "ExpressionStatement", + "src": "5472:316:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34896, + "type": "function (bytes32,address,address)", + "value": "_revokeAttestation" + }, + "id": 33952, + "name": "Identifier", + "src": "5794:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33923, + "type": "bytes32", + "value": "identifier" + }, + "id": 33953, + "name": "Identifier", + "src": "5813:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33925, + "type": "address", + "value": "issuer" + }, + "id": 33954, + "name": "Identifier", + "src": "5825:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33927, + "type": "address", + "value": "account" + }, + "id": 33955, + "name": "Identifier", + "src": "5833:7:96" + } + ], + "id": 33956, + "name": "FunctionCall", + "src": "5794:47:96" + } + ], + "id": 33957, + "name": "ExpressionStatement", + "src": "5794:47:96" + } + ], + "id": 33958, + "name": "Block", + "src": "5466:380:96" + } + ], + "id": 33959, + "name": "FunctionDefinition", + "src": "5377:469:96" + }, + { + "attributes": { + "documentation": "@notice Revokes attestations [identifiers <-> accounts] from issuer\n@param issuer Address of the issuer of all attestations to be revoked\n@param identifiers Hash of the identifiers\n@param accounts Addresses of the accounts mapped to the identifiers\n at the same indices\n@dev Throws if the number of identifiers and accounts is not the same\n@dev Throws if sender is not the issuer or currently registered signer of issuer\n@dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "batchRevokeAttestations", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": 36081, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 34024, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33960, + "name": "ElementaryTypeName", + "src": "6440:7:96" + } + ], + "id": 33961, + "name": "VariableDeclaration", + "src": "6440:14:96" + }, + { + "attributes": { + "constant": false, + "name": "identifiers", + "scope": 34024, + "stateVariable": false, + "storageLocation": "calldata", + "type": "bytes32[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 33962, + "name": "ElementaryTypeName", + "src": "6460:7:96" + } + ], + "id": 33963, + "name": "ArrayTypeName", + "src": "6460:9:96" + } + ], + "id": 33964, + "name": "VariableDeclaration", + "src": "6460:30:96" + }, + { + "attributes": { + "constant": false, + "name": "accounts", + "scope": 34024, + "stateVariable": false, + "storageLocation": "calldata", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 33965, + "name": "ElementaryTypeName", + "src": "6496:7:96" + } + ], + "id": 33966, + "name": "ArrayTypeName", + "src": "6496:9:96" + } + ], + "id": 33967, + "name": "VariableDeclaration", + "src": "6496:27:96" + } + ], + "id": 33968, + "name": "ParameterList", + "src": "6434:93:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 33969, + "name": "ParameterList", + "src": "6537:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694", + "typeString": "literal_string \"Unequal number of identifiers and accounts\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33970, + "name": "Identifier", + "src": "6543:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33964, + "type": "bytes32[] calldata", + "value": "identifiers" + }, + "id": 33971, + "name": "Identifier", + "src": "6551:11:96" + } + ], + "id": 33972, + "name": "MemberAccess", + "src": "6551:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33967, + "type": "address[] calldata", + "value": "accounts" + }, + "id": 33973, + "name": "Identifier", + "src": "6573:8:96" + } + ], + "id": 33974, + "name": "MemberAccess", + "src": "6573:15:96" + } + ], + "id": 33975, + "name": "BinaryOperation", + "src": "6551:37:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e7473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Unequal number of identifiers and accounts\"", + "value": "Unequal number of identifiers and accounts" + }, + "id": 33976, + "name": "Literal", + "src": "6590:44:96" + } + ], + "id": 33977, + "name": "FunctionCall", + "src": "6543:92:96" + } + ], + "id": 33978, + "name": "ExpressionStatement", + "src": "6543:92:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87", + "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 33979, + "name": "Identifier", + "src": "6641:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33961, + "type": "address", + "value": "issuer" + }, + "id": 33980, + "name": "Identifier", + "src": "6656:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33981, + "name": "Identifier", + "src": "6666:3:96" + } + ], + "id": 33982, + "name": "MemberAccess", + "src": "6666:10:96" + } + ], + "id": 33983, + "name": "BinaryOperation", + "src": "6656:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "attestationSignerToAccount", + "referencedDeclaration": 8839, + "type": "function (address) view external returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IAccounts", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8548, + "type": "function () view returns (contract IAccounts)", + "value": "getAccounts" + }, + "id": 33984, + "name": "Identifier", + "src": "6680:11:96" + } + ], + "id": 33985, + "name": "FunctionCall", + "src": "6680:13:96" + } + ], + "id": 33986, + "name": "MemberAccess", + "src": "6680:40:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 33987, + "name": "Identifier", + "src": "6721:3:96" + } + ], + "id": 33988, + "name": "MemberAccess", + "src": "6721:10:96" + } + ], + "id": 33989, + "name": "FunctionCall", + "src": "6680:52:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33961, + "type": "address", + "value": "issuer" + }, + "id": 33990, + "name": "Identifier", + "src": "6736:6:96" + } + ], + "id": 33991, + "name": "BinaryOperation", + "src": "6680:62:96" + } + ], + "id": 33992, + "name": "BinaryOperation", + "src": "6656:86:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d207468697320697373756572", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Sender does not have permission to revoke attestations from this issuer\"", + "value": "Sender does not have permission to revoke attestations from this issuer" + }, + "id": 33993, + "name": "Literal", + "src": "6750:73:96" + } + ], + "id": 33994, + "name": "FunctionCall", + "src": "6641:188:96" + } + ], + "id": 33995, + "name": "ExpressionStatement", + "src": "6641:188:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 33997 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34022, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 33996, + "name": "ElementaryTypeName", + "src": "6841:7:96" + } + ], + "id": 33997, + "name": "VariableDeclaration", + "src": "6841:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 33998, + "name": "Literal", + "src": "6853:1:96" + } + ], + "id": 33999, + "name": "VariableDeclarationStatement", + "src": "6841:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33997, + "type": "uint256", + "value": "i" + }, + "id": 34000, + "name": "Identifier", + "src": "6856:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33964, + "type": "bytes32[] calldata", + "value": "identifiers" + }, + "id": 34001, + "name": "Identifier", + "src": "6860:11:96" + } + ], + "id": 34002, + "name": "MemberAccess", + "src": "6860:18:96" + } + ], + "id": 34003, + "name": "BinaryOperation", + "src": "6856:22:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33997, + "type": "uint256", + "value": "i" + }, + "id": 34004, + "name": "Identifier", + "src": "6880:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33997, + "type": "uint256", + "value": "i" + }, + "id": 34005, + "name": "Identifier", + "src": "6884:1:96" + } + ], + "id": 34006, + "name": "MemberAccess", + "src": "6884:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34007, + "name": "Literal", + "src": "6890:1:96" + } + ], + "id": 34008, + "name": "FunctionCall", + "src": "6884:8:96" + } + ], + "id": 34009, + "name": "Assignment", + "src": "6880:12:96" + } + ], + "id": 34010, + "name": "ExpressionStatement", + "src": "6880:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34896, + "type": "function (bytes32,address,address)", + "value": "_revokeAttestation" + }, + "id": 34011, + "name": "Identifier", + "src": "6902:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33964, + "type": "bytes32[] calldata", + "value": "identifiers" + }, + "id": 34012, + "name": "Identifier", + "src": "6921:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33997, + "type": "uint256", + "value": "i" + }, + "id": 34013, + "name": "Identifier", + "src": "6933:1:96" + } + ], + "id": 34014, + "name": "IndexAccess", + "src": "6921:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33961, + "type": "address", + "value": "issuer" + }, + "id": 34015, + "name": "Identifier", + "src": "6937:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33967, + "type": "address[] calldata", + "value": "accounts" + }, + "id": 34016, + "name": "Identifier", + "src": "6945:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33997, + "type": "uint256", + "value": "i" + }, + "id": 34017, + "name": "Identifier", + "src": "6954:1:96" + } + ], + "id": 34018, + "name": "IndexAccess", + "src": "6945:11:96" + } + ], + "id": 34019, + "name": "FunctionCall", + "src": "6902:55:96" + } + ], + "id": 34020, + "name": "ExpressionStatement", + "src": "6902:55:96" + } + ], + "id": 34021, + "name": "Block", + "src": "6894:70:96" + } + ], + "id": 34022, + "name": "ForStatement", + "src": "6836:128:96" + } + ], + "id": 34023, + "name": "Block", + "src": "6537:431:96" + } + ], + "id": 34024, + "name": "FunctionDefinition", + "src": "6402:566:96" + }, + { + "attributes": { + "documentation": "@notice Returns info about attestations for `identifier` produced by \n signers of `trustedIssuers`\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return countsPerIssuer Array of number of attestations returned per issuer\n For m (== sum([0])) found attestations: \n@return accounts Array of m accounts \n@return signers Array of m signers\n@return issuedOns Array of m issuedOns\n@return publishedOns Array of m publishedOns\n@dev Adds attestation info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "lookupAttestations", + "scope": 34897, + "stateMutability": "view", + "superFunction": 36104, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34195, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34025, + "name": "ElementaryTypeName", + "src": "7735:7:96" + } + ], + "id": 34026, + "name": "VariableDeclaration", + "src": "7735:18:96" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 34195, + "stateVariable": false, + "storageLocation": "calldata", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34027, + "name": "ElementaryTypeName", + "src": "7755:7:96" + } + ], + "id": 34028, + "name": "ArrayTypeName", + "src": "7755:9:96" + } + ], + "id": 34029, + "name": "VariableDeclaration", + "src": "7755:33:96" + } + ], + "id": 34030, + "name": "ParameterList", + "src": "7734:55:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "countsPerIssuer", + "scope": 34195, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint256[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34031, + "name": "ElementaryTypeName", + "src": "7832:7:96" + } + ], + "id": 34032, + "name": "ArrayTypeName", + "src": "7832:9:96" + } + ], + "id": 34033, + "name": "VariableDeclaration", + "src": "7832:32:96" + }, + { + "attributes": { + "constant": false, + "name": "accounts", + "scope": 34195, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34034, + "name": "ElementaryTypeName", + "src": "7872:7:96" + } + ], + "id": 34035, + "name": "ArrayTypeName", + "src": "7872:9:96" + } + ], + "id": 34036, + "name": "VariableDeclaration", + "src": "7872:25:96" + }, + { + "attributes": { + "constant": false, + "name": "signers", + "scope": 34195, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34037, + "name": "ElementaryTypeName", + "src": "7905:7:96" + } + ], + "id": 34038, + "name": "ArrayTypeName", + "src": "7905:9:96" + } + ], + "id": 34039, + "name": "VariableDeclaration", + "src": "7905:24:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOns", + "scope": 34195, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint64[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint64[]" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34040, + "name": "ElementaryTypeName", + "src": "7937:6:96" + } + ], + "id": 34041, + "name": "ArrayTypeName", + "src": "7937:8:96" + } + ], + "id": 34042, + "name": "VariableDeclaration", + "src": "7937:25:96" + }, + { + "attributes": { + "constant": false, + "name": "publishedOns", + "scope": 34195, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint64[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint64[]" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34043, + "name": "ElementaryTypeName", + "src": "7970:6:96" + } + ], + "id": 34044, + "name": "ArrayTypeName", + "src": "7970:8:96" + } + ], + "id": 34045, + "name": "VariableDeclaration", + "src": "7970:28:96" + } + ], + "id": 34046, + "name": "ParameterList", + "src": "7824:180:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34048 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "totalAttestations", + "scope": 34194, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34047, + "name": "ElementaryTypeName", + "src": "8013:7:96" + } + ], + "id": 34048, + "name": "VariableDeclaration", + "src": "8013:25:96" + } + ], + "id": 34049, + "name": "VariableDeclarationStatement", + "src": "8013:25:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "tuple(uint256,uint256[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34050, + "name": "Identifier", + "src": "8045:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34033, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34051, + "name": "Identifier", + "src": "8064:15:96" + } + ], + "id": 34052, + "name": "TupleExpression", + "src": "8044:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple(uint256,uint256[] memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34499, + "type": "function (bytes32,address[] memory) view returns (uint256,uint256[] memory)", + "value": "getNumAttestations" + }, + "id": 34053, + "name": "Identifier", + "src": "8083:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34026, + "type": "bytes32", + "value": "identifier" + }, + "id": 34054, + "name": "Identifier", + "src": "8102:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34029, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34055, + "name": "Identifier", + "src": "8114:14:96" + } + ], + "id": 34056, + "name": "FunctionCall", + "src": "8083:46:96" + } + ], + "id": 34057, + "name": "Assignment", + "src": "8044:85:96" + } + ], + "id": 34058, + "name": "ExpressionStatement", + "src": "8044:85:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34036, + "type": "address[] memory", + "value": "accounts" + }, + "id": 34059, + "name": "Identifier", + "src": "8136:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (address[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34060, + "name": "ElementaryTypeName", + "src": "8151:7:96" + } + ], + "id": 34061, + "name": "ArrayTypeName", + "src": "8151:9:96" + } + ], + "id": 34062, + "name": "NewExpression", + "src": "8147:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34063, + "name": "Identifier", + "src": "8161:17:96" + } + ], + "id": 34064, + "name": "FunctionCall", + "src": "8147:32:96" + } + ], + "id": 34065, + "name": "Assignment", + "src": "8136:43:96" + } + ], + "id": 34066, + "name": "ExpressionStatement", + "src": "8136:43:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34039, + "type": "address[] memory", + "value": "signers" + }, + "id": 34067, + "name": "Identifier", + "src": "8185:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (address[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34068, + "name": "ElementaryTypeName", + "src": "8199:7:96" + } + ], + "id": 34069, + "name": "ArrayTypeName", + "src": "8199:9:96" + } + ], + "id": 34070, + "name": "NewExpression", + "src": "8195:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34071, + "name": "Identifier", + "src": "8209:17:96" + } + ], + "id": 34072, + "name": "FunctionCall", + "src": "8195:32:96" + } + ], + "id": 34073, + "name": "Assignment", + "src": "8185:42:96" + } + ], + "id": 34074, + "name": "ExpressionStatement", + "src": "8185:42:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint64[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34042, + "type": "uint64[] memory", + "value": "issuedOns" + }, + "id": 34075, + "name": "Identifier", + "src": "8233:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint64[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (uint64[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint64[]" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34076, + "name": "ElementaryTypeName", + "src": "8249:6:96" + } + ], + "id": 34077, + "name": "ArrayTypeName", + "src": "8249:8:96" + } + ], + "id": 34078, + "name": "NewExpression", + "src": "8245:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34079, + "name": "Identifier", + "src": "8258:17:96" + } + ], + "id": 34080, + "name": "FunctionCall", + "src": "8245:31:96" + } + ], + "id": 34081, + "name": "Assignment", + "src": "8233:43:96" + } + ], + "id": 34082, + "name": "ExpressionStatement", + "src": "8233:43:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint64[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34045, + "type": "uint64[] memory", + "value": "publishedOns" + }, + "id": 34083, + "name": "Identifier", + "src": "8282:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint64[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (uint64[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint64[]" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34084, + "name": "ElementaryTypeName", + "src": "8301:6:96" + } + ], + "id": 34085, + "name": "ArrayTypeName", + "src": "8301:8:96" + } + ], + "id": 34086, + "name": "NewExpression", + "src": "8297:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34087, + "name": "Identifier", + "src": "8310:17:96" + } + ], + "id": 34088, + "name": "FunctionCall", + "src": "8297:31:96" + } + ], + "id": 34089, + "name": "Assignment", + "src": "8282:46:96" + } + ], + "id": 34090, + "name": "ExpressionStatement", + "src": "8282:46:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34091, + "name": "Identifier", + "src": "8335:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34092, + "name": "Literal", + "src": "8355:1:96" + } + ], + "id": 34093, + "name": "Assignment", + "src": "8335:21:96" + } + ], + "id": 34094, + "name": "ExpressionStatement", + "src": "8335:21:96" + }, + { + "attributes": { + "assignments": [ + 34098 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestationsPerIssuer", + "scope": 34194, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct FederatedAttestations.OwnershipAttestation[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "struct FederatedAttestations.OwnershipAttestation[]" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "OwnershipAttestation", + "referencedDeclaration": 33754, + "type": "struct FederatedAttestations.OwnershipAttestation" + }, + "id": 34096, + "name": "UserDefinedTypeName", + "src": "8362:20:96" + } + ], + "id": 34097, + "name": "ArrayTypeName", + "src": "8362:22:96" + } + ], + "id": 34098, + "name": "VariableDeclaration", + "src": "8362:51:96" + } + ], + "id": 34099, + "name": "VariableDeclarationStatement", + "src": "8362:51:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34101 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34186, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34100, + "name": "ElementaryTypeName", + "src": "8425:7:96" + } + ], + "id": 34101, + "name": "VariableDeclaration", + "src": "8425:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34102, + "name": "Literal", + "src": "8437:1:96" + } + ], + "id": 34103, + "name": "VariableDeclarationStatement", + "src": "8425:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34101, + "type": "uint256", + "value": "i" + }, + "id": 34104, + "name": "Identifier", + "src": "8440:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34029, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34105, + "name": "Identifier", + "src": "8444:14:96" + } + ], + "id": 34106, + "name": "MemberAccess", + "src": "8444:21:96" + } + ], + "id": 34107, + "name": "BinaryOperation", + "src": "8440:25:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34101, + "type": "uint256", + "value": "i" + }, + "id": 34108, + "name": "Identifier", + "src": "8467:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34101, + "type": "uint256", + "value": "i" + }, + "id": 34109, + "name": "Identifier", + "src": "8471:1:96" + } + ], + "id": 34110, + "name": "MemberAccess", + "src": "8471:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34111, + "name": "Literal", + "src": "8477:1:96" + } + ], + "id": 34112, + "name": "FunctionCall", + "src": "8471:8:96" + } + ], + "id": 34113, + "name": "Assignment", + "src": "8467:12:96" + } + ], + "id": 34114, + "name": "ExpressionStatement", + "src": "8467:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34115, + "name": "Identifier", + "src": "8489:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34116, + "name": "Identifier", + "src": "8513:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34026, + "type": "bytes32", + "value": "identifier" + }, + "id": 34117, + "name": "Identifier", + "src": "8538:10:96" + } + ], + "id": 34118, + "name": "IndexAccess", + "src": "8513:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34029, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34119, + "name": "Identifier", + "src": "8550:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34101, + "type": "uint256", + "value": "i" + }, + "id": 34120, + "name": "Identifier", + "src": "8565:1:96" + } + ], + "id": 34121, + "name": "IndexAccess", + "src": "8550:17:96" + } + ], + "id": 34122, + "name": "IndexAccess", + "src": "8513:55:96" + } + ], + "id": 34123, + "name": "Assignment", + "src": "8489:79:96" + } + ], + "id": 34124, + "name": "ExpressionStatement", + "src": "8489:79:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34126 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "j", + "scope": 34184, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34125, + "name": "ElementaryTypeName", + "src": "8581:7:96" + } + ], + "id": 34126, + "name": "VariableDeclaration", + "src": "8581:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34127, + "name": "Literal", + "src": "8593:1:96" + } + ], + "id": 34128, + "name": "VariableDeclarationStatement", + "src": "8581:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34129, + "name": "Identifier", + "src": "8596:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34130, + "name": "Identifier", + "src": "8600:21:96" + } + ], + "id": 34131, + "name": "MemberAccess", + "src": "8600:28:96" + } + ], + "id": 34132, + "name": "BinaryOperation", + "src": "8596:32:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34133, + "name": "Identifier", + "src": "8630:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34134, + "name": "Identifier", + "src": "8634:1:96" + } + ], + "id": 34135, + "name": "MemberAccess", + "src": "8634:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34136, + "name": "Literal", + "src": "8640:1:96" + } + ], + "id": 34137, + "name": "FunctionCall", + "src": "8634:8:96" + } + ], + "id": 34138, + "name": "Assignment", + "src": "8630:12:96" + } + ], + "id": 34139, + "name": "ExpressionStatement", + "src": "8630:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34036, + "type": "address[] memory", + "value": "accounts" + }, + "id": 34140, + "name": "Identifier", + "src": "8654:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34141, + "name": "Identifier", + "src": "8663:17:96" + } + ], + "id": 34142, + "name": "IndexAccess", + "src": "8654:27:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "account", + "referencedDeclaration": 33747, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34143, + "name": "Identifier", + "src": "8684:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34144, + "name": "Identifier", + "src": "8706:1:96" + } + ], + "id": 34145, + "name": "IndexAccess", + "src": "8684:24:96" + } + ], + "id": 34146, + "name": "MemberAccess", + "src": "8684:32:96" + } + ], + "id": 34147, + "name": "Assignment", + "src": "8654:62:96" + } + ], + "id": 34148, + "name": "ExpressionStatement", + "src": "8654:62:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34039, + "type": "address[] memory", + "value": "signers" + }, + "id": 34149, + "name": "Identifier", + "src": "8726:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34150, + "name": "Identifier", + "src": "8734:17:96" + } + ], + "id": 34151, + "name": "IndexAccess", + "src": "8726:26:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "signer", + "referencedDeclaration": 33749, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34152, + "name": "Identifier", + "src": "8755:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34153, + "name": "Identifier", + "src": "8777:1:96" + } + ], + "id": 34154, + "name": "IndexAccess", + "src": "8755:24:96" + } + ], + "id": 34155, + "name": "MemberAccess", + "src": "8755:31:96" + } + ], + "id": 34156, + "name": "Assignment", + "src": "8726:60:96" + } + ], + "id": 34157, + "name": "ExpressionStatement", + "src": "8726:60:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34042, + "type": "uint64[] memory", + "value": "issuedOns" + }, + "id": 34158, + "name": "Identifier", + "src": "8796:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34159, + "name": "Identifier", + "src": "8806:17:96" + } + ], + "id": 34160, + "name": "IndexAccess", + "src": "8796:28:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "issuedOn", + "referencedDeclaration": 33751, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34161, + "name": "Identifier", + "src": "8827:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34162, + "name": "Identifier", + "src": "8849:1:96" + } + ], + "id": 34163, + "name": "IndexAccess", + "src": "8827:24:96" + } + ], + "id": 34164, + "name": "MemberAccess", + "src": "8827:33:96" + } + ], + "id": 34165, + "name": "Assignment", + "src": "8796:64:96" + } + ], + "id": 34166, + "name": "ExpressionStatement", + "src": "8796:64:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34045, + "type": "uint64[] memory", + "value": "publishedOns" + }, + "id": 34167, + "name": "Identifier", + "src": "8870:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34168, + "name": "Identifier", + "src": "8883:17:96" + } + ], + "id": 34169, + "name": "IndexAccess", + "src": "8870:31:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "publishedOn", + "referencedDeclaration": 33753, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34098, + "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory", + "value": "attestationsPerIssuer" + }, + "id": 34170, + "name": "Identifier", + "src": "8904:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34126, + "type": "uint256", + "value": "j" + }, + "id": 34171, + "name": "Identifier", + "src": "8926:1:96" + } + ], + "id": 34172, + "name": "IndexAccess", + "src": "8904:24:96" + } + ], + "id": 34173, + "name": "MemberAccess", + "src": "8904:36:96" + } + ], + "id": 34174, + "name": "Assignment", + "src": "8870:70:96" + } + ], + "id": 34175, + "name": "ExpressionStatement", + "src": "8870:70:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34176, + "name": "Identifier", + "src": "8950:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34048, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34177, + "name": "Identifier", + "src": "8970:17:96" + } + ], + "id": 34178, + "name": "MemberAccess", + "src": "8970:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34179, + "name": "Literal", + "src": "8992:1:96" + } + ], + "id": 34180, + "name": "FunctionCall", + "src": "8970:24:96" + } + ], + "id": 34181, + "name": "Assignment", + "src": "8950:44:96" + } + ], + "id": 34182, + "name": "ExpressionStatement", + "src": "8950:44:96" + } + ], + "id": 34183, + "name": "Block", + "src": "8644:359:96" + } + ], + "id": 34184, + "name": "ForStatement", + "src": "8576:427:96" + } + ], + "id": 34185, + "name": "Block", + "src": "8481:528:96" + } + ], + "id": 34186, + "name": "ForStatement", + "src": "8420:589:96" + }, + { + "attributes": { + "functionReturnParameters": 34046 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34033, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34187, + "name": "Identifier", + "src": "9022:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34036, + "type": "address[] memory", + "value": "accounts" + }, + "id": 34188, + "name": "Identifier", + "src": "9039:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34039, + "type": "address[] memory", + "value": "signers" + }, + "id": 34189, + "name": "Identifier", + "src": "9049:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34042, + "type": "uint64[] memory", + "value": "issuedOns" + }, + "id": 34190, + "name": "Identifier", + "src": "9058:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34045, + "type": "uint64[] memory", + "value": "publishedOns" + }, + "id": 34191, + "name": "Identifier", + "src": "9069:12:96" + } + ], + "id": 34192, + "name": "TupleExpression", + "src": "9021:61:96" + } + ], + "id": 34193, + "name": "Return", + "src": "9014:68:96" + } + ], + "id": 34194, + "name": "Block", + "src": "8007:1080:96" + } + ], + "id": 34195, + "name": "FunctionDefinition", + "src": "7707:1380:96" + }, + { + "attributes": { + "documentation": "@notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifier mappings will be used\n@return countsPerIssuer Array of number of identifiers returned per issuer\n@return identifiers Array (length == sum([0])) of identifiers\n@dev Adds identifier info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "lookupIdentifiers", + "scope": 34897, + "stateMutability": "view", + "superFunction": 36118, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34302, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34196, + "name": "ElementaryTypeName", + "src": "9659:7:96" + } + ], + "id": 34197, + "name": "VariableDeclaration", + "src": "9659:15:96" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 34302, + "stateVariable": false, + "storageLocation": "calldata", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34198, + "name": "ElementaryTypeName", + "src": "9676:7:96" + } + ], + "id": 34199, + "name": "ArrayTypeName", + "src": "9676:9:96" + } + ], + "id": 34200, + "name": "VariableDeclaration", + "src": "9676:33:96" + } + ], + "id": 34201, + "name": "ParameterList", + "src": "9658:52:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "countsPerIssuer", + "scope": 34302, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint256[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34202, + "name": "ElementaryTypeName", + "src": "9746:7:96" + } + ], + "id": 34203, + "name": "ArrayTypeName", + "src": "9746:9:96" + } + ], + "id": 34204, + "name": "VariableDeclaration", + "src": "9746:32:96" + }, + { + "attributes": { + "constant": false, + "name": "identifiers", + "scope": 34302, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes32[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34205, + "name": "ElementaryTypeName", + "src": "9780:7:96" + } + ], + "id": 34206, + "name": "ArrayTypeName", + "src": "9780:9:96" + } + ], + "id": 34207, + "name": "VariableDeclaration", + "src": "9780:28:96" + } + ], + "id": 34208, + "name": "ParameterList", + "src": "9745:64:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34210 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "totalIdentifiers", + "scope": 34301, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34209, + "name": "ElementaryTypeName", + "src": "9818:7:96" + } + ], + "id": 34210, + "name": "VariableDeclaration", + "src": "9818:24:96" + } + ], + "id": 34211, + "name": "VariableDeclarationStatement", + "src": "9818:24:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "tuple(uint256,uint256[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34210, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34212, + "name": "Identifier", + "src": "9849:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34204, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34213, + "name": "Identifier", + "src": "9867:15:96" + } + ], + "id": 34214, + "name": "TupleExpression", + "src": "9848:35:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple(uint256,uint256[] memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34574, + "type": "function (address,address[] memory) view returns (uint256,uint256[] memory)", + "value": "getNumIdentifiers" + }, + "id": 34215, + "name": "Identifier", + "src": "9886:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34197, + "type": "address", + "value": "account" + }, + "id": 34216, + "name": "Identifier", + "src": "9904:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34200, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34217, + "name": "Identifier", + "src": "9913:14:96" + } + ], + "id": 34218, + "name": "FunctionCall", + "src": "9886:42:96" + } + ], + "id": 34219, + "name": "Assignment", + "src": "9848:80:96" + } + ], + "id": 34220, + "name": "ExpressionStatement", + "src": "9848:80:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34207, + "type": "bytes32[] memory", + "value": "identifiers" + }, + "id": 34221, + "name": "Identifier", + "src": "9935:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (bytes32[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34222, + "name": "ElementaryTypeName", + "src": "9953:7:96" + } + ], + "id": 34223, + "name": "ArrayTypeName", + "src": "9953:9:96" + } + ], + "id": 34224, + "name": "NewExpression", + "src": "9949:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34210, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34225, + "name": "Identifier", + "src": "9963:16:96" + } + ], + "id": 34226, + "name": "FunctionCall", + "src": "9949:31:96" + } + ], + "id": 34227, + "name": "Assignment", + "src": "9935:45:96" + } + ], + "id": 34228, + "name": "ExpressionStatement", + "src": "9935:45:96" + }, + { + "attributes": { + "assignments": [ + 34232 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "identifiersPerIssuer", + "scope": 34301, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes32[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34230, + "name": "ElementaryTypeName", + "src": "9986:7:96" + } + ], + "id": 34231, + "name": "ArrayTypeName", + "src": "9986:9:96" + } + ], + "id": 34232, + "name": "VariableDeclaration", + "src": "9986:37:96" + } + ], + "id": 34233, + "name": "VariableDeclarationStatement", + "src": "9986:37:96" + }, + { + "attributes": { + "assignments": [ + 34235 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "currIndex", + "scope": 34301, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34234, + "name": "ElementaryTypeName", + "src": "10030:7:96" + } + ], + "id": 34235, + "name": "VariableDeclaration", + "src": "10030:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34236, + "name": "Literal", + "src": "10050:1:96" + } + ], + "id": 34237, + "name": "VariableDeclarationStatement", + "src": "10030:21:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34239 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34296, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34238, + "name": "ElementaryTypeName", + "src": "10063:7:96" + } + ], + "id": 34239, + "name": "VariableDeclaration", + "src": "10063:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34240, + "name": "Literal", + "src": "10075:1:96" + } + ], + "id": 34241, + "name": "VariableDeclarationStatement", + "src": "10063:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34239, + "type": "uint256", + "value": "i" + }, + "id": 34242, + "name": "Identifier", + "src": "10078:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34200, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34243, + "name": "Identifier", + "src": "10082:14:96" + } + ], + "id": 34244, + "name": "MemberAccess", + "src": "10082:21:96" + } + ], + "id": 34245, + "name": "BinaryOperation", + "src": "10078:25:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34239, + "type": "uint256", + "value": "i" + }, + "id": 34246, + "name": "Identifier", + "src": "10105:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34239, + "type": "uint256", + "value": "i" + }, + "id": 34247, + "name": "Identifier", + "src": "10109:1:96" + } + ], + "id": 34248, + "name": "MemberAccess", + "src": "10109:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34249, + "name": "Literal", + "src": "10115:1:96" + } + ], + "id": 34250, + "name": "FunctionCall", + "src": "10109:8:96" + } + ], + "id": 34251, + "name": "Assignment", + "src": "10105:12:96" + } + ], + "id": 34252, + "name": "ExpressionStatement", + "src": "10105:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34232, + "type": "bytes32[] memory", + "value": "identifiersPerIssuer" + }, + "id": 34253, + "name": "Identifier", + "src": "10127:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bytes32[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33768, + "type": "mapping(address => mapping(address => bytes32[] storage ref))", + "value": "addressToIdentifiers" + }, + "id": 34254, + "name": "Identifier", + "src": "10150:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34197, + "type": "address", + "value": "account" + }, + "id": 34255, + "name": "Identifier", + "src": "10171:7:96" + } + ], + "id": 34256, + "name": "IndexAccess", + "src": "10150:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34200, + "type": "address[] calldata", + "value": "trustedIssuers" + }, + "id": 34257, + "name": "Identifier", + "src": "10180:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34239, + "type": "uint256", + "value": "i" + }, + "id": 34258, + "name": "Identifier", + "src": "10195:1:96" + } + ], + "id": 34259, + "name": "IndexAccess", + "src": "10180:17:96" + } + ], + "id": 34260, + "name": "IndexAccess", + "src": "10150:48:96" + } + ], + "id": 34261, + "name": "Assignment", + "src": "10127:71:96" + } + ], + "id": 34262, + "name": "ExpressionStatement", + "src": "10127:71:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34264 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "j", + "scope": 34294, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34263, + "name": "ElementaryTypeName", + "src": "10211:7:96" + } + ], + "id": 34264, + "name": "VariableDeclaration", + "src": "10211:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34265, + "name": "Literal", + "src": "10223:1:96" + } + ], + "id": 34266, + "name": "VariableDeclarationStatement", + "src": "10211:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34264, + "type": "uint256", + "value": "j" + }, + "id": 34267, + "name": "Identifier", + "src": "10226:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34232, + "type": "bytes32[] memory", + "value": "identifiersPerIssuer" + }, + "id": 34268, + "name": "Identifier", + "src": "10230:20:96" + } + ], + "id": 34269, + "name": "MemberAccess", + "src": "10230:27:96" + } + ], + "id": 34270, + "name": "BinaryOperation", + "src": "10226:31:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34264, + "type": "uint256", + "value": "j" + }, + "id": 34271, + "name": "Identifier", + "src": "10259:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34264, + "type": "uint256", + "value": "j" + }, + "id": 34272, + "name": "Identifier", + "src": "10263:1:96" + } + ], + "id": 34273, + "name": "MemberAccess", + "src": "10263:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34274, + "name": "Literal", + "src": "10269:1:96" + } + ], + "id": 34275, + "name": "FunctionCall", + "src": "10263:8:96" + } + ], + "id": 34276, + "name": "Assignment", + "src": "10259:12:96" + } + ], + "id": 34277, + "name": "ExpressionStatement", + "src": "10259:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34207, + "type": "bytes32[] memory", + "value": "identifiers" + }, + "id": 34278, + "name": "Identifier", + "src": "10283:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34235, + "type": "uint256", + "value": "currIndex" + }, + "id": 34279, + "name": "Identifier", + "src": "10295:9:96" + } + ], + "id": 34280, + "name": "IndexAccess", + "src": "10283:22:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34232, + "type": "bytes32[] memory", + "value": "identifiersPerIssuer" + }, + "id": 34281, + "name": "Identifier", + "src": "10308:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34264, + "type": "uint256", + "value": "j" + }, + "id": 34282, + "name": "Identifier", + "src": "10329:1:96" + } + ], + "id": 34283, + "name": "IndexAccess", + "src": "10308:23:96" + } + ], + "id": 34284, + "name": "Assignment", + "src": "10283:48:96" + } + ], + "id": 34285, + "name": "ExpressionStatement", + "src": "10283:48:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34235, + "type": "uint256", + "value": "currIndex" + }, + "id": 34286, + "name": "Identifier", + "src": "10341:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34235, + "type": "uint256", + "value": "currIndex" + }, + "id": 34287, + "name": "Identifier", + "src": "10353:9:96" + } + ], + "id": 34288, + "name": "MemberAccess", + "src": "10353:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34289, + "name": "Literal", + "src": "10367:1:96" + } + ], + "id": 34290, + "name": "FunctionCall", + "src": "10353:16:96" + } + ], + "id": 34291, + "name": "Assignment", + "src": "10341:28:96" + } + ], + "id": 34292, + "name": "ExpressionStatement", + "src": "10341:28:96" + } + ], + "id": 34293, + "name": "Block", + "src": "10273:105:96" + } + ], + "id": 34294, + "name": "ForStatement", + "src": "10206:172:96" + } + ], + "id": 34295, + "name": "Block", + "src": "10119:265:96" + } + ], + "id": 34296, + "name": "ForStatement", + "src": "10058:326:96" + }, + { + "attributes": { + "functionReturnParameters": 34208 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(uint256[] memory,bytes32[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34204, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34297, + "name": "Identifier", + "src": "10397:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34207, + "type": "bytes32[] memory", + "value": "identifiers" + }, + "id": 34298, + "name": "Identifier", + "src": "10414:11:96" + } + ], + "id": 34299, + "name": "TupleExpression", + "src": "10396:30:96" + } + ], + "id": 34300, + "name": "Return", + "src": "10389:37:96" + } + ], + "id": 34301, + "name": "Block", + "src": "9812:619:96" + } + ], + "id": 34302, + "name": "FunctionDefinition", + "src": "9632:799:96" + }, + { + "attributes": { + "documentation": "@notice Validates the given attestation and signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if attestation has been revoked\n@dev Throws if signer is not an authorized AttestationSigner of the issuer", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "validateAttestationSig", + "scope": 34897, + "stateMutability": "view", + "superFunction": 36137, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34303, + "name": "ElementaryTypeName", + "src": "11169:7:96" + } + ], + "id": 34304, + "name": "VariableDeclaration", + "src": "11169:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34305, + "name": "ElementaryTypeName", + "src": "11193:7:96" + } + ], + "id": 34306, + "name": "VariableDeclaration", + "src": "11193:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34307, + "name": "ElementaryTypeName", + "src": "11213:7:96" + } + ], + "id": 34308, + "name": "VariableDeclaration", + "src": "11213:15:96" + }, + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34309, + "name": "ElementaryTypeName", + "src": "11234:7:96" + } + ], + "id": 34310, + "name": "VariableDeclaration", + "src": "11234:14:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34311, + "name": "ElementaryTypeName", + "src": "11254:6:96" + } + ], + "id": 34312, + "name": "VariableDeclaration", + "src": "11254:15:96" + }, + { + "attributes": { + "constant": false, + "name": "v", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "uint8", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 34313, + "name": "ElementaryTypeName", + "src": "11275:5:96" + } + ], + "id": 34314, + "name": "VariableDeclaration", + "src": "11275:7:96" + }, + { + "attributes": { + "constant": false, + "name": "r", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34315, + "name": "ElementaryTypeName", + "src": "11288:7:96" + } + ], + "id": 34316, + "name": "VariableDeclaration", + "src": "11288:9:96" + }, + { + "attributes": { + "constant": false, + "name": "s", + "scope": 34361, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34317, + "name": "ElementaryTypeName", + "src": "11303:7:96" + } + ], + "id": 34318, + "name": "VariableDeclaration", + "src": "11303:9:96" + } + ], + "id": 34319, + "name": "ParameterList", + "src": "11163:153:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 34320, + "name": "ParameterList", + "src": "11329:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61", + "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34321, + "name": "Identifier", + "src": "11432:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "attestationSignerToAccount", + "referencedDeclaration": 8839, + "type": "function (address) view external returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IAccounts", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8548, + "type": "function () view returns (contract IAccounts)", + "value": "getAccounts" + }, + "id": 34322, + "name": "Identifier", + "src": "11447:11:96" + } + ], + "id": 34323, + "name": "FunctionCall", + "src": "11447:13:96" + } + ], + "id": 34324, + "name": "MemberAccess", + "src": "11447:40:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34310, + "type": "address", + "value": "signer" + }, + "id": 34325, + "name": "Identifier", + "src": "11488:6:96" + } + ], + "id": 34326, + "name": "FunctionCall", + "src": "11447:48:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34306, + "type": "address", + "value": "issuer" + }, + "id": 34327, + "name": "Identifier", + "src": "11499:6:96" + } + ], + "id": 34328, + "name": "BinaryOperation", + "src": "11447:58:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f722074686520697373756572", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\"", + "value": "Signer is not a currently authorized AttestationSigner for the issuer" + }, + "id": 34329, + "name": "Literal", + "src": "11513:71:96" + } + ], + "id": 34330, + "name": "FunctionCall", + "src": "11432:158:96" + } + ], + "id": 34331, + "name": "ExpressionStatement", + "src": "11432:158:96" + }, + { + "attributes": { + "assignments": [ + 34333 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "structHash", + "scope": 34360, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34332, + "name": "ElementaryTypeName", + "src": "11596:7:96" + } + ], + "id": 34333, + "name": "VariableDeclaration", + "src": "11596:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34389, + "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)", + "value": "getUniqueAttestationHash" + }, + "id": 34334, + "name": "Identifier", + "src": "11617:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34304, + "type": "bytes32", + "value": "identifier" + }, + "id": 34335, + "name": "Identifier", + "src": "11642:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34306, + "type": "address", + "value": "issuer" + }, + "id": 34336, + "name": "Identifier", + "src": "11654:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34308, + "type": "address", + "value": "account" + }, + "id": 34337, + "name": "Identifier", + "src": "11662:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34310, + "type": "address", + "value": "signer" + }, + "id": 34338, + "name": "Identifier", + "src": "11671:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34312, + "type": "uint64", + "value": "issuedOn" + }, + "id": 34339, + "name": "Identifier", + "src": "11679:8:96" + } + ], + "id": 34340, + "name": "FunctionCall", + "src": "11617:71:96" + } + ], + "id": 34341, + "name": "VariableDeclarationStatement", + "src": "11596:92:96" + }, + { + "attributes": { + "assignments": [ + 34343 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "guessedSigner", + "scope": 34360, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34342, + "name": "ElementaryTypeName", + "src": "11694:7:96" + } + ], + "id": 34343, + "name": "VariableDeclaration", + "src": "11694:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getSignerOfTypedDataHash", + "referencedDeclaration": 6901, + "type": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 6902, + "type": "type(library Signatures)", + "value": "Signatures" + }, + "id": 34344, + "name": "Identifier", + "src": "11718:10:96" + } + ], + "id": 34345, + "name": "MemberAccess", + "src": "11718:35:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33774, + "type": "bytes32", + "value": "eip712DomainSeparator" + }, + "id": 34346, + "name": "Identifier", + "src": "11761:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34333, + "type": "bytes32", + "value": "structHash" + }, + "id": 34347, + "name": "Identifier", + "src": "11790:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34314, + "type": "uint8", + "value": "v" + }, + "id": 34348, + "name": "Identifier", + "src": "11808:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34316, + "type": "bytes32", + "value": "r" + }, + "id": 34349, + "name": "Identifier", + "src": "11817:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34318, + "type": "bytes32", + "value": "s" + }, + "id": 34350, + "name": "Identifier", + "src": "11826:1:96" + } + ], + "id": 34351, + "name": "FunctionCall", + "src": "11718:115:96" + } + ], + "id": 34352, + "name": "VariableDeclarationStatement", + "src": "11694:139:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f", + "typeString": "literal_string \"Signature is invalid\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34353, + "name": "Identifier", + "src": "11839:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34343, + "type": "address", + "value": "guessedSigner" + }, + "id": 34354, + "name": "Identifier", + "src": "11847:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34310, + "type": "address", + "value": "signer" + }, + "id": 34355, + "name": "Identifier", + "src": "11864:6:96" + } + ], + "id": 34356, + "name": "BinaryOperation", + "src": "11847:23:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5369676e617475726520697320696e76616c6964", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Signature is invalid\"", + "value": "Signature is invalid" + }, + "id": 34357, + "name": "Literal", + "src": "11872:22:96" + } + ], + "id": 34358, + "name": "FunctionCall", + "src": "11839:56:96" + } + ], + "id": 34359, + "name": "ExpressionStatement", + "src": "11839:56:96" + } + ], + "id": 34360, + "name": "Block", + "src": "11329:571:96" + } + ], + "id": 34361, + "name": "FunctionDefinition", + "src": "11132:768:96" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getUniqueAttestationHash", + "scope": 34897, + "stateMutability": "pure", + "superFunction": 36152, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34362, + "name": "ElementaryTypeName", + "src": "11943:7:96" + } + ], + "id": 34363, + "name": "VariableDeclaration", + "src": "11943:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34364, + "name": "ElementaryTypeName", + "src": "11967:7:96" + } + ], + "id": 34365, + "name": "VariableDeclaration", + "src": "11967:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34366, + "name": "ElementaryTypeName", + "src": "11987:7:96" + } + ], + "id": 34367, + "name": "VariableDeclaration", + "src": "11987:15:96" + }, + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34368, + "name": "ElementaryTypeName", + "src": "12008:7:96" + } + ], + "id": 34369, + "name": "VariableDeclaration", + "src": "12008:14:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34370, + "name": "ElementaryTypeName", + "src": "12028:6:96" + } + ], + "id": 34371, + "name": "VariableDeclaration", + "src": "12028:15:96" + } + ], + "id": 34372, + "name": "ParameterList", + "src": "11937:110:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 34389, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34373, + "name": "ElementaryTypeName", + "src": "12069:7:96" + } + ], + "id": 34374, + "name": "VariableDeclaration", + "src": "12069:7:96" + } + ], + "id": 34375, + "name": "ParameterList", + "src": "12068:9:96" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 34375 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 34376, + "name": "Identifier", + "src": "12097:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encode", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42893, + "type": "abi", + "value": "abi" + }, + "id": 34377, + "name": "Identifier", + "src": "12116:3:96" + } + ], + "id": 34378, + "name": "MemberAccess", + "src": "12116:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33783, + "type": "bytes32", + "value": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH" + }, + "id": 34379, + "name": "Identifier", + "src": "12138:37:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34363, + "type": "bytes32", + "value": "identifier" + }, + "id": 34380, + "name": "Identifier", + "src": "12187:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34365, + "type": "address", + "value": "issuer" + }, + "id": 34381, + "name": "Identifier", + "src": "12209:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34367, + "type": "address", + "value": "account" + }, + "id": 34382, + "name": "Identifier", + "src": "12227:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34369, + "type": "address", + "value": "signer" + }, + "id": 34383, + "name": "Identifier", + "src": "12246:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34371, + "type": "uint64", + "value": "issuedOn" + }, + "id": 34384, + "name": "Identifier", + "src": "12264:8:96" + } + ], + "id": 34385, + "name": "FunctionCall", + "src": "12116:166:96" + } + ], + "id": 34386, + "name": "FunctionCall", + "src": "12097:193:96" + } + ], + "id": 34387, + "name": "Return", + "src": "12084:206:96" + } + ], + "id": 34388, + "name": "Block", + "src": "12078:217:96" + } + ], + "id": 34389, + "name": "FunctionDefinition", + "src": "11904:391:96" + }, + { + "attributes": { + "documentation": "@notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "setEip712DomainSeparator", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 34390, + "name": "ParameterList", + "src": "12438:2:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 34391, + "name": "ParameterList", + "src": "12450:0:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34393 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "chainId", + "scope": 34423, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34392, + "name": "ElementaryTypeName", + "src": "12456:7:96" + } + ], + "id": 34393, + "name": "VariableDeclaration", + "src": "12456:15:96" + } + ], + "id": 34394, + "name": "VariableDeclarationStatement", + "src": "12456:15:96" + }, + { + "attributes": { + "externalReferences": [ + { + "chainId": { + "declaration": 34393, + "isOffset": false, + "isSlot": false, + "src": "12494:7:96", + "valueSize": 1 + } + } + ], + "operations": "{ chainId := chainid() }" + }, + "children": [], + "id": 34395, + "name": "InlineAssembly", + "src": "12477:41:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33774, + "type": "bytes32", + "value": "eip712DomainSeparator" + }, + "id": 34396, + "name": "Identifier", + "src": "12524:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 34397, + "name": "Identifier", + "src": "12548:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encode", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42893, + "type": "abi", + "value": "abi" + }, + "id": 34398, + "name": "Identifier", + "src": "12565:3:96" + } + ], + "id": 34399, + "name": "MemberAccess", + "src": "12565:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 34400, + "name": "Identifier", + "src": "12585:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"", + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + }, + "id": 34401, + "name": "Literal", + "src": "12606:84:96" + } + ], + "id": 34402, + "name": "FunctionCall", + "src": "12585:115:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 34403, + "name": "Identifier", + "src": "12710:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes memory", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75", + "typeString": "literal_string \"FederatedAttestations\"" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(bytes storage pointer)", + "value": "bytes" + }, + "id": 34404, + "name": "ElementaryTypeNameExpression", + "src": "12720:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4665646572617465644174746573746174696f6e73", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"FederatedAttestations\"", + "value": "FederatedAttestations" + }, + "id": 34405, + "name": "Literal", + "src": "12726:23:96" + } + ], + "id": 34406, + "name": "FunctionCall", + "src": "12720:30:96" + } + ], + "id": 34407, + "name": "FunctionCall", + "src": "12710:41:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3", + "typeString": "literal_string \"1.0\"" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42900, + "type": "function (bytes memory) pure returns (bytes32)", + "value": "keccak256" + }, + "id": 34408, + "name": "Identifier", + "src": "12761:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "312e30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"1.0\"", + "value": "1.0" + }, + "id": 34409, + "name": "Literal", + "src": "12771:5:96" + } + ], + "id": 34410, + "name": "FunctionCall", + "src": "12761:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34393, + "type": "uint256", + "value": "chainId" + }, + "id": 34411, + "name": "Identifier", + "src": "12787:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_FederatedAttestations_$34897", + "typeString": "contract FederatedAttestations" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 34412, + "name": "ElementaryTypeNameExpression", + "src": "12804:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 43128, + "type": "contract FederatedAttestations", + "value": "this" + }, + "id": 34413, + "name": "Identifier", + "src": "12812:4:96" + } + ], + "id": 34414, + "name": "FunctionCall", + "src": "12804:13:96" + } + ], + "id": 34415, + "name": "FunctionCall", + "src": "12565:260:96" + } + ], + "id": 34416, + "name": "FunctionCall", + "src": "12548:283:96" + } + ], + "id": 34417, + "name": "Assignment", + "src": "12524:307:96" + } + ], + "id": 34418, + "name": "ExpressionStatement", + "src": "12524:307:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33793, + "type": "function (bytes32)", + "value": "EIP712DomainSeparatorSet" + }, + "id": 34419, + "name": "Identifier", + "src": "12842:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33774, + "type": "bytes32", + "value": "eip712DomainSeparator" + }, + "id": 34420, + "name": "Identifier", + "src": "12867:21:96" + } + ], + "id": 34421, + "name": "FunctionCall", + "src": "12842:47:96" + } + ], + "id": 34422, + "name": "EmitStatement", + "src": "12837:52:96" + } + ], + "id": 34423, + "name": "Block", + "src": "12450:444:96" + } + ], + "id": 34424, + "name": "FunctionDefinition", + "src": "12405:489:96" + }, + { + "attributes": { + "documentation": "@notice Helper function for lookupAttestations to calculate the\ntotal number of attestations completed for an identifier\nby each trusted issuer\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return totalAttestations Sum total of attestations found\n@return countsPerIssuer Array of number of attestations found per issuer", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getNumAttestations", + "scope": 34897, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34499, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34425, + "name": "ElementaryTypeName", + "src": "13382:7:96" + } + ], + "id": 34426, + "name": "VariableDeclaration", + "src": "13382:18:96" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 34499, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34427, + "name": "ElementaryTypeName", + "src": "13402:7:96" + } + ], + "id": 34428, + "name": "ArrayTypeName", + "src": "13402:9:96" + } + ], + "id": 34429, + "name": "VariableDeclaration", + "src": "13402:31:96" + } + ], + "id": 34430, + "name": "ParameterList", + "src": "13381:53:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "totalAttestations", + "scope": 34499, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34431, + "name": "ElementaryTypeName", + "src": "13470:7:96" + } + ], + "id": 34432, + "name": "VariableDeclaration", + "src": "13470:25:96" + }, + { + "attributes": { + "constant": false, + "name": "countsPerIssuer", + "scope": 34499, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint256[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34433, + "name": "ElementaryTypeName", + "src": "13497:7:96" + } + ], + "id": 34434, + "name": "ArrayTypeName", + "src": "13497:9:96" + } + ], + "id": 34435, + "name": "VariableDeclaration", + "src": "13497:32:96" + } + ], + "id": 34436, + "name": "ParameterList", + "src": "13469:61:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34432, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34437, + "name": "Identifier", + "src": "13539:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34438, + "name": "Literal", + "src": "13559:1:96" + } + ], + "id": 34439, + "name": "Assignment", + "src": "13539:21:96" + } + ], + "id": 34440, + "name": "ExpressionStatement", + "src": "13539:21:96" + }, + { + "attributes": { + "assignments": [ + 34442 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "numAttestationsForIssuer", + "scope": 34498, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34441, + "name": "ElementaryTypeName", + "src": "13566:7:96" + } + ], + "id": 34442, + "name": "VariableDeclaration", + "src": "13566:32:96" + } + ], + "id": 34443, + "name": "VariableDeclarationStatement", + "src": "13566:32:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34435, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34444, + "name": "Identifier", + "src": "13604:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (uint256[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34445, + "name": "ElementaryTypeName", + "src": "13626:7:96" + } + ], + "id": 34446, + "name": "ArrayTypeName", + "src": "13626:9:96" + } + ], + "id": 34447, + "name": "NewExpression", + "src": "13622:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34429, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34448, + "name": "Identifier", + "src": "13636:14:96" + } + ], + "id": 34449, + "name": "MemberAccess", + "src": "13636:21:96" + } + ], + "id": 34450, + "name": "FunctionCall", + "src": "13622:36:96" + } + ], + "id": 34451, + "name": "Assignment", + "src": "13604:54:96" + } + ], + "id": 34452, + "name": "ExpressionStatement", + "src": "13604:54:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34454 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34493, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34453, + "name": "ElementaryTypeName", + "src": "13670:7:96" + } + ], + "id": 34454, + "name": "VariableDeclaration", + "src": "13670:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34455, + "name": "Literal", + "src": "13682:1:96" + } + ], + "id": 34456, + "name": "VariableDeclarationStatement", + "src": "13670:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34454, + "type": "uint256", + "value": "i" + }, + "id": 34457, + "name": "Identifier", + "src": "13685:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34429, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34458, + "name": "Identifier", + "src": "13689:14:96" + } + ], + "id": 34459, + "name": "MemberAccess", + "src": "13689:21:96" + } + ], + "id": 34460, + "name": "BinaryOperation", + "src": "13685:25:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34454, + "type": "uint256", + "value": "i" + }, + "id": 34461, + "name": "Identifier", + "src": "13712:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34454, + "type": "uint256", + "value": "i" + }, + "id": 34462, + "name": "Identifier", + "src": "13716:1:96" + } + ], + "id": 34463, + "name": "MemberAccess", + "src": "13716:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34464, + "name": "Literal", + "src": "13722:1:96" + } + ], + "id": 34465, + "name": "FunctionCall", + "src": "13716:8:96" + } + ], + "id": 34466, + "name": "Assignment", + "src": "13712:12:96" + } + ], + "id": 34467, + "name": "ExpressionStatement", + "src": "13712:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34442, + "type": "uint256", + "value": "numAttestationsForIssuer" + }, + "id": 34468, + "name": "Identifier", + "src": "13734:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34469, + "name": "Identifier", + "src": "13761:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34426, + "type": "bytes32", + "value": "identifier" + }, + "id": 34470, + "name": "Identifier", + "src": "13786:10:96" + } + ], + "id": 34471, + "name": "IndexAccess", + "src": "13761:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34429, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34472, + "name": "Identifier", + "src": "13798:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34454, + "type": "uint256", + "value": "i" + }, + "id": 34473, + "name": "Identifier", + "src": "13813:1:96" + } + ], + "id": 34474, + "name": "IndexAccess", + "src": "13798:17:96" + } + ], + "id": 34475, + "name": "IndexAccess", + "src": "13761:55:96" + } + ], + "id": 34476, + "name": "MemberAccess", + "src": "13761:62:96" + } + ], + "id": 34477, + "name": "Assignment", + "src": "13734:89:96" + } + ], + "id": 34478, + "name": "ExpressionStatement", + "src": "13734:89:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34432, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34479, + "name": "Identifier", + "src": "13831:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34432, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34480, + "name": "Identifier", + "src": "13851:17:96" + } + ], + "id": 34481, + "name": "MemberAccess", + "src": "13851:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34442, + "type": "uint256", + "value": "numAttestationsForIssuer" + }, + "id": 34482, + "name": "Identifier", + "src": "13873:24:96" + } + ], + "id": 34483, + "name": "FunctionCall", + "src": "13851:47:96" + } + ], + "id": 34484, + "name": "Assignment", + "src": "13831:67:96" + } + ], + "id": 34485, + "name": "ExpressionStatement", + "src": "13831:67:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34435, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34486, + "name": "Identifier", + "src": "13906:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34454, + "type": "uint256", + "value": "i" + }, + "id": 34487, + "name": "Identifier", + "src": "13922:1:96" + } + ], + "id": 34488, + "name": "IndexAccess", + "src": "13906:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34442, + "type": "uint256", + "value": "numAttestationsForIssuer" + }, + "id": 34489, + "name": "Identifier", + "src": "13927:24:96" + } + ], + "id": 34490, + "name": "Assignment", + "src": "13906:45:96" + } + ], + "id": 34491, + "name": "ExpressionStatement", + "src": "13906:45:96" + } + ], + "id": 34492, + "name": "Block", + "src": "13726:232:96" + } + ], + "id": 34493, + "name": "ForStatement", + "src": "13665:293:96" + }, + { + "attributes": { + "functionReturnParameters": 34436 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(uint256,uint256[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34432, + "type": "uint256", + "value": "totalAttestations" + }, + "id": 34494, + "name": "Identifier", + "src": "13971:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34435, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34495, + "name": "Identifier", + "src": "13990:15:96" + } + ], + "id": 34496, + "name": "TupleExpression", + "src": "13970:36:96" + } + ], + "id": 34497, + "name": "Return", + "src": "13963:43:96" + } + ], + "id": 34498, + "name": "Block", + "src": "13533:478:96" + } + ], + "id": 34499, + "name": "FunctionDefinition", + "src": "13354:657:96" + }, + { + "attributes": { + "documentation": "@notice Helper function for lookupIdentifiers to calculate the\ntotal number of identifiers completed for an identifier\nby each trusted issuer\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifiers will be included\n@return totalIdentifiers Sum total of identifiers found\n@return countsPerIssuer Array of number of identifiers found per issuer", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getNumIdentifiers", + "scope": 34897, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34574, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34500, + "name": "ElementaryTypeName", + "src": "14489:7:96" + } + ], + "id": 34501, + "name": "VariableDeclaration", + "src": "14489:15:96" + }, + { + "attributes": { + "constant": false, + "name": "trustedIssuers", + "scope": 34574, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34502, + "name": "ElementaryTypeName", + "src": "14506:7:96" + } + ], + "id": 34503, + "name": "ArrayTypeName", + "src": "14506:9:96" + } + ], + "id": 34504, + "name": "VariableDeclaration", + "src": "14506:31:96" + } + ], + "id": 34505, + "name": "ParameterList", + "src": "14488:50:96" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "totalIdentifiers", + "scope": 34574, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34506, + "name": "ElementaryTypeName", + "src": "14574:7:96" + } + ], + "id": 34507, + "name": "VariableDeclaration", + "src": "14574:24:96" + }, + { + "attributes": { + "constant": false, + "name": "countsPerIssuer", + "scope": 34574, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint256[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34508, + "name": "ElementaryTypeName", + "src": "14600:7:96" + } + ], + "id": 34509, + "name": "ArrayTypeName", + "src": "14600:9:96" + } + ], + "id": 34510, + "name": "VariableDeclaration", + "src": "14600:32:96" + } + ], + "id": 34511, + "name": "ParameterList", + "src": "14573:60:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34507, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34512, + "name": "Identifier", + "src": "14642:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34513, + "name": "Literal", + "src": "14661:1:96" + } + ], + "id": 34514, + "name": "Assignment", + "src": "14642:20:96" + } + ], + "id": 34515, + "name": "ExpressionStatement", + "src": "14642:20:96" + }, + { + "attributes": { + "assignments": [ + 34517 + ], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "numIdentifiersForIssuer", + "scope": 34573, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34516, + "name": "ElementaryTypeName", + "src": "14668:7:96" + } + ], + "id": 34517, + "name": "VariableDeclaration", + "src": "14668:31:96" + } + ], + "id": 34518, + "name": "VariableDeclarationStatement", + "src": "14668:31:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256[] memory" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34510, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34519, + "name": "Identifier", + "src": "14705:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256[] memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "function (uint256) pure returns (uint256[] memory)" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34520, + "name": "ElementaryTypeName", + "src": "14727:7:96" + } + ], + "id": 34521, + "name": "ArrayTypeName", + "src": "14727:9:96" + } + ], + "id": 34522, + "name": "NewExpression", + "src": "14723:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34504, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34523, + "name": "Identifier", + "src": "14737:14:96" + } + ], + "id": 34524, + "name": "MemberAccess", + "src": "14737:21:96" + } + ], + "id": 34525, + "name": "FunctionCall", + "src": "14723:36:96" + } + ], + "id": 34526, + "name": "Assignment", + "src": "14705:54:96" + } + ], + "id": 34527, + "name": "ExpressionStatement", + "src": "14705:54:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34529 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34568, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34528, + "name": "ElementaryTypeName", + "src": "14771:7:96" + } + ], + "id": 34529, + "name": "VariableDeclaration", + "src": "14771:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34530, + "name": "Literal", + "src": "14783:1:96" + } + ], + "id": 34531, + "name": "VariableDeclarationStatement", + "src": "14771:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34529, + "type": "uint256", + "value": "i" + }, + "id": 34532, + "name": "Identifier", + "src": "14786:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34504, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34533, + "name": "Identifier", + "src": "14790:14:96" + } + ], + "id": 34534, + "name": "MemberAccess", + "src": "14790:21:96" + } + ], + "id": 34535, + "name": "BinaryOperation", + "src": "14786:25:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34529, + "type": "uint256", + "value": "i" + }, + "id": 34536, + "name": "Identifier", + "src": "14813:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34529, + "type": "uint256", + "value": "i" + }, + "id": 34537, + "name": "Identifier", + "src": "14817:1:96" + } + ], + "id": 34538, + "name": "MemberAccess", + "src": "14817:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34539, + "name": "Literal", + "src": "14823:1:96" + } + ], + "id": 34540, + "name": "FunctionCall", + "src": "14817:8:96" + } + ], + "id": 34541, + "name": "Assignment", + "src": "14813:12:96" + } + ], + "id": 34542, + "name": "ExpressionStatement", + "src": "14813:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34517, + "type": "uint256", + "value": "numIdentifiersForIssuer" + }, + "id": 34543, + "name": "Identifier", + "src": "14835:23:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bytes32[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33768, + "type": "mapping(address => mapping(address => bytes32[] storage ref))", + "value": "addressToIdentifiers" + }, + "id": 34544, + "name": "Identifier", + "src": "14861:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34501, + "type": "address", + "value": "account" + }, + "id": 34545, + "name": "Identifier", + "src": "14882:7:96" + } + ], + "id": 34546, + "name": "IndexAccess", + "src": "14861:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34504, + "type": "address[] memory", + "value": "trustedIssuers" + }, + "id": 34547, + "name": "Identifier", + "src": "14891:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34529, + "type": "uint256", + "value": "i" + }, + "id": 34548, + "name": "Identifier", + "src": "14906:1:96" + } + ], + "id": 34549, + "name": "IndexAccess", + "src": "14891:17:96" + } + ], + "id": 34550, + "name": "IndexAccess", + "src": "14861:48:96" + } + ], + "id": 34551, + "name": "MemberAccess", + "src": "14861:55:96" + } + ], + "id": 34552, + "name": "Assignment", + "src": "14835:81:96" + } + ], + "id": 34553, + "name": "ExpressionStatement", + "src": "14835:81:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34507, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34554, + "name": "Identifier", + "src": "14924:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34507, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34555, + "name": "Identifier", + "src": "14943:16:96" + } + ], + "id": 34556, + "name": "MemberAccess", + "src": "14943:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34517, + "type": "uint256", + "value": "numIdentifiersForIssuer" + }, + "id": 34557, + "name": "Identifier", + "src": "14964:23:96" + } + ], + "id": 34558, + "name": "FunctionCall", + "src": "14943:45:96" + } + ], + "id": 34559, + "name": "Assignment", + "src": "14924:64:96" + } + ], + "id": 34560, + "name": "ExpressionStatement", + "src": "14924:64:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34510, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34561, + "name": "Identifier", + "src": "14996:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34529, + "type": "uint256", + "value": "i" + }, + "id": 34562, + "name": "Identifier", + "src": "15012:1:96" + } + ], + "id": 34563, + "name": "IndexAccess", + "src": "14996:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34517, + "type": "uint256", + "value": "numIdentifiersForIssuer" + }, + "id": 34564, + "name": "Identifier", + "src": "15017:23:96" + } + ], + "id": 34565, + "name": "Assignment", + "src": "14996:44:96" + } + ], + "id": 34566, + "name": "ExpressionStatement", + "src": "14996:44:96" + } + ], + "id": 34567, + "name": "Block", + "src": "14827:220:96" + } + ], + "id": 34568, + "name": "ForStatement", + "src": "14766:281:96" + }, + { + "attributes": { + "functionReturnParameters": 34511 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "tuple(uint256,uint256[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34507, + "type": "uint256", + "value": "totalIdentifiers" + }, + "id": 34569, + "name": "Identifier", + "src": "15060:16:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34510, + "type": "uint256[] memory", + "value": "countsPerIssuer" + }, + "id": 34570, + "name": "Identifier", + "src": "15078:15:96" + } + ], + "id": 34571, + "name": "TupleExpression", + "src": "15059:35:96" + } + ], + "id": 34572, + "name": "Return", + "src": "15052:42:96" + } + ], + "id": 34573, + "name": "Block", + "src": "14636:463:96" + } + ], + "id": 34574, + "name": "FunctionDefinition", + "src": "14462:637:96" + }, + { + "attributes": { + "documentation": "@notice Registers an attestation\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "_registerAttestation", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34709, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34575, + "name": "ElementaryTypeName", + "src": "15519:7:96" + } + ], + "id": 34576, + "name": "VariableDeclaration", + "src": "15519:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 34709, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34577, + "name": "ElementaryTypeName", + "src": "15543:7:96" + } + ], + "id": 34578, + "name": "VariableDeclaration", + "src": "15543:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34709, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34579, + "name": "ElementaryTypeName", + "src": "15563:7:96" + } + ], + "id": 34580, + "name": "VariableDeclaration", + "src": "15563:15:96" + }, + { + "attributes": { + "constant": false, + "name": "signer", + "scope": 34709, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34581, + "name": "ElementaryTypeName", + "src": "15584:7:96" + } + ], + "id": 34582, + "name": "VariableDeclaration", + "src": "15584:14:96" + }, + { + "attributes": { + "constant": false, + "name": "issuedOn", + "scope": 34709, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34583, + "name": "ElementaryTypeName", + "src": "15604:6:96" + } + ], + "id": 34584, + "name": "VariableDeclaration", + "src": "15604:15:96" + } + ], + "id": 34585, + "name": "ParameterList", + "src": "15513:110:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 34586, + "name": "ParameterList", + "src": "15632:0:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909", + "typeString": "literal_string \"Attestation has been revoked\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34587, + "name": "Identifier", + "src": "15638:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33772, + "type": "mapping(bytes32 => bool)", + "value": "revokedAttestations" + }, + "id": 34588, + "name": "Identifier", + "src": "15654:19:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34389, + "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)", + "value": "getUniqueAttestationHash" + }, + "id": 34589, + "name": "Identifier", + "src": "15674:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34590, + "name": "Identifier", + "src": "15699:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34591, + "name": "Identifier", + "src": "15711:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34592, + "name": "Identifier", + "src": "15719:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34582, + "type": "address", + "value": "signer" + }, + "id": 34593, + "name": "Identifier", + "src": "15728:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34584, + "type": "uint64", + "value": "issuedOn" + }, + "id": 34594, + "name": "Identifier", + "src": "15736:8:96" + } + ], + "id": 34595, + "name": "FunctionCall", + "src": "15674:71:96" + } + ], + "id": 34596, + "name": "IndexAccess", + "src": "15654:92:96" + } + ], + "id": 34597, + "name": "UnaryOperation", + "src": "15653:93:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4174746573746174696f6e20686173206265656e207265766f6b6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Attestation has been revoked\"", + "value": "Attestation has been revoked" + }, + "id": 34598, + "name": "Literal", + "src": "15754:30:96" + } + ], + "id": 34599, + "name": "FunctionCall", + "src": "15638:152:96" + } + ], + "id": 34600, + "name": "ExpressionStatement", + "src": "15638:152:96" + }, + { + "attributes": { + "assignments": [ + 34602 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "numExistingAttestations", + "scope": 34708, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34601, + "name": "ElementaryTypeName", + "src": "15796:7:96" + } + ], + "id": 34602, + "name": "VariableDeclaration", + "src": "15796:31:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34603, + "name": "Identifier", + "src": "15830:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34604, + "name": "Identifier", + "src": "15855:10:96" + } + ], + "id": 34605, + "name": "IndexAccess", + "src": "15830:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34606, + "name": "Identifier", + "src": "15867:6:96" + } + ], + "id": 34607, + "name": "IndexAccess", + "src": "15830:44:96" + } + ], + "id": 34608, + "name": "MemberAccess", + "src": "15830:51:96" + } + ], + "id": 34609, + "name": "VariableDeclarationStatement", + "src": "15796:85:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d", + "typeString": "literal_string \"Max attestations already registered for identifier\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34610, + "name": "Identifier", + "src": "15887:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34602, + "type": "uint256", + "value": "numExistingAttestations" + }, + "id": 34611, + "name": "Identifier", + "src": "15902:23:96" + } + ], + "id": 34612, + "name": "MemberAccess", + "src": "15902:27:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34613, + "name": "Literal", + "src": "15930:1:96" + } + ], + "id": 34614, + "name": "FunctionCall", + "src": "15902:30:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33786, + "type": "uint256", + "value": "MAX_ATTESTATIONS_PER_IDENTIFIER" + }, + "id": 34615, + "name": "Identifier", + "src": "15936:31:96" + } + ], + "id": 34616, + "name": "BinaryOperation", + "src": "15902:65:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Max attestations already registered for identifier\"", + "value": "Max attestations already registered for identifier" + }, + "id": 34617, + "name": "Literal", + "src": "15975:52:96" + } + ], + "id": 34618, + "name": "FunctionCall", + "src": "15887:146:96" + } + ], + "id": 34619, + "name": "ExpressionStatement", + "src": "15887:146:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa", + "typeString": "literal_string \"Max identifiers already registered for account\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34620, + "name": "Identifier", + "src": "16039:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bytes32[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33768, + "type": "mapping(address => mapping(address => bytes32[] storage ref))", + "value": "addressToIdentifiers" + }, + "id": 34621, + "name": "Identifier", + "src": "16054:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34622, + "name": "Identifier", + "src": "16075:7:96" + } + ], + "id": 34623, + "name": "IndexAccess", + "src": "16054:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34624, + "name": "Identifier", + "src": "16084:6:96" + } + ], + "id": 34625, + "name": "IndexAccess", + "src": "16054:37:96" + } + ], + "id": 34626, + "name": "MemberAccess", + "src": "16054:44:96" + } + ], + "id": 34627, + "name": "MemberAccess", + "src": "16054:48:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34628, + "name": "Literal", + "src": "16103:1:96" + } + ], + "id": 34629, + "name": "FunctionCall", + "src": "16054:51:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33789, + "type": "uint256", + "value": "MAX_IDENTIFIERS_PER_ADDRESS" + }, + "id": 34630, + "name": "Identifier", + "src": "16109:27:96" + } + ], + "id": 34631, + "name": "BinaryOperation", + "src": "16054:82:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e74", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Max identifiers already registered for account\"", + "value": "Max identifiers already registered for account" + }, + "id": 34632, + "name": "Literal", + "src": "16144:48:96" + } + ], + "id": 34633, + "name": "FunctionCall", + "src": "16039:159:96" + } + ], + "id": 34634, + "name": "ExpressionStatement", + "src": "16039:159:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34636 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34664, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34635, + "name": "ElementaryTypeName", + "src": "16210:7:96" + } + ], + "id": 34636, + "name": "VariableDeclaration", + "src": "16210:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34637, + "name": "Literal", + "src": "16222:1:96" + } + ], + "id": 34638, + "name": "VariableDeclarationStatement", + "src": "16210:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34636, + "type": "uint256", + "value": "i" + }, + "id": 34639, + "name": "Identifier", + "src": "16225:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34602, + "type": "uint256", + "value": "numExistingAttestations" + }, + "id": 34640, + "name": "Identifier", + "src": "16229:23:96" + } + ], + "id": 34641, + "name": "BinaryOperation", + "src": "16225:27:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34636, + "type": "uint256", + "value": "i" + }, + "id": 34642, + "name": "Identifier", + "src": "16254:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34636, + "type": "uint256", + "value": "i" + }, + "id": 34643, + "name": "Identifier", + "src": "16258:1:96" + } + ], + "id": 34644, + "name": "MemberAccess", + "src": "16258:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34645, + "name": "Literal", + "src": "16264:1:96" + } + ], + "id": 34646, + "name": "FunctionCall", + "src": "16258:8:96" + } + ], + "id": 34647, + "name": "Assignment", + "src": "16254:12:96" + } + ], + "id": 34648, + "name": "ExpressionStatement", + "src": "16254:12:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585", + "typeString": "literal_string \"Attestation for this account already exists\"" + } + ], + "overloadedDeclarations": [ + 42909, + 42910 + ], + "referencedDeclaration": 42910, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 34649, + "name": "Identifier", + "src": "16494:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "account", + "referencedDeclaration": 33747, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34650, + "name": "Identifier", + "src": "16511:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34651, + "name": "Identifier", + "src": "16536:10:96" + } + ], + "id": 34652, + "name": "IndexAccess", + "src": "16511:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34653, + "name": "Identifier", + "src": "16548:6:96" + } + ], + "id": 34654, + "name": "IndexAccess", + "src": "16511:44:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34636, + "type": "uint256", + "value": "i" + }, + "id": 34655, + "name": "Identifier", + "src": "16556:1:96" + } + ], + "id": 34656, + "name": "IndexAccess", + "src": "16511:47:96" + } + ], + "id": 34657, + "name": "MemberAccess", + "src": "16511:55:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34658, + "name": "Identifier", + "src": "16570:7:96" + } + ], + "id": 34659, + "name": "BinaryOperation", + "src": "16511:66:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4174746573746174696f6e20666f722074686973206163636f756e7420616c726561647920657869737473", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Attestation for this account already exists\"", + "value": "Attestation for this account already exists" + }, + "id": 34660, + "name": "Literal", + "src": "16587:45:96" + } + ], + "id": 34661, + "name": "FunctionCall", + "src": "16494:146:96" + } + ], + "id": 34662, + "name": "ExpressionStatement", + "src": "16494:146:96" + } + ], + "id": 34663, + "name": "Block", + "src": "16268:379:96" + } + ], + "id": 34664, + "name": "ForStatement", + "src": "16205:442:96" + }, + { + "attributes": { + "assignments": [ + 34666 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "publishedOn", + "scope": 34708, + "stateVariable": false, + "storageLocation": "default", + "type": "uint64", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint64", + "type": "uint64" + }, + "id": 34665, + "name": "ElementaryTypeName", + "src": "16652:6:96" + } + ], + "id": 34666, + "name": "VariableDeclaration", + "src": "16652:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint64", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint64)", + "value": "uint64" + }, + "id": 34667, + "name": "ElementaryTypeNameExpression", + "src": "16673:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42896, + "type": "block", + "value": "block" + }, + "id": 34668, + "name": "Identifier", + "src": "16680:5:96" + } + ], + "id": 34669, + "name": "MemberAccess", + "src": "16680:15:96" + } + ], + "id": 34670, + "name": "FunctionCall", + "src": "16673:23:96" + } + ], + "id": 34671, + "name": "VariableDeclarationStatement", + "src": "16652:44:96" + }, + { + "attributes": { + "assignments": [ + 34673 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestation", + "scope": 34708, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct FederatedAttestations.OwnershipAttestation", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "OwnershipAttestation", + "referencedDeclaration": 33754, + "type": "struct FederatedAttestations.OwnershipAttestation" + }, + "id": 34672, + "name": "UserDefinedTypeName", + "src": "16702:20:96" + } + ], + "id": 34673, + "name": "VariableDeclaration", + "src": "16702:39:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": true, + "lValueRequested": false, + "names": [ + null + ], + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33754, + "type": "type(struct FederatedAttestations.OwnershipAttestation storage pointer)", + "value": "OwnershipAttestation" + }, + "id": 34674, + "name": "Identifier", + "src": "16744:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34675, + "name": "Identifier", + "src": "16772:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34582, + "type": "address", + "value": "signer" + }, + "id": 34676, + "name": "Identifier", + "src": "16787:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34584, + "type": "uint64", + "value": "issuedOn" + }, + "id": 34677, + "name": "Identifier", + "src": "16801:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34666, + "type": "uint64", + "value": "publishedOn" + }, + "id": 34678, + "name": "Identifier", + "src": "16817:11:96" + } + ], + "id": 34679, + "name": "FunctionCall", + "src": "16744:90:96" + } + ], + "id": 34680, + "name": "VariableDeclarationStatement", + "src": "16702:132:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr", + "typeString": "struct FederatedAttestations.OwnershipAttestation memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "push", + "referencedDeclaration": null, + "type": "function (struct FederatedAttestations.OwnershipAttestation storage ref) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34681, + "name": "Identifier", + "src": "16840:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34682, + "name": "Identifier", + "src": "16865:10:96" + } + ], + "id": 34684, + "name": "IndexAccess", + "src": "16840:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34683, + "name": "Identifier", + "src": "16877:6:96" + } + ], + "id": 34685, + "name": "IndexAccess", + "src": "16840:44:96" + } + ], + "id": 34686, + "name": "MemberAccess", + "src": "16840:49:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34673, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34687, + "name": "Identifier", + "src": "16890:11:96" + } + ], + "id": 34688, + "name": "FunctionCall", + "src": "16840:62:96" + } + ], + "id": 34689, + "name": "ExpressionStatement", + "src": "16840:62:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "push", + "referencedDeclaration": null, + "type": "function (bytes32) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bytes32[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33768, + "type": "mapping(address => mapping(address => bytes32[] storage ref))", + "value": "addressToIdentifiers" + }, + "id": 34690, + "name": "Identifier", + "src": "16908:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34691, + "name": "Identifier", + "src": "16929:7:96" + } + ], + "id": 34693, + "name": "IndexAccess", + "src": "16908:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34692, + "name": "Identifier", + "src": "16938:6:96" + } + ], + "id": 34694, + "name": "IndexAccess", + "src": "16908:37:96" + } + ], + "id": 34695, + "name": "MemberAccess", + "src": "16908:42:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34696, + "name": "Identifier", + "src": "16951:10:96" + } + ], + "id": 34697, + "name": "FunctionCall", + "src": "16908:54:96" + } + ], + "id": 34698, + "name": "ExpressionStatement", + "src": "16908:54:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33807, + "type": "function (bytes32,address,address,address,uint64,uint64)", + "value": "AttestationRegistered" + }, + "id": 34699, + "name": "Identifier", + "src": "16973:21:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34576, + "type": "bytes32", + "value": "identifier" + }, + "id": 34700, + "name": "Identifier", + "src": "16995:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34578, + "type": "address", + "value": "issuer" + }, + "id": 34701, + "name": "Identifier", + "src": "17007:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34580, + "type": "address", + "value": "account" + }, + "id": 34702, + "name": "Identifier", + "src": "17015:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34582, + "type": "address", + "value": "signer" + }, + "id": 34703, + "name": "Identifier", + "src": "17024:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34584, + "type": "uint64", + "value": "issuedOn" + }, + "id": 34704, + "name": "Identifier", + "src": "17032:8:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34666, + "type": "uint64", + "value": "publishedOn" + }, + "id": 34705, + "name": "Identifier", + "src": "17042:11:96" + } + ], + "id": 34706, + "name": "FunctionCall", + "src": "16973:81:96" + } + ], + "id": 34707, + "name": "EmitStatement", + "src": "16968:86:96" + } + ], + "id": 34708, + "name": "Block", + "src": "15632:1427:96" + } + ], + "id": 34709, + "name": "FunctionDefinition", + "src": "15484:1575:96" + }, + { + "attributes": { + "documentation": "@notice Revokes an attestation:\n helper function for revokeAttestation and batchRevokeAttestations\n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Reverts if attestation is not found mapping identifier <-> account", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "_revokeAttestation", + "scope": 34897, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "identifier", + "scope": 34896, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34710, + "name": "ElementaryTypeName", + "src": "17470:7:96" + } + ], + "id": 34711, + "name": "VariableDeclaration", + "src": "17470:18:96" + }, + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 34896, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34712, + "name": "ElementaryTypeName", + "src": "17490:7:96" + } + ], + "id": 34713, + "name": "VariableDeclaration", + "src": "17490:14:96" + }, + { + "attributes": { + "constant": false, + "name": "account", + "scope": 34896, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 34714, + "name": "ElementaryTypeName", + "src": "17506:7:96" + } + ], + "id": 34715, + "name": "VariableDeclaration", + "src": "17506:15:96" + } + ], + "id": 34716, + "name": "ParameterList", + "src": "17469:53:96" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 34717, + "name": "ParameterList", + "src": "17531:0:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34721 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestations", + "scope": 34895, + "stateVariable": false, + "storageLocation": "storage", + "type": "struct FederatedAttestations.OwnershipAttestation[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "struct FederatedAttestations.OwnershipAttestation[]" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "OwnershipAttestation", + "referencedDeclaration": 33754, + "type": "struct FederatedAttestations.OwnershipAttestation" + }, + "id": 34719, + "name": "UserDefinedTypeName", + "src": "17537:20:96" + } + ], + "id": 34720, + "name": "ArrayTypeName", + "src": "17537:22:96" + } + ], + "id": 34721, + "name": "VariableDeclaration", + "src": "17537:43:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33761, + "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))", + "value": "identifierToAttestations" + }, + "id": 34722, + "name": "Identifier", + "src": "17583:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34711, + "type": "bytes32", + "value": "identifier" + }, + "id": 34723, + "name": "Identifier", + "src": "17608:10:96" + } + ], + "id": 34724, + "name": "IndexAccess", + "src": "17583:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34713, + "type": "address", + "value": "issuer" + }, + "id": 34725, + "name": "Identifier", + "src": "17620:6:96" + } + ], + "id": 34726, + "name": "IndexAccess", + "src": "17583:44:96" + } + ], + "id": 34727, + "name": "VariableDeclarationStatement", + "src": "17537:90:96" + }, + { + "attributes": { + "assignments": [ + 34729 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "lenAttestations", + "scope": 34895, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34728, + "name": "ElementaryTypeName", + "src": "17633:7:96" + } + ], + "id": 34729, + "name": "VariableDeclaration", + "src": "17633:23:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34730, + "name": "Identifier", + "src": "17659:12:96" + } + ], + "id": 34731, + "name": "MemberAccess", + "src": "17659:19:96" + } + ], + "id": 34732, + "name": "VariableDeclarationStatement", + "src": "17633:45:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34734 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 34890, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34733, + "name": "ElementaryTypeName", + "src": "17689:7:96" + } + ], + "id": 34734, + "name": "VariableDeclaration", + "src": "17689:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34735, + "name": "Literal", + "src": "17701:1:96" + } + ], + "id": 34736, + "name": "VariableDeclarationStatement", + "src": "17689:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34737, + "name": "Identifier", + "src": "17704:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34729, + "type": "uint256", + "value": "lenAttestations" + }, + "id": 34738, + "name": "Identifier", + "src": "17708:15:96" + } + ], + "id": 34739, + "name": "BinaryOperation", + "src": "17704:19:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34740, + "name": "Identifier", + "src": "17725:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34741, + "name": "Identifier", + "src": "17729:1:96" + } + ], + "id": 34742, + "name": "MemberAccess", + "src": "17729:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34743, + "name": "Literal", + "src": "17735:1:96" + } + ], + "id": 34744, + "name": "FunctionCall", + "src": "17729:8:96" + } + ], + "id": 34745, + "name": "Assignment", + "src": "17725:12:96" + } + ], + "id": 34746, + "name": "ExpressionStatement", + "src": "17725:12:96" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "account", + "referencedDeclaration": 33747, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34747, + "name": "Identifier", + "src": "17751:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34748, + "name": "Identifier", + "src": "17764:1:96" + } + ], + "id": 34749, + "name": "IndexAccess", + "src": "17751:15:96" + } + ], + "id": 34750, + "name": "MemberAccess", + "src": "17751:23:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34715, + "type": "address", + "value": "account" + }, + "id": 34751, + "name": "Identifier", + "src": "17778:7:96" + } + ], + "id": 34752, + "name": "BinaryOperation", + "src": "17751:34:96" + }, + { + "children": [ + { + "id": 34753, + "name": "Continue", + "src": "17797:8:96" + } + ], + "id": 34754, + "name": "Block", + "src": "17787:27:96" + } + ], + "id": 34755, + "name": "IfStatement", + "src": "17747:67:96" + }, + { + "attributes": { + "assignments": [ + 34757 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestation", + "scope": 34889, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct FederatedAttestations.OwnershipAttestation", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "OwnershipAttestation", + "referencedDeclaration": 33754, + "type": "struct FederatedAttestations.OwnershipAttestation" + }, + "id": 34756, + "name": "UserDefinedTypeName", + "src": "17822:20:96" + } + ], + "id": 34757, + "name": "VariableDeclaration", + "src": "17822:39:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34758, + "name": "Identifier", + "src": "17864:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34759, + "name": "Identifier", + "src": "17877:1:96" + } + ], + "id": 34760, + "name": "IndexAccess", + "src": "17864:15:96" + } + ], + "id": 34761, + "name": "VariableDeclarationStatement", + "src": "17822:57:96" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34762, + "name": "Identifier", + "src": "18080:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34729, + "type": "uint256", + "value": "lenAttestations" + }, + "id": 34763, + "name": "Identifier", + "src": "18085:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34764, + "name": "Literal", + "src": "18103:1:96" + } + ], + "id": 34765, + "name": "BinaryOperation", + "src": "18085:19:96" + } + ], + "id": 34766, + "name": "BinaryOperation", + "src": "18080:24:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34767, + "name": "Identifier", + "src": "18116:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34734, + "type": "uint256", + "value": "i" + }, + "id": 34768, + "name": "Identifier", + "src": "18129:1:96" + } + ], + "id": 34769, + "name": "IndexAccess", + "src": "18116:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34770, + "name": "Identifier", + "src": "18134:12:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34729, + "type": "uint256", + "value": "lenAttestations" + }, + "id": 34771, + "name": "Identifier", + "src": "18147:15:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34772, + "name": "Literal", + "src": "18165:1:96" + } + ], + "id": 34773, + "name": "BinaryOperation", + "src": "18147:19:96" + } + ], + "id": 34774, + "name": "IndexAccess", + "src": "18134:33:96" + } + ], + "id": 34775, + "name": "Assignment", + "src": "18116:51:96" + } + ], + "id": 34776, + "name": "ExpressionStatement", + "src": "18116:51:96" + } + ], + "id": 34777, + "name": "Block", + "src": "18106:70:96" + } + ], + "id": 34778, + "name": "IfStatement", + "src": "18076:100:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "pop", + "referencedDeclaration": null, + "type": "function ()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34721, + "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer", + "value": "attestations" + }, + "id": 34779, + "name": "Identifier", + "src": "18183:12:96" + } + ], + "id": 34781, + "name": "MemberAccess", + "src": "18183:16:96" + } + ], + "id": 34782, + "name": "FunctionCall", + "src": "18183:18:96" + } + ], + "id": 34783, + "name": "ExpressionStatement", + "src": "18183:18:96" + }, + { + "attributes": { + "assignments": [ + 34785 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "deletedIdentifier", + "scope": 34889, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 34784, + "name": "ElementaryTypeName", + "src": "18210:4:96" + } + ], + "id": 34785, + "name": "VariableDeclaration", + "src": "18210:22:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "66616c7365", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "false" + }, + "id": 34786, + "name": "Literal", + "src": "18235:5:96" + } + ], + "id": 34787, + "name": "VariableDeclarationStatement", + "src": "18210:30:96" + }, + { + "attributes": { + "assignments": [ + 34791 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "identifiers", + "scope": 34889, + "stateVariable": false, + "storageLocation": "storage", + "type": "bytes32[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "bytes32[]" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34789, + "name": "ElementaryTypeName", + "src": "18248:7:96" + } + ], + "id": 34790, + "name": "ArrayTypeName", + "src": "18248:9:96" + } + ], + "id": 34791, + "name": "VariableDeclaration", + "src": "18248:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bytes32[] storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33768, + "type": "mapping(address => mapping(address => bytes32[] storage ref))", + "value": "addressToIdentifiers" + }, + "id": 34792, + "name": "Identifier", + "src": "18280:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34715, + "type": "address", + "value": "account" + }, + "id": 34793, + "name": "Identifier", + "src": "18301:7:96" + } + ], + "id": 34794, + "name": "IndexAccess", + "src": "18280:29:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34713, + "type": "address", + "value": "issuer" + }, + "id": 34795, + "name": "Identifier", + "src": "18310:6:96" + } + ], + "id": 34796, + "name": "IndexAccess", + "src": "18280:37:96" + } + ], + "id": 34797, + "name": "VariableDeclarationStatement", + "src": "18248:69:96" + }, + { + "attributes": { + "assignments": [ + 34799 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "lenIdentifiers", + "scope": 34889, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34798, + "name": "ElementaryTypeName", + "src": "18325:7:96" + } + ], + "id": 34799, + "name": "VariableDeclaration", + "src": "18325:22:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34791, + "type": "bytes32[] storage pointer", + "value": "identifiers" + }, + "id": 34800, + "name": "Identifier", + "src": "18350:11:96" + } + ], + "id": 34801, + "name": "MemberAccess", + "src": "18350:18:96" + } + ], + "id": 34802, + "name": "VariableDeclarationStatement", + "src": "18325:43:96" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 34804 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "j", + "scope": 34853, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 34803, + "name": "ElementaryTypeName", + "src": "18382:7:96" + } + ], + "id": 34804, + "name": "VariableDeclaration", + "src": "18382:9:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 34805, + "name": "Literal", + "src": "18394:1:96" + } + ], + "id": 34806, + "name": "VariableDeclarationStatement", + "src": "18382:13:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34807, + "name": "Identifier", + "src": "18397:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34799, + "type": "uint256", + "value": "lenIdentifiers" + }, + "id": 34808, + "name": "Identifier", + "src": "18401:14:96" + } + ], + "id": 34809, + "name": "BinaryOperation", + "src": "18397:18:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34810, + "name": "Identifier", + "src": "18417:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34811, + "name": "Identifier", + "src": "18421:1:96" + } + ], + "id": 34812, + "name": "MemberAccess", + "src": "18421:5:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34813, + "name": "Literal", + "src": "18427:1:96" + } + ], + "id": 34814, + "name": "FunctionCall", + "src": "18421:8:96" + } + ], + "id": 34815, + "name": "Assignment", + "src": "18417:12:96" + } + ], + "id": 34816, + "name": "ExpressionStatement", + "src": "18417:12:96" + }, + { + "children": [ + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34791, + "type": "bytes32[] storage pointer", + "value": "identifiers" + }, + "id": 34817, + "name": "Identifier", + "src": "18445:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34818, + "name": "Identifier", + "src": "18457:1:96" + } + ], + "id": 34819, + "name": "IndexAccess", + "src": "18445:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34711, + "type": "bytes32", + "value": "identifier" + }, + "id": 34820, + "name": "Identifier", + "src": "18463:10:96" + } + ], + "id": 34821, + "name": "BinaryOperation", + "src": "18445:28:96" + }, + { + "children": [ + { + "id": 34822, + "name": "Continue", + "src": "18487:8:96" + } + ], + "id": 34823, + "name": "Block", + "src": "18475:31:96" + } + ], + "id": 34824, + "name": "IfStatement", + "src": "18441:65:96" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34825, + "name": "Identifier", + "src": "18519:1:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34799, + "type": "uint256", + "value": "lenIdentifiers" + }, + "id": 34826, + "name": "Identifier", + "src": "18524:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34827, + "name": "Literal", + "src": "18541:1:96" + } + ], + "id": 34828, + "name": "BinaryOperation", + "src": "18524:18:96" + } + ], + "id": 34829, + "name": "BinaryOperation", + "src": "18519:23:96" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34791, + "type": "bytes32[] storage pointer", + "value": "identifiers" + }, + "id": 34830, + "name": "Identifier", + "src": "18556:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34804, + "type": "uint256", + "value": "j" + }, + "id": 34831, + "name": "Identifier", + "src": "18568:1:96" + } + ], + "id": 34832, + "name": "IndexAccess", + "src": "18556:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34791, + "type": "bytes32[] storage pointer", + "value": "identifiers" + }, + "id": 34833, + "name": "Identifier", + "src": "18573:11:96" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34799, + "type": "uint256", + "value": "lenIdentifiers" + }, + "id": 34834, + "name": "Identifier", + "src": "18585:14:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 34835, + "name": "Literal", + "src": "18602:1:96" + } + ], + "id": 34836, + "name": "BinaryOperation", + "src": "18585:18:96" + } + ], + "id": 34837, + "name": "IndexAccess", + "src": "18573:31:96" + } + ], + "id": 34838, + "name": "Assignment", + "src": "18556:48:96" + } + ], + "id": 34839, + "name": "ExpressionStatement", + "src": "18556:48:96" + } + ], + "id": 34840, + "name": "Block", + "src": "18544:71:96" + } + ], + "id": 34841, + "name": "IfStatement", + "src": "18515:100:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + null + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "pop", + "referencedDeclaration": null, + "type": "function ()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34791, + "type": "bytes32[] storage pointer", + "value": "identifiers" + }, + "id": 34842, + "name": "Identifier", + "src": "18624:11:96" + } + ], + "id": 34844, + "name": "MemberAccess", + "src": "18624:15:96" + } + ], + "id": 34845, + "name": "FunctionCall", + "src": "18624:17:96" + } + ], + "id": 34846, + "name": "ExpressionStatement", + "src": "18624:17:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34785, + "type": "bool", + "value": "deletedIdentifier" + }, + "id": 34847, + "name": "Identifier", + "src": "18651:17:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 34848, + "name": "Literal", + "src": "18671:4:96" + } + ], + "id": 34849, + "name": "Assignment", + "src": "18651:24:96" + } + ], + "id": 34850, + "name": "ExpressionStatement", + "src": "18651:24:96" + }, + { + "id": 34851, + "name": "Break", + "src": "18685:5:96" + } + ], + "id": 34852, + "name": "Block", + "src": "18431:268:96" + } + ], + "id": 34853, + "name": "ForStatement", + "src": "18377:322:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42895, + "type": "function (bool) pure", + "value": "assert" + }, + "id": 34854, + "name": "Identifier", + "src": "18788:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34785, + "type": "bool", + "value": "deletedIdentifier" + }, + "id": 34855, + "name": "Identifier", + "src": "18795:17:96" + } + ], + "id": 34856, + "name": "FunctionCall", + "src": "18788:25:96" + } + ], + "id": 34857, + "name": "ExpressionStatement", + "src": "18788:25:96" + }, + { + "attributes": { + "assignments": [ + 34859 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "attestationHash", + "scope": 34889, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 34858, + "name": "ElementaryTypeName", + "src": "18822:7:96" + } + ], + "id": 34859, + "name": "VariableDeclaration", + "src": "18822:23:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34389, + "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)", + "value": "getUniqueAttestationHash" + }, + "id": 34860, + "name": "Identifier", + "src": "18848:24:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34711, + "type": "bytes32", + "value": "identifier" + }, + "id": 34861, + "name": "Identifier", + "src": "18882:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34713, + "type": "address", + "value": "issuer" + }, + "id": 34862, + "name": "Identifier", + "src": "18902:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34715, + "type": "address", + "value": "account" + }, + "id": 34863, + "name": "Identifier", + "src": "18918:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "signer", + "referencedDeclaration": 33749, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34757, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34864, + "name": "Identifier", + "src": "18935:11:96" + } + ], + "id": 34865, + "name": "MemberAccess", + "src": "18935:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "issuedOn", + "referencedDeclaration": 33751, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34757, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34866, + "name": "Identifier", + "src": "18963:11:96" + } + ], + "id": 34867, + "name": "MemberAccess", + "src": "18963:20:96" + } + ], + "id": 34868, + "name": "FunctionCall", + "src": "18848:143:96" + } + ], + "id": 34869, + "name": "VariableDeclarationStatement", + "src": "18822:169:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33772, + "type": "mapping(bytes32 => bool)", + "value": "revokedAttestations" + }, + "id": 34870, + "name": "Identifier", + "src": "18999:19:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34859, + "type": "bytes32", + "value": "attestationHash" + }, + "id": 34871, + "name": "Identifier", + "src": "19019:15:96" + } + ], + "id": 34872, + "name": "IndexAccess", + "src": "18999:36:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 34873, + "name": "Literal", + "src": "19038:4:96" + } + ], + "id": 34874, + "name": "Assignment", + "src": "18999:43:96" + } + ], + "id": 34875, + "name": "ExpressionStatement", + "src": "18999:43:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 33821, + "type": "function (bytes32,address,address,address,uint64,uint64)", + "value": "AttestationRevoked" + }, + "id": 34876, + "name": "Identifier", + "src": "19056:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34711, + "type": "bytes32", + "value": "identifier" + }, + "id": 34877, + "name": "Identifier", + "src": "19084:10:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34713, + "type": "address", + "value": "issuer" + }, + "id": 34878, + "name": "Identifier", + "src": "19104:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34715, + "type": "address", + "value": "account" + }, + "id": 34879, + "name": "Identifier", + "src": "19120:7:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "signer", + "referencedDeclaration": 33749, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34757, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34880, + "name": "Identifier", + "src": "19137:11:96" + } + ], + "id": 34881, + "name": "MemberAccess", + "src": "19137:18:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "issuedOn", + "referencedDeclaration": 33751, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34757, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34882, + "name": "Identifier", + "src": "19165:11:96" + } + ], + "id": 34883, + "name": "MemberAccess", + "src": "19165:20:96" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "publishedOn", + "referencedDeclaration": 33753, + "type": "uint64" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 34757, + "type": "struct FederatedAttestations.OwnershipAttestation memory", + "value": "attestation" + }, + "id": 34884, + "name": "Identifier", + "src": "19195:11:96" + } + ], + "id": 34885, + "name": "MemberAccess", + "src": "19195:23:96" + } + ], + "id": 34886, + "name": "FunctionCall", + "src": "19056:170:96" + } + ], + "id": 34887, + "name": "EmitStatement", + "src": "19051:175:96" + }, + { + "attributes": { + "expression": null, + "functionReturnParameters": 34717 + }, + "id": 34888, + "name": "Return", + "src": "19234:7:96" + } + ], + "id": 34889, + "name": "Block", + "src": "17739:1508:96" + } + ], + "id": 34890, + "name": "ForStatement", + "src": "17684:1563:96" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f", + "typeString": "literal_string \"Attestation to be revoked does not exist\"" + } + ], + "overloadedDeclarations": [ + 42911, + 42912 + ], + "referencedDeclaration": 42912, + "type": "function (string memory) pure", + "value": "revert" + }, + "id": 34891, + "name": "Identifier", + "src": "19252:6:96" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f74206578697374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Attestation to be revoked does not exist\"", + "value": "Attestation to be revoked does not exist" + }, + "id": 34892, + "name": "Literal", + "src": "19259:42:96" + } + ], + "id": 34893, + "name": "FunctionCall", + "src": "19252:50:96" + } + ], + "id": 34894, + "name": "ExpressionStatement", + "src": "19252:50:96" + } + ], + "id": 34895, + "name": "Block", + "src": "17531:1776:96" + } + ], + "id": 34896, + "name": "FunctionDefinition", + "src": "17442:1865:96" + } + ], + "id": 34897, + "name": "ContractDefinition", + "src": "604:18705:96" + } + ], + "id": 34898, + "name": "SourceUnit", + "src": "0:19310:96" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.7", + "updatedAt": "2022-09-23T16:17:10.933Z", + "devdoc": { + "methods": { + "batchRevokeAttestations(address,bytes32[],address[])": { + "details": "Throws if the number of identifiers and accounts is not the sameThrows if sender is not the issuer or currently registered signer of issuerThrows if an attestation is not found for identifiers[i] <-> accounts[i]", + "params": { + "accounts": "Addresses of the accounts mapped to the identifiers at the same indices", + "identifiers": "Hash of the identifiers", + "issuer": "Address of the issuer of all attestations to be revoked" + } + }, + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization" + } + }, + "getVersionNumber()": { + "return": "The storage, major, minor, and patch version of the contract." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "lookupAttestations(bytes32,address[])": { + "details": "Adds attestation info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)", + "params": { + "identifier": "Hash of the identifier", + "trustedIssuers": "Array of n issuers whose attestations will be included" + }, + "return": "countsPerIssuer Array of number of attestations returned per issuer For m (== sum([0])) found attestations: accounts Array of m accounts signers Array of m signersissuedOns Array of m issuedOnspublishedOns Array of m publishedOns" + }, + "lookupIdentifiers(address,address[])": { + "details": "Adds identifier info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)", + "params": { + "account": "Address of the account", + "trustedIssuers": "Array of n issuers whose identifier mappings will be used" + }, + "return": "countsPerIssuer Array of number of identifiers returned per issueridentifiers Array (length == sum([0])) of identifiers" + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": { + "details": "Throws if an attestation with the same (identifier, issuer, account) already exists", + "params": { + "account": "Address of the account being mapped to the identifier", + "identifier": "Hash of the identifier to be attested", + "issuedOn": "Time at which the issuer issued the attestation in Unix time ", + "issuer": "Address of the attestation issuer", + "r": "Output value r of the ECDSA signature", + "s": "Output value s of the ECDSA signature", + "signer": "Address of the signer of the attestation", + "v": "The recovery id of the incoming ECDSA signature" + } + }, + "registerAttestationAsIssuer(bytes32,address,uint64)": { + "details": "Attestation signer and issuer in storage is set to msg.senderThrows if an attestation with the same (identifier, issuer, account) already exists", + "params": { + "account": "Address of the account being mapped to the identifier", + "identifier": "Hash of the identifier to be attested", + "issuedOn": "Time at which the issuer issued the attestation in Unix time " + } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "revokeAttestation(bytes32,address,address)": { + "details": "Throws if sender is not the issuer, signer, or account", + "params": { + "account": "Address of the account mapped to the identifier", + "identifier": "Hash of the identifier to be revoked", + "issuer": "Address of the attestation issuer" + } + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": { + "details": "Throws if attestation has been revokedThrows if signer is not an authorized AttestationSigner of the issuer", + "params": { + "account": "Address of the account being mapped to the identifier", + "identifier": "Hash of the identifier to be attested", + "issuedOn": "Time at which the issuer issued the attestation in Unix time ", + "issuer": "Address of the attestation issuer", + "r": "Output value r of the ECDSA signature", + "s": "Output value s of the ECDSA signature", + "signer": "Address of the signer of the attestation", + "v": "The recovery id of the incoming ECDSA signature" + } + } + }, + "title": "Contract mapping identifiers to accounts" + }, + "userdoc": { + "methods": { + "batchRevokeAttestations(address,bytes32[],address[])": { + "notice": "Revokes attestations [identifiers <-> accounts] from issuer" + }, + "constructor": "Sets initialized == true on implementation contracts", + "getVersionNumber()": { + "notice": "Returns the storage, major, minor, and patch version of the contract." + }, + "initialize()": { + "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy." + }, + "lookupAttestations(bytes32,address[])": { + "notice": "Returns info about attestations for `identifier` produced by signers of `trustedIssuers`" + }, + "lookupIdentifiers(address,address[])": { + "notice": "Returns identifiers mapped to `account` by signers of `trustedIssuers`" + }, + "registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": { + "notice": "Registers an attestation with a valid signature" + }, + "registerAttestationAsIssuer(bytes32,address,uint64)": { + "notice": "Registers an attestation directly from the issuer" + }, + "revokeAttestation(bytes32,address,address)": { + "notice": "Revokes an attestation " + }, + "validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": { + "notice": "Validates the given attestation and signature" + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestationsProxy.json b/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestationsProxy.json new file mode 100644 index 00000000..31547c9d --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/FederatedAttestationsProxy.json @@ -0,0 +1,332 @@ +{ + "contractName": "FederatedAttestationsProxy", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerSet", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [], + "name": "_getImplementation", + "outputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_getOwner", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "_setAndInitializeImplementation", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "_setImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "_transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"_setAndInitializeImplementation\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"_setImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"_transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_setAndInitializeImplementation(address,bytes)\":{\"details\":\"Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.\",\"params\":{\"callbackData\":\"The abi-encoded function call to perform in the implementation contract.\",\"implementation\":\"Address of the new target contract.\"}},\"_setImplementation(address)\":{\"details\":\"If the target contract needs to be initialized, call setAndInitializeImplementation instead.\",\"params\":{\"implementation\":\"Address of the new target contract.\"}},\"_transferOwnership(address)\":{\"params\":{\"newOwner\":\"Address of the new owner account.\"}}}},\"userdoc\":{\"methods\":{\"_getImplementation()\":{\"notice\":\"Returns the implementation address.\"},\"_getOwner()\":{\"notice\":\"Returns the Proxy owner's address.\"},\"_setAndInitializeImplementation(address,bytes)\":{\"notice\":\"Sets the address of the implementation contract and calls into it.\"},\"_setImplementation(address)\":{\"notice\":\"Sets the address of the implementation contract.\"},\"_transferOwnership(address)\":{\"notice\":\"Transfers ownership of Proxy to a new owner.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/proxies/FederatedAttestationsProxy.sol\":\"FederatedAttestationsProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\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 */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Proxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n/* solhint-disable no-inline-assembly, no-complex-fallback, avoid-low-level-calls */\\n\\nimport \\\"openzeppelin-solidity/contracts/utils/Address.sol\\\";\\n\\n/**\\n * @title A Proxy utilizing the Unstructured Storage pattern.\\n */\\ncontract Proxy {\\n // Used to store the address of the owner.\\n bytes32 private constant OWNER_POSITION = bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1);\\n // Used to store the address of the implementation contract.\\n bytes32 private constant IMPLEMENTATION_POSITION = bytes32(\\n uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1\\n );\\n\\n event OwnerSet(address indexed owner);\\n event ImplementationSet(address indexed implementation);\\n\\n constructor() public {\\n _setOwner(msg.sender);\\n }\\n\\n /**\\n * @notice Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(msg.sender == _getOwner(), \\\"sender was not owner\\\");\\n _;\\n }\\n\\n /**\\n * @notice Delegates calls to the implementation contract.\\n */\\n function() external payable {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n address implementationAddress;\\n\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementationAddress := sload(implementationPosition)\\n }\\n\\n // Avoid checking if address is a contract or executing delegated call when\\n // implementation address is 0x0\\n require(implementationAddress != address(0), \\\"No Implementation set\\\");\\n require(Address.isContract(implementationAddress), \\\"Invalid contract address\\\");\\n\\n assembly {\\n // Extract the position of the transaction data (i.e. function ID and arguments).\\n let newCallDataPosition := mload(0x40)\\n mstore(0x40, add(newCallDataPosition, calldatasize))\\n calldatacopy(newCallDataPosition, 0, calldatasize)\\n\\n // Call the smart contract at `implementationAddress` in the context of the proxy contract,\\n // with the same msg.sender and value.\\n let delegatecallSuccess := delegatecall(\\n gas,\\n implementationAddress,\\n newCallDataPosition,\\n calldatasize,\\n 0,\\n 0\\n )\\n\\n // Copy the return value of the call so it can be returned.\\n let returnDataSize := returndatasize\\n let returnDataPosition := mload(0x40)\\n mstore(0x40, add(returnDataPosition, returnDataSize))\\n returndatacopy(returnDataPosition, 0, returnDataSize)\\n\\n // Revert or return depending on whether or not the call was successful.\\n switch delegatecallSuccess\\n case 0 {\\n revert(returnDataPosition, returnDataSize)\\n }\\n default {\\n return(returnDataPosition, returnDataSize)\\n }\\n }\\n }\\n\\n /**\\n * @notice Transfers ownership of Proxy to a new owner.\\n * @param newOwner Address of the new owner account.\\n */\\n function _transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract and calls into it.\\n * @param implementation Address of the new target contract.\\n * @param callbackData The abi-encoded function call to perform in the implementation\\n * contract.\\n * @dev Throws if the initialization callback fails.\\n * @dev If the target contract does not need initialization, use\\n * setImplementation instead.\\n */\\n function _setAndInitializeImplementation(address implementation, bytes calldata callbackData)\\n external\\n payable\\n onlyOwner\\n {\\n _setImplementation(implementation);\\n bool success;\\n bytes memory returnValue;\\n (success, returnValue) = implementation.delegatecall(callbackData);\\n require(success, \\\"initialization callback failed\\\");\\n }\\n\\n /**\\n * @notice Returns the implementation address.\\n */\\n function _getImplementation() external view returns (address implementation) {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementation := sload(implementationPosition)\\n }\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract.\\n * @param implementation Address of the new target contract.\\n * @dev If the target contract needs to be initialized, call\\n * setAndInitializeImplementation instead.\\n */\\n function _setImplementation(address implementation) public onlyOwner {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n require(Address.isContract(implementation), \\\"Invalid contract address\\\");\\n\\n // Store the address of the implementation contract in an explicit storage slot.\\n assembly {\\n sstore(implementationPosition, implementation)\\n }\\n\\n emit ImplementationSet(implementation);\\n }\\n\\n /**\\n * @notice Returns the Proxy owner's address.\\n */\\n function _getOwner() public view returns (address owner) {\\n bytes32 position = OWNER_POSITION;\\n // Load the address of the contract owner from an explicit storage slot.\\n assembly {\\n owner := sload(position)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n require(newOwner != address(0), \\\"owner cannot be 0\\\");\\n bytes32 position = OWNER_POSITION;\\n // Store the address of the contract owner in an explicit storage slot.\\n assembly {\\n sstore(position, newOwner)\\n }\\n emit OwnerSet(newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x650f2a079da45a71970749c9039dece5986835225035b29eca4df1c1dab0d6ac\"},\"project:/contracts/identity/proxies/FederatedAttestationsProxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"../../common/Proxy.sol\\\";\\n\\n/* solhint-disable no-empty-blocks */\\ncontract FederatedAttestationsProxy is Proxy {}\\n\",\"keccak256\":\"0x2344915156ed90706c03e15bae3ec79266e322a00fed8b1ec0b758062cf285cf\"}},\"version\":1}", + "bytecode": "0x60806040526100133361001860201b60201c565b610148565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a25050565b610a22806101576000396000f3fe60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158201f360b2073049027ee6dff953924a82580d1ee78410cfe75033bb48b8059db5c64736f6c634300050d0032", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158201f360b2073049027ee6dff953924a82580d1ee78410cfe75033bb48b8059db5c64736f6c634300050d0032", + "sourceMap": "98:47:108:-;;;724:21:22;734:10;724:9;;;:21;;:::i;:::-;98:47:108;;5050:307:22;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o;98:47:108:-;;;;;;;", + "deployedSourceMap": "98:47:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:30:22;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;1041:56;;1104:29;1274:22;1268:29;1243:54;;1467:1;1434:35;;:21;:35;;;;1426:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:41;1528:21;1509:18;:41::i;:::-;1501:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:4;1718:11;1774:12;1753:19;1749:38;1743:4;1736:52;1832:12;1829:1;1808:19;1795:50;2151:1;2140;2118:12;2089:19;2058:21;2045:3;2023:137;2256:14;2309:4;2303:11;2358:14;2338:18;2334:39;2328:4;2321:53;2419:14;2416:1;2396:18;2381:53;2528:19;2561:1;2556:71;;;;2683:14;2663:18;2656:42;2556:71;2602:14;2582:18;2575:42;3358:356;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3358:356:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3358:356:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3358:356:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3358:356:22;;;;;;;;;;;;:::i;:::-;;3779:305;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3779:305:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4333:419;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4333:419:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4333:419:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;2847:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2847:95:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2847:95:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;4816:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:230:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;686:610:8;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;3358:356:22:-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:34;3518:14;3499:18;:34::i;:::-;3539:12;3557:24;3612:14;:27;;3640:12;;3612:41;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;3612:41:22;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3587:66:22;;;;;;;;3667:7;3659:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:1;;3358:356;;;:::o;3779:305::-;3832:22;3862:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;3862:56;;4051:22;4045:29;4027:47;;4019:61;;:::o;4333:419::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;4408:56;;4479:34;4498:14;4479:18;:34::i;:::-;4471:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:14;4658:22;4651:46;4732:14;4714:33;;;;;;;;;;;;924:1;4333:419;:::o;2847:95::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:19;2928:8;2918:9;:19::i;:::-;2847:95;:::o;4816:230::-;4858:13;4879:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;4879:33;;5027:8;5021:15;5012:24;;5004:38;;:::o;5050:307::-;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"../../common/Proxy.sol\";\n\n/* solhint-disable no-empty-blocks */\ncontract FederatedAttestationsProxy is Proxy {}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/proxies/FederatedAttestationsProxy.sol", + "ast": { + "absolutePath": "project:/contracts/identity/proxies/FederatedAttestationsProxy.sol", + "exportedSymbols": { + "FederatedAttestationsProxy": [ + 36217 + ] + }, + "id": 36218, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 36213, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:108" + }, + { + "absolutePath": "project:/contracts/common/Proxy.sol", + "file": "../../common/Proxy.sol", + "id": 36214, + "nodeType": "ImportDirective", + "scope": 36218, + "sourceUnit": 6778, + "src": "26:32:108", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 36215, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6777, + "src": "137:5:108", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$6777", + "typeString": "contract Proxy" + } + }, + "id": 36216, + "nodeType": "InheritanceSpecifier", + "src": "137:5:108" + } + ], + "contractDependencies": [ + 6777 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 36217, + "linearizedBaseContracts": [ + 36217, + 6777 + ], + "name": "FederatedAttestationsProxy", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 36218, + "src": "98:47:108" + } + ], + "src": "0:146:108" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/identity/proxies/FederatedAttestationsProxy.sol", + "exportedSymbols": { + "FederatedAttestationsProxy": [ + 36217 + ] + } + }, + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ] + }, + "id": 36213, + "name": "PragmaDirective", + "src": "0:24:108" + }, + { + "attributes": { + "SourceUnit": 6778, + "absolutePath": "project:/contracts/common/Proxy.sol", + "file": "../../common/Proxy.sol", + "scope": 36218, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 36214, + "name": "ImportDirective", + "src": "26:32:108" + }, + { + "attributes": { + "contractDependencies": [ + 6777 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 36217, + 6777 + ], + "name": "FederatedAttestationsProxy", + "nodes": [ + null + ], + "scope": 36218 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Proxy", + "referencedDeclaration": 6777, + "type": "contract Proxy" + }, + "id": 36215, + "name": "UserDefinedTypeName", + "src": "137:5:108" + } + ], + "id": 36216, + "name": "InheritanceSpecifier", + "src": "137:5:108" + } + ], + "id": 36217, + "name": "ContractDefinition", + "src": "98:47:108" + } + ], + "id": 36218, + "name": "SourceUnit", + "src": "0:146:108" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.7", + "updatedAt": "2022-09-23T16:17:10.955Z", + "devdoc": { + "methods": { + "_setAndInitializeImplementation(address,bytes)": { + "details": "Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.", + "params": { + "callbackData": "The abi-encoded function call to perform in the implementation contract.", + "implementation": "Address of the new target contract." + } + }, + "_setImplementation(address)": { + "details": "If the target contract needs to be initialized, call setAndInitializeImplementation instead.", + "params": { + "implementation": "Address of the new target contract." + } + }, + "_transferOwnership(address)": { + "params": { + "newOwner": "Address of the new owner account." + } + } + } + }, + "userdoc": { + "methods": { + "_getImplementation()": { + "notice": "Returns the implementation address." + }, + "_getOwner()": { + "notice": "Returns the Proxy owner's address." + }, + "_setAndInitializeImplementation(address,bytes)": { + "notice": "Sets the address of the implementation contract and calls into it." + }, + "_setImplementation(address)": { + "notice": "Sets the address of the implementation contract." + }, + "_transferOwnership(address)": { + "notice": "Transfers ownership of Proxy to a new owner." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/OdisPayments.json b/celo-social-connect-dapp/packages/react-app/abis/OdisPayments.json new file mode 100644 index 00000000..5c15d4b3 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/OdisPayments.json @@ -0,0 +1,3363 @@ +{ + "contractName": "OdisPayments", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "valueInCUSD", + "type": "uint256" + } + ], + "name": "PaymentMade", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "totalPaidCUSD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "payInCUSD", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueInCUSD\",\"type\":\"uint256\"}],\"name\":\"PaymentMade\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"payInCUSD\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalPaidCUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization.\"}},\"getVersionNumber()\":{\"return\":\"Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"payInCUSD(address,uint256)\":{\"details\":\"Throws if cUSD transfer fails.\",\"params\":{\"account\":\"The account whose balance to increment.\",\"value\":\"The amount in cUSD to pay.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing 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.\"}},\"title\":\"Stores balance to be used for ODIS quota calculation.\"},\"userdoc\":{\"methods\":{\"constructor\":\"Sets initialized == true on implementation contracts.\",\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"payInCUSD(address,uint256)\":{\"notice\":\"Sends cUSD to this contract to pay for ODIS quota (for queries).\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/OdisPayments.sol\":\"OdisPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.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 GSN 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 */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\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 * 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 */\\ncontract Ownable is Context {\\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 constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = 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 onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\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 `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.sol\\\";\\nimport \\\"../../utils/Address.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 ERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using SafeMath for uint256;\\n using Address for address;\\n\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n function safeApprove(IERC20 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 // solhint-disable-next-line max-line-length\\n require((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 function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \\\"SafeERC20: decreased allowance below zero\\\");\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\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(IERC20 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.\\n\\n // A Solidity high level call has three parts:\\n // 1. The target address is checked to verify it contains contract code\\n // 2. The call itself is made, and success asserted\\n // 3. The return value is decoded, which in turn checks the size of the returned data.\\n // solhint-disable-next-line max-line-length\\n require(address(token).isContract(), \\\"SafeERC20: call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = address(token).call(data);\\n require(success, \\\"SafeERC20: low-level call failed\\\");\\n\\n if (returndata.length > 0) { // Return data is optional\\n // solhint-disable-next-line max-line-length\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\"},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\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 */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/common/libraries/ReentrancyGuard.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title Helps contracts guard against reentrancy attacks.\\n * @author Remco Bloemen , Eenae \\n * @dev If you mark a function `nonReentrant`, you should also\\n * mark it `external`.\\n */\\ncontract ReentrancyGuard {\\n /// @dev counter to allow mutex lock with only one SSTORE operation\\n uint256 private _guardCounter;\\n\\n constructor() internal {\\n // The counter starts at one to prevent changing it from zero to a non-zero\\n // value, which is a more expensive operation.\\n _guardCounter = 1;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and make it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _guardCounter += 1;\\n uint256 localCounter = _guardCounter;\\n _;\\n require(localCounter == _guardCounter, \\\"reentrant call\\\");\\n }\\n}\\n\",\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/OdisPayments.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\n\\nimport \\\"./interfaces/IOdisPayments.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\n\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/UsingRegistryV2.sol\\\";\\nimport \\\"../common/libraries/ReentrancyGuard.sol\\\";\\n\\n/**\\n * @title Stores balance to be used for ODIS quota calculation.\\n */\\ncontract OdisPayments is\\n IOdisPayments,\\n ICeloVersionedContract,\\n ReentrancyGuard,\\n Ownable,\\n Initializable,\\n UsingRegistryV2\\n{\\n using SafeMath for uint256;\\n using SafeERC20 for IERC20;\\n\\n event PaymentMade(address indexed account, uint256 valueInCUSD);\\n\\n // Store amount sent (all time) from account to this contract.\\n // Values in totalPaidCUSD should only ever be incremented, since ODIS relies\\n // on all-time paid balance to compute every quota.\\n mapping(address => uint256) public totalPaidCUSD;\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts.\\n * @param test Set to true to skip implementation initialization.\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return Storage version of the contract.\\n * @return Major version of the contract.\\n * @return Minor version of the contract.\\n * @return Patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 1, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n }\\n\\n /**\\n * @notice Sends cUSD to this contract to pay for ODIS quota (for queries).\\n * @param account The account whose balance to increment.\\n * @param value The amount in cUSD to pay.\\n * @dev Throws if cUSD transfer fails.\\n */\\n function payInCUSD(address account, uint256 value) external nonReentrant {\\n IERC20(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID)).safeTransferFrom(\\n msg.sender,\\n address(this),\\n value\\n );\\n totalPaidCUSD[account] = totalPaidCUSD[account].add(value);\\n emit PaymentMade(account, value);\\n }\\n}\\n\",\"keccak256\":\"0x5eb86d337e0d12de347062d4281f3da04e1338eb0b45274ba5072e61bf861470\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IOdisPayments.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IOdisPayments {\\n function payInCUSD(address account, uint256 value) external;\\n function totalPaidCUSD(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x5c5556cd24273aa5a0c4fe7a2d8529080556fcee27ac1c1f192cb42f4d8077dc\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50604051610f9b380380610f9b8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806001600081905550600061005d61012360201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508061011c5760018060146101000a81548160ff0219169083151502179055505b505061012b565b600033905090565b610e618061013a6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638129fc1c116100665780638129fc1c146101a45780638da5cb5b146101ae5780638f32d59b146101f8578063dcb026471461021a578063f2fde38b146102685761009e565b8063158ef93e146100a357806322dad9dc146100c557806328c1f99b1461011d57806354255be014610167578063715018a61461019a575b600080fd5b6100ab6102ac565b604051808215151515815260200191505060405180910390f35b610107600480360360208110156100db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bf565b6040518082815260200191505060405180910390f35b6101256102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016f6102dd565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6101a2610303565b005b6101ac61043e565b005b6101b66104e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610200610510565b604051808215151515815260200191505060405180910390f35b6102666004803603604081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056f565b005b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e4565b005b600160149054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b61030b610510565b61037d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160149054906101000a900460ff16156104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506104e43361086a565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105536109b0565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6001600080828254019250508190555060008054905061068533308461ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f537461626c65546f6b656e000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561062457600080fd5b505afa158015610638573d6000803e3d6000fd5b505050506040513d602081101561064e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166109b8909392919063ffffffff16565b6106d782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610abe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f3a2d0e41c506b136330c6e5e0295ccbf0966daece99bfe7c89020cc01dbfb8d6836040518082815260200191505060405180910390a260005481146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b6107ec610510565b61085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108678161086a565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610ddd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610ab8848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b46565b50505050565b600080828401905083811015610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610b658273ffffffffffffffffffffffffffffffffffffffff16610d91565b610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610c265780518252602082019150602081019050602083039250610c03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c88576040519150601f19603f3d011682016040523d82523d6000602084013e610c8d565b606091505b509150915081610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d8b57808060200190516020811015610d2457600080fd5b8101908080519060200190929190505050610d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610e03602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610dd357506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201fd1dea869352dbe08be6ca0d18a3717cf75aa06595e634d69ceddba3a5f3a9364736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638129fc1c116100665780638129fc1c146101a45780638da5cb5b146101ae5780638f32d59b146101f8578063dcb026471461021a578063f2fde38b146102685761009e565b8063158ef93e146100a357806322dad9dc146100c557806328c1f99b1461011d57806354255be014610167578063715018a61461019a575b600080fd5b6100ab6102ac565b604051808215151515815260200191505060405180910390f35b610107600480360360208110156100db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bf565b6040518082815260200191505060405180910390f35b6101256102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016f6102dd565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6101a2610303565b005b6101ac61043e565b005b6101b66104e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610200610510565b604051808215151515815260200191505060405180910390f35b6102666004803603604081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056f565b005b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e4565b005b600160149054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b61030b610510565b61037d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160149054906101000a900460ff16156104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506104e43361086a565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105536109b0565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6001600080828254019250508190555060008054905061068533308461ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f537461626c65546f6b656e000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561062457600080fd5b505afa158015610638573d6000803e3d6000fd5b505050506040513d602081101561064e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166109b8909392919063ffffffff16565b6106d782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610abe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f3a2d0e41c506b136330c6e5e0295ccbf0966daece99bfe7c89020cc01dbfb8d6836040518082815260200191505060405180910390a260005481146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b6107ec610510565b61085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108678161086a565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610ddd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610ab8848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b46565b50505050565b600080828401905083811015610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610b658273ffffffffffffffffffffffffffffffffffffffff16610d91565b610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610c265780518252602082019150602081019050602083039250610c03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c88576040519150601f19603f3d011682016040523d82523d6000602084013e610c8d565b606091505b509150915081610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d8b57808060200190516020811015610d2457600080fd5b8101908080519060200190929190505050610d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610e03602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610dd357506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201fd1dea869352dbe08be6ca0d18a3717cf75aa06595e634d69ceddba3a5f3a9364736f6c634300050d0032", + "sourceMap": "585:1879:99:-;;;1250:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:52:99;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1250:52:99;;;;;;;;;;;;;;;;1294:4;558:1:38;542:13;:17;;;;698::4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;1250:52:99;585:1879;;788:96:0;833:15;867:10;860:17;;788:96;:::o;585:1879:99:-;;;;;;;", + "deployedSourceMap": "585:1879:99:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;585:1879:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1050:48:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1050:48:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1579:117:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;1808:84:99;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2132:330:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2132:330:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;;;;;;;;;;;:::o;1050:48:99:-;;;;;;;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;1579:117:99:-;1630:7;1639;1648;1657;1680:1;1683;1686;1689;1672:19;;;;;;;;;;;;;;;;;;;;1579:117;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;1808:84:99:-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;1857:30:99;1876:10;1857:18;:30::i;:::-;1808:84::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;2132:330:99:-;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;2211:144:99;2305:10;2331:4;2344:5;949:42:27;2218:35:99;;;2991:31:27;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2991:31:27;;;2981:42;;;;;;2218:61:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2218:61:99;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2218:61:99;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2218:61:99;;;;;;;;;;;;;;;;2211:86;;;;:144;;;;;;:::i;:::-;2386:33;2413:5;2386:13;:22;2400:7;2386:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;2361:13;:22;2375:7;2361:22;;;;;;;;;;;;;;;:58;;;;2442:7;2430:27;;;2451:5;2430:27;;;;;;;;;;;;;;;;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:330:99;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;2178:225::-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;842:202:7:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:7;942:18;:95::i;:::-;842:202;;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2666:1095:7:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:7;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:7;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:7;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:8:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IOdisPayments.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\n\nimport \"../common/Initializable.sol\";\nimport \"../common/UsingRegistryV2.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\n/**\n * @title Stores balance to be used for ODIS quota calculation.\n */\ncontract OdisPayments is\n IOdisPayments,\n ICeloVersionedContract,\n ReentrancyGuard,\n Ownable,\n Initializable,\n UsingRegistryV2\n{\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n event PaymentMade(address indexed account, uint256 valueInCUSD);\n\n // Store amount sent (all time) from account to this contract.\n // Values in totalPaidCUSD should only ever be incremented, since ODIS relies\n // on all-time paid balance to compute every quota.\n mapping(address => uint256) public totalPaidCUSD;\n\n /**\n * @notice Sets initialized == true on implementation contracts.\n * @param test Set to true to skip implementation initialization.\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return Storage version of the contract.\n * @return Major version of the contract.\n * @return Minor version of the contract.\n * @return Patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n * @param account The account whose balance to increment.\n * @param value The amount in cUSD to pay.\n * @dev Throws if cUSD transfer fails.\n */\n function payInCUSD(address account, uint256 value) external nonReentrant {\n IERC20(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID)).safeTransferFrom(\n msg.sender,\n address(this),\n value\n );\n totalPaidCUSD[account] = totalPaidCUSD[account].add(value);\n emit PaymentMade(account, value);\n }\n}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/OdisPayments.sol", + "ast": { + "absolutePath": "project:/contracts/identity/OdisPayments.sol", + "exportedSymbols": { + "OdisPayments": [ + 35290 + ] + }, + "id": 35291, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 35173, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:99" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 35174, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 364, + "src": "26:59:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 35175, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 956, + "src": "86:64:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 35176, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 1176, + "src": "151:67:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 35177, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 482, + "src": "219:63:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/identity/interfaces/IOdisPayments.sol", + "file": "./interfaces/IOdisPayments.sol", + "id": 35178, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 36171, + "src": "284:40:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 35179, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 9108, + "src": "325:57:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 35180, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 5885, + "src": "384:37:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/UsingRegistryV2.sol", + "file": "../common/UsingRegistryV2.sol", + "id": 35181, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 8802, + "src": "422:39:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "id": 35182, + "nodeType": "ImportDirective", + "scope": 35291, + "sourceUnit": 9486, + "src": "462:49:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35183, + "name": "IOdisPayments", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 36170, + "src": "612:13:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IOdisPayments_$36170", + "typeString": "contract IOdisPayments" + } + }, + "id": 35184, + "nodeType": "InheritanceSpecifier", + "src": "612:13:99" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35185, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9107, + "src": "629:22:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 35186, + "nodeType": "InheritanceSpecifier", + "src": "629:22:99" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35187, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9485, + "src": "655:15:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$9485", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 35188, + "nodeType": "InheritanceSpecifier", + "src": "655:15:99" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35189, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 481, + "src": "674:7:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$481", + "typeString": "contract Ownable" + } + }, + "id": 35190, + "nodeType": "InheritanceSpecifier", + "src": "674:7:99" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35191, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5884, + "src": "685:13:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$5884", + "typeString": "contract Initializable" + } + }, + "id": 35192, + "nodeType": "InheritanceSpecifier", + "src": "685:13:99" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 35193, + "name": "UsingRegistryV2", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8801, + "src": "702:15:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistryV2_$8801", + "typeString": "contract UsingRegistryV2" + } + }, + "id": 35194, + "nodeType": "InheritanceSpecifier", + "src": "702:15:99" + } + ], + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 9107, + 9485, + 36170 + ], + "contractKind": "contract", + "documentation": "@title Stores balance to be used for ODIS quota calculation.", + "fullyImplemented": true, + "id": 35290, + "linearizedBaseContracts": [ + 35290, + 8801, + 5884, + 481, + 26, + 9485, + 9107, + 36170 + ], + "name": "OdisPayments", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 35197, + "libraryName": { + "contractScope": null, + "id": 35195, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 363, + "src": "728:8:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$363", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "722:27:99", + "typeName": { + "id": 35196, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "741:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 35200, + "libraryName": { + "contractScope": null, + "id": 35198, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1175, + "src": "758:9:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1175", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "752:27:99", + "typeName": { + "contractScope": null, + "id": 35199, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 955, + "src": "772:6:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$955", + "typeString": "contract IERC20" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 35206, + "name": "PaymentMade", + "nodeType": "EventDefinition", + "parameters": { + "id": 35205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35202, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 35206, + "src": "801:23:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 35201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "801:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35204, + "indexed": false, + "name": "valueInCUSD", + "nodeType": "VariableDeclaration", + "scope": 35206, + "src": "826:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "826:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "800:46:99" + }, + "src": "783:64:99" + }, + { + "constant": false, + "id": 35210, + "name": "totalPaidCUSD", + "nodeType": "VariableDeclaration", + "scope": 35290, + "src": "1050:48:99", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 35209, + "keyType": { + "id": 35207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1058:7:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1050:27:99", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 35208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1069:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 35218, + "nodeType": "Block", + "src": "1300:2:99", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts.\n@param test Set to true to skip implementation initialization.", + "id": 35219, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 35215, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35212, + "src": "1294:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 35216, + "modifierName": { + "argumentTypes": null, + "id": 35214, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5884, + "src": "1280:13:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1280:19:99" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 35213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35212, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 35219, + "src": "1262:9:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 35211, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1262:4:99", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1261:11:99" + }, + "returnParameters": { + "id": 35217, + "nodeType": "ParameterList", + "parameters": [], + "src": "1300:0:99" + }, + "scope": 35290, + "src": "1250:52:99", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 35236, + "nodeType": "Block", + "src": "1666:30:99", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 35230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1680:1:99", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 35231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1683:1:99", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 35232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1686:1:99", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 35233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1689:1:99", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 35234, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1679:12:99", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 35229, + "id": 35235, + "nodeType": "Return", + "src": "1672:19:99" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.", + "id": 35237, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 35220, + "nodeType": "ParameterList", + "parameters": [], + "src": "1604:2:99" + }, + "returnParameters": { + "id": 35229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35222, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 35237, + "src": "1630:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1630:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35224, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 35237, + "src": "1639:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35226, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 35237, + "src": "1648:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1648:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35228, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 35237, + "src": "1657:7:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1657:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1629:36:99" + }, + "scope": 35290, + "src": "1579:117:99", + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + { + "body": { + "id": 35247, + "nodeType": "Block", + "src": "1851:41:99", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 35243, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "1876:3:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 35244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1876:10:99", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 35242, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "1857:18:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 35245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1857:30:99", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 35246, + "nodeType": "ExpressionStatement", + "src": "1857:30:99" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "id": 35248, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 35240, + "modifierName": { + "argumentTypes": null, + "id": 35239, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5883, + "src": "1839:11:99", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1839:11:99" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 35238, + "nodeType": "ParameterList", + "parameters": [], + "src": "1827:2:99" + }, + "returnParameters": { + "id": 35241, + "nodeType": "ParameterList", + "parameters": [], + "src": "1851:0:99" + }, + "scope": 35290, + "src": "1808:84:99", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 35288, + "nodeType": "Block", + "src": "2205:257:99", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 35264, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42906, + "src": "2305:3:99", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 35265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2305:10:99", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 35267, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43138, + "src": "2331:4:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OdisPayments_$35290", + "typeString": "contract OdisPayments" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_OdisPayments_$35290", + "typeString": "contract OdisPayments" + } + ], + "id": 35266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2323:7:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 35268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2323:13:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 35269, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35252, + "src": "2344:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 35260, + "name": "STABLE_TOKEN_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8477, + "src": "2254:24:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 35258, + "name": "registryContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8325, + "src": "2218:16:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9281", + "typeString": "contract IRegistry" + } + }, + "id": 35259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9249, + "src": "2218:35:99", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 35261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2218:61:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 35257, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "2211:6:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$955_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 35262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2211:69:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$955", + "typeString": "contract IERC20" + } + }, + "id": 35263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1013, + "src": "2211:86:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 35270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2211:144:99", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 35271, + "nodeType": "ExpressionStatement", + "src": "2211:144:99" + }, + { + "expression": { + "argumentTypes": null, + "id": 35281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 35272, + "name": "totalPaidCUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35210, + "src": "2361:13:99", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 35274, + "indexExpression": { + "argumentTypes": null, + "id": 35273, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35250, + "src": "2375:7:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2361:22:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 35279, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35252, + "src": "2413:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 35275, + "name": "totalPaidCUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35210, + "src": "2386:13:99", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 35277, + "indexExpression": { + "argumentTypes": null, + "id": 35276, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35250, + "src": "2400:7:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2386:22:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 35278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 203, + "src": "2386:26:99", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 35280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2386:33:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2361:58:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 35282, + "nodeType": "ExpressionStatement", + "src": "2361:58:99" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 35284, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35250, + "src": "2442:7:99", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 35285, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35252, + "src": "2451:5:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 35283, + "name": "PaymentMade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35206, + "src": "2430:11:99", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 35286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2430:27:99", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 35287, + "nodeType": "EmitStatement", + "src": "2425:32:99" + } + ] + }, + "documentation": "@notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n@param account The account whose balance to increment.\n@param value The amount in cUSD to pay.\n@dev Throws if cUSD transfer fails.", + "id": 35289, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 35255, + "modifierName": { + "argumentTypes": null, + "id": 35254, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "2192:12:99", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2192:12:99" + } + ], + "name": "payInCUSD", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 35253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35250, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 35289, + "src": "2151:15:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 35249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2151:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35252, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 35289, + "src": "2168:13:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2168:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2150:32:99" + }, + "returnParameters": { + "id": 35256, + "nodeType": "ParameterList", + "parameters": [], + "src": "2205:0:99" + }, + "scope": 35290, + "src": "2132:330:99", + "stateMutability": "nonpayable", + "superFunction": 36162, + "visibility": "external" + } + ], + "scope": 35291, + "src": "585:1879:99" + } + ], + "src": "0:2465:99" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/identity/OdisPayments.sol", + "exportedSymbols": { + "OdisPayments": [ + 35290 + ] + } + }, + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ] + }, + "id": 35173, + "name": "PragmaDirective", + "src": "0:24:99" + }, + { + "attributes": { + "SourceUnit": 364, + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35174, + "name": "ImportDirective", + "src": "26:59:99" + }, + { + "attributes": { + "SourceUnit": 956, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35175, + "name": "ImportDirective", + "src": "86:64:99" + }, + { + "attributes": { + "SourceUnit": 1176, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35176, + "name": "ImportDirective", + "src": "151:67:99" + }, + { + "attributes": { + "SourceUnit": 482, + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35177, + "name": "ImportDirective", + "src": "219:63:99" + }, + { + "attributes": { + "SourceUnit": 36171, + "absolutePath": "project:/contracts/identity/interfaces/IOdisPayments.sol", + "file": "./interfaces/IOdisPayments.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35178, + "name": "ImportDirective", + "src": "284:40:99" + }, + { + "attributes": { + "SourceUnit": 9108, + "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35179, + "name": "ImportDirective", + "src": "325:57:99" + }, + { + "attributes": { + "SourceUnit": 5885, + "absolutePath": "project:/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35180, + "name": "ImportDirective", + "src": "384:37:99" + }, + { + "attributes": { + "SourceUnit": 8802, + "absolutePath": "project:/contracts/common/UsingRegistryV2.sol", + "file": "../common/UsingRegistryV2.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35181, + "name": "ImportDirective", + "src": "422:39:99" + }, + { + "attributes": { + "SourceUnit": 9486, + "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol", + "file": "../common/libraries/ReentrancyGuard.sol", + "scope": 35291, + "symbolAliases": [ + null + ], + "unitAlias": "" + }, + "id": 35182, + "name": "ImportDirective", + "src": "462:49:99" + }, + { + "attributes": { + "contractDependencies": [ + 26, + 481, + 5884, + 8801, + 9107, + 9485, + 36170 + ], + "contractKind": "contract", + "documentation": "@title Stores balance to be used for ODIS quota calculation.", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 35290, + 8801, + 5884, + 481, + 26, + 9485, + 9107, + 36170 + ], + "name": "OdisPayments", + "scope": 35291 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IOdisPayments", + "referencedDeclaration": 36170, + "type": "contract IOdisPayments" + }, + "id": 35183, + "name": "UserDefinedTypeName", + "src": "612:13:99" + } + ], + "id": 35184, + "name": "InheritanceSpecifier", + "src": "612:13:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ICeloVersionedContract", + "referencedDeclaration": 9107, + "type": "contract ICeloVersionedContract" + }, + "id": 35185, + "name": "UserDefinedTypeName", + "src": "629:22:99" + } + ], + "id": 35186, + "name": "InheritanceSpecifier", + "src": "629:22:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ReentrancyGuard", + "referencedDeclaration": 9485, + "type": "contract ReentrancyGuard" + }, + "id": 35187, + "name": "UserDefinedTypeName", + "src": "655:15:99" + } + ], + "id": 35188, + "name": "InheritanceSpecifier", + "src": "655:15:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Ownable", + "referencedDeclaration": 481, + "type": "contract Ownable" + }, + "id": 35189, + "name": "UserDefinedTypeName", + "src": "674:7:99" + } + ], + "id": 35190, + "name": "InheritanceSpecifier", + "src": "674:7:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Initializable", + "referencedDeclaration": 5884, + "type": "contract Initializable" + }, + "id": 35191, + "name": "UserDefinedTypeName", + "src": "685:13:99" + } + ], + "id": 35192, + "name": "InheritanceSpecifier", + "src": "685:13:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "UsingRegistryV2", + "referencedDeclaration": 8801, + "type": "contract UsingRegistryV2" + }, + "id": 35193, + "name": "UserDefinedTypeName", + "src": "702:15:99" + } + ], + "id": 35194, + "name": "InheritanceSpecifier", + "src": "702:15:99" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 363, + "type": "library SafeMath" + }, + "id": 35195, + "name": "UserDefinedTypeName", + "src": "728:8:99" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35196, + "name": "ElementaryTypeName", + "src": "741:7:99" + } + ], + "id": 35197, + "name": "UsingForDirective", + "src": "722:27:99" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeERC20", + "referencedDeclaration": 1175, + "type": "library SafeERC20" + }, + "id": 35198, + "name": "UserDefinedTypeName", + "src": "758:9:99" + }, + { + "attributes": { + "contractScope": null, + "name": "IERC20", + "referencedDeclaration": 955, + "type": "contract IERC20" + }, + "id": 35199, + "name": "UserDefinedTypeName", + "src": "772:6:99" + } + ], + "id": 35200, + "name": "UsingForDirective", + "src": "752:27:99" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "PaymentMade" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "account", + "scope": 35206, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 35201, + "name": "ElementaryTypeName", + "src": "801:7:99" + } + ], + "id": 35202, + "name": "VariableDeclaration", + "src": "801:23:99" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "valueInCUSD", + "scope": 35206, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35203, + "name": "ElementaryTypeName", + "src": "826:7:99" + } + ], + "id": 35204, + "name": "VariableDeclaration", + "src": "826:19:99" + } + ], + "id": 35205, + "name": "ParameterList", + "src": "800:46:99" + } + ], + "id": 35206, + "name": "EventDefinition", + "src": "783:64:99" + }, + { + "attributes": { + "constant": false, + "name": "totalPaidCUSD", + "scope": 35290, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => uint256)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 35207, + "name": "ElementaryTypeName", + "src": "1058:7:99" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35208, + "name": "ElementaryTypeName", + "src": "1069:7:99" + } + ], + "id": 35209, + "name": "Mapping", + "src": "1050:27:99" + } + ], + "id": 35210, + "name": "VariableDeclaration", + "src": "1050:48:99" + }, + { + "attributes": { + "documentation": "@notice Sets initialized == true on implementation contracts.\n@param test Set to true to skip implementation initialization.", + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "name": "", + "scope": 35290, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "test", + "scope": 35219, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 35211, + "name": "ElementaryTypeName", + "src": "1262:4:99" + } + ], + "id": 35212, + "name": "VariableDeclaration", + "src": "1262:9:99" + } + ], + "id": 35213, + "name": "ParameterList", + "src": "1261:11:99" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 35217, + "name": "ParameterList", + "src": "1300:0:99" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5884, + "type": "type(contract Initializable)", + "value": "Initializable" + }, + "id": 35214, + "name": "Identifier", + "src": "1280:13:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35212, + "type": "bool", + "value": "test" + }, + "id": 35215, + "name": "Identifier", + "src": "1294:4:99" + } + ], + "id": 35216, + "name": "ModifierInvocation", + "src": "1280:19:99" + }, + { + "attributes": { + "statements": [ + null + ] + }, + "children": [], + "id": 35218, + "name": "Block", + "src": "1300:2:99" + } + ], + "id": 35219, + "name": "FunctionDefinition", + "src": "1250:52:99" + }, + { + "attributes": { + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [ + null + ], + "name": "getVersionNumber", + "scope": 35290, + "stateMutability": "pure", + "superFunction": 9106, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 35220, + "name": "ParameterList", + "src": "1604:2:99" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 35237, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35221, + "name": "ElementaryTypeName", + "src": "1630:7:99" + } + ], + "id": 35222, + "name": "VariableDeclaration", + "src": "1630:7:99" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 35237, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35223, + "name": "ElementaryTypeName", + "src": "1639:7:99" + } + ], + "id": 35224, + "name": "VariableDeclaration", + "src": "1639:7:99" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 35237, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35225, + "name": "ElementaryTypeName", + "src": "1648:7:99" + } + ], + "id": 35226, + "name": "VariableDeclaration", + "src": "1648:7:99" + }, + { + "attributes": { + "constant": false, + "name": "", + "scope": 35237, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35227, + "name": "ElementaryTypeName", + "src": "1657:7:99" + } + ], + "id": 35228, + "name": "VariableDeclaration", + "src": "1657:7:99" + } + ], + "id": 35229, + "name": "ParameterList", + "src": "1629:36:99" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 35229 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 35230, + "name": "Literal", + "src": "1680:1:99" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 35231, + "name": "Literal", + "src": "1683:1:99" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 35232, + "name": "Literal", + "src": "1686:1:99" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 35233, + "name": "Literal", + "src": "1689:1:99" + } + ], + "id": 35234, + "name": "TupleExpression", + "src": "1679:12:99" + } + ], + "id": 35235, + "name": "Return", + "src": "1672:19:99" + } + ], + "id": 35236, + "name": "Block", + "src": "1666:30:99" + } + ], + "id": 35237, + "name": "FunctionDefinition", + "src": "1579:117:99" + }, + { + "attributes": { + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "initialize", + "scope": 35290, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 35238, + "name": "ParameterList", + "src": "1827:2:99" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 35241, + "name": "ParameterList", + "src": "1851:0:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 5883, + "type": "modifier ()", + "value": "initializer" + }, + "id": 35239, + "name": "Identifier", + "src": "1839:11:99" + } + ], + "id": 35240, + "name": "ModifierInvocation", + "src": "1839:11:99" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 480, + "type": "function (address)", + "value": "_transferOwnership" + }, + "id": 35242, + "name": "Identifier", + "src": "1857:18:99" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 35243, + "name": "Identifier", + "src": "1876:3:99" + } + ], + "id": 35244, + "name": "MemberAccess", + "src": "1876:10:99" + } + ], + "id": 35245, + "name": "FunctionCall", + "src": "1857:30:99" + } + ], + "id": 35246, + "name": "ExpressionStatement", + "src": "1857:30:99" + } + ], + "id": 35247, + "name": "Block", + "src": "1851:41:99" + } + ], + "id": 35248, + "name": "FunctionDefinition", + "src": "1808:84:99" + }, + { + "attributes": { + "documentation": "@notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n@param account The account whose balance to increment.\n@param value The amount in cUSD to pay.\n@dev Throws if cUSD transfer fails.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "payInCUSD", + "scope": 35290, + "stateMutability": "nonpayable", + "superFunction": 36162, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "account", + "scope": 35289, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 35249, + "name": "ElementaryTypeName", + "src": "2151:7:99" + } + ], + "id": 35250, + "name": "VariableDeclaration", + "src": "2151:15:99" + }, + { + "attributes": { + "constant": false, + "name": "value", + "scope": 35289, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 35251, + "name": "ElementaryTypeName", + "src": "2168:7:99" + } + ], + "id": 35252, + "name": "VariableDeclaration", + "src": "2168:13:99" + } + ], + "id": 35253, + "name": "ParameterList", + "src": "2150:32:99" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 35256, + "name": "ParameterList", + "src": "2205:0:99" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 9484, + "type": "modifier ()", + "value": "nonReentrant" + }, + "id": 35254, + "name": "Identifier", + "src": "2192:12:99" + } + ], + "id": 35255, + "name": "ModifierInvocation", + "src": "2192:12:99" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransferFrom", + "referencedDeclaration": 1013, + "type": "function (contract IERC20,address,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "contract IERC20", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 955, + "type": "type(contract IERC20)", + "value": "IERC20" + }, + "id": 35257, + "name": "Identifier", + "src": "2211:6:99" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAddressForOrDie", + "referencedDeclaration": 9249, + "type": "function (bytes32) view external returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8325, + "type": "contract IRegistry", + "value": "registryContract" + }, + "id": 35258, + "name": "Identifier", + "src": "2218:16:99" + } + ], + "id": 35259, + "name": "MemberAccess", + "src": "2218:35:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8477, + "type": "bytes32", + "value": "STABLE_TOKEN_REGISTRY_ID" + }, + "id": 35260, + "name": "Identifier", + "src": "2254:24:99" + } + ], + "id": 35261, + "name": "FunctionCall", + "src": "2218:61:99" + } + ], + "id": 35262, + "name": "FunctionCall", + "src": "2211:69:99" + } + ], + "id": 35263, + "name": "MemberAccess", + "src": "2211:86:99" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 42906, + "type": "msg", + "value": "msg" + }, + "id": 35264, + "name": "Identifier", + "src": "2305:3:99" + } + ], + "id": 35265, + "name": "MemberAccess", + "src": "2305:10:99" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_OdisPayments_$35290", + "typeString": "contract OdisPayments" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 35266, + "name": "ElementaryTypeNameExpression", + "src": "2323:7:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 43138, + "type": "contract OdisPayments", + "value": "this" + }, + "id": 35267, + "name": "Identifier", + "src": "2331:4:99" + } + ], + "id": 35268, + "name": "FunctionCall", + "src": "2323:13:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35252, + "type": "uint256", + "value": "value" + }, + "id": 35269, + "name": "Identifier", + "src": "2344:5:99" + } + ], + "id": 35270, + "name": "FunctionCall", + "src": "2211:144:99" + } + ], + "id": 35271, + "name": "ExpressionStatement", + "src": "2211:144:99" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35210, + "type": "mapping(address => uint256)", + "value": "totalPaidCUSD" + }, + "id": 35272, + "name": "Identifier", + "src": "2361:13:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35250, + "type": "address", + "value": "account" + }, + "id": 35273, + "name": "Identifier", + "src": "2375:7:99" + } + ], + "id": 35274, + "name": "IndexAccess", + "src": "2361:22:99" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 203, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35210, + "type": "mapping(address => uint256)", + "value": "totalPaidCUSD" + }, + "id": 35275, + "name": "Identifier", + "src": "2386:13:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35250, + "type": "address", + "value": "account" + }, + "id": 35276, + "name": "Identifier", + "src": "2400:7:99" + } + ], + "id": 35277, + "name": "IndexAccess", + "src": "2386:22:99" + } + ], + "id": 35278, + "name": "MemberAccess", + "src": "2386:26:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35252, + "type": "uint256", + "value": "value" + }, + "id": 35279, + "name": "Identifier", + "src": "2413:5:99" + } + ], + "id": 35280, + "name": "FunctionCall", + "src": "2386:33:99" + } + ], + "id": 35281, + "name": "Assignment", + "src": "2361:58:99" + } + ], + "id": 35282, + "name": "ExpressionStatement", + "src": "2361:58:99" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35206, + "type": "function (address,uint256)", + "value": "PaymentMade" + }, + "id": 35283, + "name": "Identifier", + "src": "2430:11:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35250, + "type": "address", + "value": "account" + }, + "id": 35284, + "name": "Identifier", + "src": "2442:7:99" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 35252, + "type": "uint256", + "value": "value" + }, + "id": 35285, + "name": "Identifier", + "src": "2451:5:99" + } + ], + "id": 35286, + "name": "FunctionCall", + "src": "2430:27:99" + } + ], + "id": 35287, + "name": "EmitStatement", + "src": "2425:32:99" + } + ], + "id": 35288, + "name": "Block", + "src": "2205:257:99" + } + ], + "id": 35289, + "name": "FunctionDefinition", + "src": "2132:330:99" + } + ], + "id": 35290, + "name": "ContractDefinition", + "src": "585:1879:99" + } + ], + "id": 35291, + "name": "SourceUnit", + "src": "0:2465:99" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.7", + "updatedAt": "2022-09-23T16:17:10.946Z", + "devdoc": { + "methods": { + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization." + } + }, + "getVersionNumber()": { + "return": "Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "payInCUSD(address,uint256)": { + "details": "Throws if cUSD transfer fails.", + "params": { + "account": "The account whose balance to increment.", + "value": "The amount in cUSD to pay." + } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing 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." + } + }, + "title": "Stores balance to be used for ODIS quota calculation." + }, + "userdoc": { + "methods": { + "constructor": "Sets initialized == true on implementation contracts.", + "getVersionNumber()": { + "notice": "Returns the storage, major, minor, and patch version of the contract." + }, + "initialize()": { + "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy." + }, + "payInCUSD(address,uint256)": { + "notice": "Sends cUSD to this contract to pay for ODIS quota (for queries)." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/Registry.json b/celo-social-connect-dapp/packages/react-app/abis/Registry.json new file mode 100644 index 00000000..ef519f86 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/Registry.json @@ -0,0 +1,5639 @@ +{ + "contractName": "Registry", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": "string", + "name": "identifier", + "type": "string" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "identifierHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "RegistryUpdated", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "identifier", + "type": "string" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "setAddressFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifierHash", + "type": "bytes32" + } + ], + "name": "getAddressForOrDie", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "identifierHash", + "type": "bytes32" + } + ], + "name": "getAddressFor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "string", + "name": "identifier", + "type": "string" + } + ], + "name": "getAddressForStringOrDie", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "string", + "name": "identifier", + "type": "string" + } + ], + "name": "getAddressForString", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32[]", + "name": "identifierHashes", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "isOneOf", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"string\",\"name\":\"identifier\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"RegistryUpdated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"}],\"name\":\"getAddressFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"}],\"name\":\"getAddressForOrDie\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"}],\"name\":\"getAddressForString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"}],\"name\":\"getAddressForStringOrDie\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"identifierHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isOneOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddressFor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getAddressFor(bytes32)\":{\"params\":{\"identifierHash\":\"Identifier hash of contract whose address we want to look up.\"}},\"getAddressForOrDie(bytes32)\":{\"details\":\"Throws if address not set.\",\"params\":{\"identifierHash\":\"Identifier hash of contract whose address we want to look up.\"}},\"getAddressForString(string)\":{\"params\":{\"identifier\":\"Identifier of contract whose address we want to look up.\"}},\"getAddressForStringOrDie(string)\":{\"details\":\"Throws if address not set.\",\"params\":{\"identifier\":\"Identifier of contract whose address we want to look up.\"}},\"isOneOf(bytes32[],address)\":{\"params\":{\"identifierHashes\":\"Array of hashes of approved identifiers.\",\"sender\":\"Address in question to verify membership.\"},\"return\":\"True if `sender` corresponds to the address of any of `identifiers` registry entries.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"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 anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAddressFor(string,address)\":{\"params\":{\"addr\":\"Address of contract.\",\"identifier\":\"Identifier of contract whose address we want to set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Routes identifiers to addresses.\"},\"userdoc\":{\"methods\":{\"constructor\":\"Sets initialized == true on implementation contracts\",\"getAddressFor(bytes32)\":{\"notice\":\"Gets address associated with the given identifierHash.\"},\"getAddressForOrDie(bytes32)\":{\"notice\":\"Gets address associated with the given identifierHash.\"},\"getAddressForString(string)\":{\"notice\":\"Gets address associated with the given identifier.\"},\"getAddressForStringOrDie(string)\":{\"notice\":\"Gets address associated with the given identifier.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"isOneOf(bytes32[],address)\":{\"notice\":\"Iterates over provided array of identifiers, getting the address for each. Returns true if `sender` matches the address of one of the provided identifiers.\"},\"setAddressFor(string,address)\":{\"notice\":\"Associates the given address with the given identifier.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol\":\"Registry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol\":{\"keccak256\":\"0xdf3e6d50c84727ff1272bd9f74463c09a34fe8137e4be575638b81ae5056e0ff\",\"urls\":[\"bzz-raw://19ba90466092f7321caef948c5907a4e2a6cc812349665baf5f3a7c559c4713c\",\"dweb:/ipfs/QmR7uMVYc6zXJbiw4pjiD6T33KHkDxn83Cb36ymCGJnG57\"]},\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405161119e38038061119e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600061005561011b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080610114576001600060146101000a81548160ff0219169083151502179055505b5050610123565b600033905090565b61106c806101326000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638932cbf41161008c578063c586579311610066578063c586579314610407578063dcf0aaed146104a0578063dd9272331461050e578063f2fde38b1461057c576100cf565b80638932cbf4146102e25780638da5cb5b1461039b5780638f32d59b146103e5576100cf565b8063158ef93e146100d457806317c50818146100f6578063715018a6146101a75780637ef50298146101b15780638129fc1c1461021f578063853db32314610229575b600080fd5b6100dc6105c0565b604051808215151515815260200191505060405180910390f35b61018d6004803603604081101561010c57600080fd5b810190808035906020019064010000000081111561012957600080fd5b82018360208201111561013b57600080fd5b8035906020019184602083028401116401000000008311171561015d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d3565b604051808215151515815260200191505060405180910390f35b6101af610691565b005b6101dd600480360360208110156101c757600080fd5b81019080803590602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276107fd565b005b6102a06004803603602081101561023f57600080fd5b810190808035906020019064010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b90919293919293905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610359600480360360208110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b9091929391929390505050610918565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3610a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ed610a89565b604051808215151515815260200191505060405180910390f35b61049e6004803603604081101561041d57600080fd5b810190808035906020019064010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184600183028401116401000000008311171561046e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae7565b005b6104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050610c68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050610d7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105be6004803603602081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b600060149054906101000a900460ff1681565b600080600090505b84849050811015610684578273ffffffffffffffffffffffffffffffffffffffff166001600087878581811061060d57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561066957600191505061068a565b61067d600182610e3d90919063ffffffff16565b90506105db565b50600090505b9392505050565b610699610a89565b61070b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506108a433610ec5565b565b60008083836040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090506001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6000808383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610acb611009565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b610aef610a89565b610b61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16817f4166d073a7a5e704ce0db7113320f88da2457f872d46dc020c805c562c1582a0868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610dbf610a89565b610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e3a81610ec5565b50565b600080828401905083811015610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806110126026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820170654eabf1fff3345175ebb9f2bfb674de24044e2984fee447f08ce2771da9e64736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638932cbf41161008c578063c586579311610066578063c586579314610407578063dcf0aaed146104a0578063dd9272331461050e578063f2fde38b1461057c576100cf565b80638932cbf4146102e25780638da5cb5b1461039b5780638f32d59b146103e5576100cf565b8063158ef93e146100d457806317c50818146100f6578063715018a6146101a75780637ef50298146101b15780638129fc1c1461021f578063853db32314610229575b600080fd5b6100dc6105c0565b604051808215151515815260200191505060405180910390f35b61018d6004803603604081101561010c57600080fd5b810190808035906020019064010000000081111561012957600080fd5b82018360208201111561013b57600080fd5b8035906020019184602083028401116401000000008311171561015d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d3565b604051808215151515815260200191505060405180910390f35b6101af610691565b005b6101dd600480360360208110156101c757600080fd5b81019080803590602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276107fd565b005b6102a06004803603602081101561023f57600080fd5b810190808035906020019064010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b90919293919293905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610359600480360360208110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b9091929391929390505050610918565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3610a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ed610a89565b604051808215151515815260200191505060405180910390f35b61049e6004803603604081101561041d57600080fd5b810190808035906020019064010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184600183028401116401000000008311171561046e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae7565b005b6104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050610c68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050610d7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105be6004803603602081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b600060149054906101000a900460ff1681565b600080600090505b84849050811015610684578273ffffffffffffffffffffffffffffffffffffffff166001600087878581811061060d57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561066957600191505061068a565b61067d600182610e3d90919063ffffffff16565b90506105db565b50600090505b9392505050565b610699610a89565b61070b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506108a433610ec5565b565b60008083836040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090506001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6000808383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610acb611009565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b610aef610a89565b610b61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16817f4166d073a7a5e704ce0db7113320f88da2457f872d46dc020c805c562c1582a0868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610dbf610a89565b610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e3a81610ec5565b50565b600080828401905083811015610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806110126026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820170654eabf1fff3345175ebb9f2bfb674de24044e2984fee447f08ce2771da9e64736f6c634300050d0032", + "sourceMap": "270:3393:19:-;;;652:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;652:52:19;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;652:52:19;;;;;;;;;;;;;;;;696:4;698:17:156;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;652:52:19;270:3393;;788:96:152;833:15;867:10;860:17;;788:96;:::o;270:3393:19:-;;;;;;;", + "deployedSourceMap": "270:3393:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;270:3393:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3368:293:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3368:293:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3368:293:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3368:293:19;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3368:293:19;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:156;;;:::i;:::-;;360:43:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;360:43:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;816:84;;;:::i;:::-;;2726:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2726:201:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2726:201:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2726:201:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2726:201:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2271:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2271:295:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2271:295:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2271:295:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2271:295:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;899:77:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1099:256:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1099:256:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1099:256:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1099:256:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1099:256:19;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1565:215;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1565:215:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1953:121;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1953:121:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1970:107:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:12;;;;;;;;;;;;;:::o;3368:293:19:-;3473:4;3492:9;3504:1;3492:13;;3487:152;3511:16;;:23;;3507:1;:27;3487:152;;;3595:6;3562:39;;:8;:29;3571:16;;3588:1;3571:19;;;;;;;;;;;;;3562:29;;;;;;;;;;;;;;;;;;;;;:39;;;3558:75;;;3620:4;3613:11;;;;;3558:75;3540:8;3546:1;3540;:5;;:8;;;;:::i;:::-;3536:12;;3487:152;;;;3651:5;3644:12;;3368:293;;;;;;:::o;1684:137:156:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;360:43:19:-;;;;;;;;;;;;;;;;;;;;;;:::o;816:84::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;865:30:19;884:10;865:18;:30::i;:::-;816:84::o;2726:201::-;2806:7;2821:22;2873:10;;2856:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;2856:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2856:28:19;;;2846:39;;;;;;2821:64;;2898:8;:24;2907:14;2898:24;;;;;;;;;;;;;;;;;;;;;2891:31;;;2726:201;;;;:::o;2271:295::-;2356:7;2371:22;2423:10;;2406:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;2406:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2406:28:19;;;2396:39;;;;;;2371:64;;2485:1;2449:38;;:8;:24;2458:14;2449:24;;;;;;;;;;;;;;;;;;;;;:38;;;;2441:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2537:8;:24;2546:14;2537:24;;;;;;;;;;;;;;;;;;;;;2530:31;;;2271:295;;;;:::o;899:77:156:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;1099:256:19:-;1103:9:156;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:22:19;1241:10;;1224:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;1224:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1224:28:19;;;1214:39;;;;;;1189:64;;1286:4;1259:8;:24;1268:14;1259:24;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;1345:4;1301:49;;1329:14;1301:49;1317:10;;1301:49;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1301:49:19;;;;;;;;;;;;;;1159:1:156;1099:256:19;;;:::o;1565:215::-;1640:7;1699:1;1663:38;;:8;:24;1672:14;1663:24;;;;;;;;;;;;;;;;;;;;;:38;;;;1655:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:8;:24;1760:14;1751:24;;;;;;;;;;;;;;;;;;;;;1744:31;;1565:215;;;:::o;1953:121::-;2023:7;2045:8;:24;2054:14;2045:24;;;;;;;;;;;;;;;;;;;;;2038:31;;1953:121;;;:::o;1970:107:156:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;834:176:155:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2178:225:156:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:152:-;833:15;867:10;860:17;;788:96;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IRegistry.sol\";\nimport \"./Initializable.sol\";\n\n/**\n * @title Routes identifiers to addresses.\n */\ncontract Registry is IRegistry, Ownable, Initializable {\n using SafeMath for uint256;\n\n mapping(bytes32 => address) public registry;\n\n event RegistryUpdated(string identifier, bytes32 indexed identifierHash, address indexed addr);\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Associates the given address with the given identifier.\n * @param identifier Identifier of contract whose address we want to set.\n * @param addr Address of contract.\n */\n function setAddressFor(string calldata identifier, address addr) external onlyOwner {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n registry[identifierHash] = addr;\n emit RegistryUpdated(identifier, identifierHash, addr);\n }\n\n /**\n * @notice Gets address associated with the given identifierHash.\n * @param identifierHash Identifier hash of contract whose address we want to look up.\n * @dev Throws if address not set.\n */\n function getAddressForOrDie(bytes32 identifierHash) external view returns (address) {\n require(registry[identifierHash] != address(0), \"identifier has no registry entry\");\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifierHash.\n * @param identifierHash Identifier hash of contract whose address we want to look up.\n */\n function getAddressFor(bytes32 identifierHash) external view returns (address) {\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifier.\n * @param identifier Identifier of contract whose address we want to look up.\n * @dev Throws if address not set.\n */\n function getAddressForStringOrDie(string calldata identifier) external view returns (address) {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n require(registry[identifierHash] != address(0), \"identifier has no registry entry\");\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifier.\n * @param identifier Identifier of contract whose address we want to look up.\n */\n function getAddressForString(string calldata identifier) external view returns (address) {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n return registry[identifierHash];\n }\n\n /**\n * @notice Iterates over provided array of identifiers, getting the address for each.\n * Returns true if `sender` matches the address of one of the provided identifiers.\n * @param identifierHashes Array of hashes of approved identifiers.\n * @param sender Address in question to verify membership.\n * @return True if `sender` corresponds to the address of any of `identifiers`\n * registry entries.\n */\n function isOneOf(bytes32[] calldata identifierHashes, address sender)\n external\n view\n returns (bool)\n {\n for (uint256 i = 0; i < identifierHashes.length; i = i.add(1)) {\n if (registry[identifierHashes[i]] == sender) {\n return true;\n }\n }\n return false;\n }\n}\n", + "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol", + "ast": { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol", + "exportedSymbols": { + "Registry": [ + 7094 + ] + }, + "id": 7095, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6888, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:19" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 6889, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 44332, + "src": "26:59:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 6890, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 44450, + "src": "86:63:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol", + "file": "./interfaces/IRegistry.sol", + "id": 6891, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 9558, + "src": "151:36:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "./Initializable.sol", + "id": 6892, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 4705, + "src": "188:29:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6893, + "name": "IRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9557, + "src": "291:9:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9557", + "typeString": "contract IRegistry" + } + }, + "id": 6894, + "nodeType": "InheritanceSpecifier", + "src": "291:9:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6895, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44449, + "src": "302:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$44449", + "typeString": "contract Ownable" + } + }, + "id": 6896, + "nodeType": "InheritanceSpecifier", + "src": "302:7:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6897, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "311:13:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 6898, + "nodeType": "InheritanceSpecifier", + "src": "311:13:19" + } + ], + "contractDependencies": [ + 4704, + 9557, + 43994, + 44449 + ], + "contractKind": "contract", + "documentation": "@title Routes identifiers to addresses.", + "fullyImplemented": true, + "id": 7094, + "linearizedBaseContracts": [ + 7094, + 4704, + 44449, + 43994, + 9557 + ], + "name": "Registry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6901, + "libraryName": { + "contractScope": null, + "id": 6899, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44331, + "src": "335:8:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$44331", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "329:27:19", + "typeName": { + "id": 6900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "348:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 6905, + "name": "registry", + "nodeType": "VariableDeclaration", + "scope": 7094, + "src": "360:43:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "typeName": { + "id": 6904, + "keyType": { + "id": 6902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "368:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "360:27:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueType": { + "id": 6903, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "379:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 6913, + "name": "RegistryUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 6912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6907, + "indexed": false, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "430:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6906, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "430:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6909, + "indexed": true, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "449:30:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "449:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6911, + "indexed": true, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "481:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "481:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:73:19" + }, + "src": "408:95:19" + }, + { + "body": { + "id": 6921, + "nodeType": "Block", + "src": "702:2:19", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 6922, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6918, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "696:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 6919, + "modifierName": { + "argumentTypes": null, + "id": 6917, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "682:13:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "682:19:19" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6915, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 6922, + "src": "664:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6914, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "664:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "663:11:19" + }, + "returnParameters": { + "id": 6920, + "nodeType": "ParameterList", + "parameters": [], + "src": "702:0:19" + }, + "scope": 7094, + "src": "652:52:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6932, + "nodeType": "Block", + "src": "859:41:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6928, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45587, + "src": "884:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "884:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6927, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44448, + "src": "865:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "865:30:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6931, + "nodeType": "ExpressionStatement", + "src": "865:30:19" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "id": 6933, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6925, + "modifierName": { + "argumentTypes": null, + "id": 6924, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "847:11:19", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "847:11:19" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6923, + "nodeType": "ParameterList", + "parameters": [], + "src": "835:2:19" + }, + "returnParameters": { + "id": 6926, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:19" + }, + "scope": 7094, + "src": "816:84:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 6963, + "nodeType": "Block", + "src": "1183:172:19", + "statements": [ + { + "assignments": [ + 6943 + ], + "declarations": [ + { + "constant": false, + "id": 6943, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6963, + "src": "1189:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1189:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6950, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6947, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6935, + "src": "1241:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 6945, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "1224:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1224:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1224:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6944, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "1214:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1214:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1189:64:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 6955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6951, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1259:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6953, + "indexExpression": { + "argumentTypes": null, + "id": 6952, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6943, + "src": "1268:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1259:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6954, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6937, + "src": "1286:4:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1259:31:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6956, + "nodeType": "ExpressionStatement", + "src": "1259:31:19" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6958, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6935, + "src": "1317:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 6959, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6943, + "src": "1329:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 6960, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6937, + "src": "1345:4:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6957, + "name": "RegistryUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6913, + "src": "1301:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (string memory,bytes32,address)" + } + }, + "id": 6961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1301:49:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6962, + "nodeType": "EmitStatement", + "src": "1296:54:19" + } + ] + }, + "documentation": "@notice Associates the given address with the given identifier.\n@param identifier Identifier of contract whose address we want to set.\n@param addr Address of contract.", + "id": 6964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6940, + "modifierName": { + "argumentTypes": null, + "id": 6939, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44382, + "src": "1173:9:19", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1173:9:19" + } + ], + "name": "setAddressFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6935, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 6964, + "src": "1122:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6934, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1122:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6937, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 6964, + "src": "1150:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1150:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1121:42:19" + }, + "returnParameters": { + "id": 6941, + "nodeType": "ParameterList", + "parameters": [], + "src": "1183:0:19" + }, + "scope": 7094, + "src": "1099:256:19", + "stateMutability": "nonpayable", + "superFunction": 9518, + "visibility": "external" + }, + { + "body": { + "id": 6986, + "nodeType": "Block", + "src": "1649:131:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6972, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1663:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6974, + "indexExpression": { + "argumentTypes": null, + "id": 6973, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "1672:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1663:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 6976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:19", + "subdenomination": null, + "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": 6975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1663:38:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279", + "id": 6979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1703:34:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + }, + "value": "identifier has no registry entry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + } + ], + "id": 6971, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45590, + 45591 + ], + "referencedDeclaration": 45591, + "src": "1655:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1655:83:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6981, + "nodeType": "ExpressionStatement", + "src": "1655:83:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6982, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1751:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6984, + "indexExpression": { + "argumentTypes": null, + "id": 6983, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "1760:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1751:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6970, + "id": 6985, + "nodeType": "Return", + "src": "1744:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.\n@dev Throws if address not set.", + "id": 6987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForOrDie", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6966, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6987, + "src": "1593:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6965, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1593:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:24:19" + }, + "returnParameters": { + "id": 6970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6969, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6987, + "src": "1640:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1640:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1639:9:19" + }, + "scope": 7094, + "src": "1565:215:19", + "stateMutability": "view", + "superFunction": 9525, + "visibility": "external" + }, + { + "body": { + "id": 6998, + "nodeType": "Block", + "src": "2032:42:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6994, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2045:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6996, + "indexExpression": { + "argumentTypes": null, + "id": 6995, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "2054:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2045:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6993, + "id": 6997, + "nodeType": "Return", + "src": "2038:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.", + "id": 6999, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6989, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6999, + "src": "1976:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6988, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1976:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1975:24:19" + }, + "returnParameters": { + "id": 6993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6992, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6999, + "src": "2023:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6991, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2023:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2022:9:19" + }, + "scope": 7094, + "src": "1953:121:19", + "stateMutability": "view", + "superFunction": 9532, + "visibility": "external" + }, + { + "body": { + "id": 7030, + "nodeType": "Block", + "src": "2365:201:19", + "statements": [ + { + "assignments": [ + 7007 + ], + "declarations": [ + { + "constant": false, + "id": 7007, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 7030, + "src": "2371:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7006, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2371:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7014, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7011, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7001, + "src": "2423:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 7009, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "2406:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7008, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "2396:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2396:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2371:64:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7016, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2449:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7018, + "indexExpression": { + "argumentTypes": null, + "id": 7017, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7007, + "src": "2458:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2449:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2485:1:19", + "subdenomination": null, + "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": 7019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2477:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 7021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2477:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2449:38:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279", + "id": 7023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2489:34:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + }, + "value": "identifier has no registry entry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + } + ], + "id": 7015, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45590, + 45591 + ], + "referencedDeclaration": 45591, + "src": "2441:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2441:83:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7025, + "nodeType": "ExpressionStatement", + "src": "2441:83:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7026, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2537:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7028, + "indexExpression": { + "argumentTypes": null, + "id": 7027, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7007, + "src": "2546:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2537:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7005, + "id": 7029, + "nodeType": "Return", + "src": "2530:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.\n@dev Throws if address not set.", + "id": 7031, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForStringOrDie", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7001, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 7031, + "src": "2305:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7000, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2305:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2304:28:19" + }, + "returnParameters": { + "id": 7005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7004, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7031, + "src": "2356:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7003, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2355:9:19" + }, + "scope": 7094, + "src": "2271:295:19", + "stateMutability": "view", + "superFunction": 9539, + "visibility": "external" + }, + { + "body": { + "id": 7051, + "nodeType": "Block", + "src": "2815:112:19", + "statements": [ + { + "assignments": [ + 7039 + ], + "declarations": [ + { + "constant": false, + "id": 7039, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 7051, + "src": "2821:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7038, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2821:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7046, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7043, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7033, + "src": "2873:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 7041, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "2856:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2856:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7040, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "2846:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2846:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2821:64:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7047, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2898:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7049, + "indexExpression": { + "argumentTypes": null, + "id": 7048, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7039, + "src": "2907:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2898:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7037, + "id": 7050, + "nodeType": "Return", + "src": "2891:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.", + "id": 7052, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForString", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7033, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "2755:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7032, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2755:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2754:28:19" + }, + "returnParameters": { + "id": 7037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7036, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "2806:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2806:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2805:9:19" + }, + "scope": 7094, + "src": "2726:201:19", + "stateMutability": "view", + "superFunction": 9546, + "visibility": "external" + }, + { + "body": { + "id": 7092, + "nodeType": "Block", + "src": "3481:180:19", + "statements": [ + { + "body": { + "id": 7088, + "nodeType": "Block", + "src": "3550:89:19", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7077, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "3562:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7081, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7078, + "name": "identifierHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7055, + "src": "3571:16:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 7080, + "indexExpression": { + "argumentTypes": null, + "id": 7079, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3588:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3571:19:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3562:29:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 7082, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7057, + "src": "3595:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3562:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 7087, + "nodeType": "IfStatement", + "src": "3558:75:19", + "trueBody": { + "id": 7086, + "nodeType": "Block", + "src": "3603:30:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 7084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3620:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7061, + "id": 7085, + "nodeType": "Return", + "src": "3613:11:19" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7066, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3507:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7067, + "name": "identifierHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7055, + "src": "3511:16:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 7068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3511:23:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3507:27:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7089, + "initializationExpression": { + "assignments": [ + 7063 + ], + "declarations": [ + { + "constant": false, + "id": 7063, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 7089, + "src": "3492:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3492:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7065, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 7064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3504:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3492:13:19" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 7075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 7070, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3536:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 7073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3546:1:19", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 7071, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3540:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44171, + "src": "3540:5:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3540:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3536:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7076, + "nodeType": "ExpressionStatement", + "src": "3536:12:19" + }, + "nodeType": "ForStatement", + "src": "3487:152:19" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 7090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3651:5:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7061, + "id": 7091, + "nodeType": "Return", + "src": "3644:12:19" + } + ] + }, + "documentation": "@notice Iterates over provided array of identifiers, getting the address for each.\n Returns true if `sender` matches the address of one of the provided identifiers.\n@param identifierHashes Array of hashes of approved identifiers.\n@param sender Address in question to verify membership.\n@return True if `sender` corresponds to the address of any of `identifiers`\n registry entries.", + "id": 7093, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOneOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7055, + "name": "identifierHashes", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3385:35:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3385:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7054, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3385:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7057, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3422:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3422:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3384:53:19" + }, + "returnParameters": { + "id": 7061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7060, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3473:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7059, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3473:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3472:6:19" + }, + "scope": 7094, + "src": "3368:293:19", + "stateMutability": "view", + "superFunction": 9556, + "visibility": "external" + } + ], + "scope": 7095, + "src": "270:3393:19" + } + ], + "src": "0:3664:19" + }, + "legacyAST": { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol", + "exportedSymbols": { + "Registry": [ + 7094 + ] + }, + "id": 7095, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6888, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:19" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 6889, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 44332, + "src": "26:59:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 6890, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 44450, + "src": "86:63:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol", + "file": "./interfaces/IRegistry.sol", + "id": 6891, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 9558, + "src": "151:36:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "./Initializable.sol", + "id": 6892, + "nodeType": "ImportDirective", + "scope": 7095, + "sourceUnit": 4705, + "src": "188:29:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6893, + "name": "IRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9557, + "src": "291:9:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9557", + "typeString": "contract IRegistry" + } + }, + "id": 6894, + "nodeType": "InheritanceSpecifier", + "src": "291:9:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6895, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44449, + "src": "302:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$44449", + "typeString": "contract Ownable" + } + }, + "id": 6896, + "nodeType": "InheritanceSpecifier", + "src": "302:7:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6897, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "311:13:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 6898, + "nodeType": "InheritanceSpecifier", + "src": "311:13:19" + } + ], + "contractDependencies": [ + 4704, + 9557, + 43994, + 44449 + ], + "contractKind": "contract", + "documentation": "@title Routes identifiers to addresses.", + "fullyImplemented": true, + "id": 7094, + "linearizedBaseContracts": [ + 7094, + 4704, + 44449, + 43994, + 9557 + ], + "name": "Registry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6901, + "libraryName": { + "contractScope": null, + "id": 6899, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 44331, + "src": "335:8:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$44331", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "329:27:19", + "typeName": { + "id": 6900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "348:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 6905, + "name": "registry", + "nodeType": "VariableDeclaration", + "scope": 7094, + "src": "360:43:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "typeName": { + "id": 6904, + "keyType": { + "id": 6902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "368:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "360:27:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueType": { + "id": 6903, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "379:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 6913, + "name": "RegistryUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 6912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6907, + "indexed": false, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "430:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6906, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "430:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6909, + "indexed": true, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "449:30:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "449:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6911, + "indexed": true, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 6913, + "src": "481:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "481:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:73:19" + }, + "src": "408:95:19" + }, + { + "body": { + "id": 6921, + "nodeType": "Block", + "src": "702:2:19", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 6922, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6918, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "696:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 6919, + "modifierName": { + "argumentTypes": null, + "id": 6917, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "682:13:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "682:19:19" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6915, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 6922, + "src": "664:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6914, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "664:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "663:11:19" + }, + "returnParameters": { + "id": 6920, + "nodeType": "ParameterList", + "parameters": [], + "src": "702:0:19" + }, + "scope": 7094, + "src": "652:52:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6932, + "nodeType": "Block", + "src": "859:41:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6928, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45587, + "src": "884:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "884:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6927, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44448, + "src": "865:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "865:30:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6931, + "nodeType": "ExpressionStatement", + "src": "865:30:19" + } + ] + }, + "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.", + "id": 6933, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6925, + "modifierName": { + "argumentTypes": null, + "id": 6924, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "847:11:19", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "847:11:19" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6923, + "nodeType": "ParameterList", + "parameters": [], + "src": "835:2:19" + }, + "returnParameters": { + "id": 6926, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:19" + }, + "scope": 7094, + "src": "816:84:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 6963, + "nodeType": "Block", + "src": "1183:172:19", + "statements": [ + { + "assignments": [ + 6943 + ], + "declarations": [ + { + "constant": false, + "id": 6943, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6963, + "src": "1189:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1189:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6950, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6947, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6935, + "src": "1241:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 6945, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "1224:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1224:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1224:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6944, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "1214:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1214:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1189:64:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 6955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6951, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1259:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6953, + "indexExpression": { + "argumentTypes": null, + "id": 6952, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6943, + "src": "1268:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1259:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6954, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6937, + "src": "1286:4:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1259:31:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6956, + "nodeType": "ExpressionStatement", + "src": "1259:31:19" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6958, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6935, + "src": "1317:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 6959, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6943, + "src": "1329:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 6960, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6937, + "src": "1345:4:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6957, + "name": "RegistryUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6913, + "src": "1301:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (string memory,bytes32,address)" + } + }, + "id": 6961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1301:49:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6962, + "nodeType": "EmitStatement", + "src": "1296:54:19" + } + ] + }, + "documentation": "@notice Associates the given address with the given identifier.\n@param identifier Identifier of contract whose address we want to set.\n@param addr Address of contract.", + "id": 6964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6940, + "modifierName": { + "argumentTypes": null, + "id": 6939, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44382, + "src": "1173:9:19", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1173:9:19" + } + ], + "name": "setAddressFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6935, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 6964, + "src": "1122:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6934, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1122:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6937, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 6964, + "src": "1150:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1150:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1121:42:19" + }, + "returnParameters": { + "id": 6941, + "nodeType": "ParameterList", + "parameters": [], + "src": "1183:0:19" + }, + "scope": 7094, + "src": "1099:256:19", + "stateMutability": "nonpayable", + "superFunction": 9518, + "visibility": "external" + }, + { + "body": { + "id": 6986, + "nodeType": "Block", + "src": "1649:131:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6972, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1663:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6974, + "indexExpression": { + "argumentTypes": null, + "id": 6973, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "1672:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1663:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 6976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:19", + "subdenomination": null, + "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": 6975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1663:38:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279", + "id": 6979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1703:34:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + }, + "value": "identifier has no registry entry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + } + ], + "id": 6971, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45590, + 45591 + ], + "referencedDeclaration": 45591, + "src": "1655:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1655:83:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6981, + "nodeType": "ExpressionStatement", + "src": "1655:83:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6982, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "1751:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6984, + "indexExpression": { + "argumentTypes": null, + "id": 6983, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "1760:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1751:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6970, + "id": 6985, + "nodeType": "Return", + "src": "1744:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.\n@dev Throws if address not set.", + "id": 6987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForOrDie", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6966, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6987, + "src": "1593:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6965, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1593:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:24:19" + }, + "returnParameters": { + "id": 6970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6969, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6987, + "src": "1640:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1640:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1639:9:19" + }, + "scope": 7094, + "src": "1565:215:19", + "stateMutability": "view", + "superFunction": 9525, + "visibility": "external" + }, + { + "body": { + "id": 6998, + "nodeType": "Block", + "src": "2032:42:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6994, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2045:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 6996, + "indexExpression": { + "argumentTypes": null, + "id": 6995, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "2054:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2045:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6993, + "id": 6997, + "nodeType": "Return", + "src": "2038:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.", + "id": 6999, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6989, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 6999, + "src": "1976:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6988, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1976:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1975:24:19" + }, + "returnParameters": { + "id": 6993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6992, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6999, + "src": "2023:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6991, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2023:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2022:9:19" + }, + "scope": 7094, + "src": "1953:121:19", + "stateMutability": "view", + "superFunction": 9532, + "visibility": "external" + }, + { + "body": { + "id": 7030, + "nodeType": "Block", + "src": "2365:201:19", + "statements": [ + { + "assignments": [ + 7007 + ], + "declarations": [ + { + "constant": false, + "id": 7007, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 7030, + "src": "2371:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7006, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2371:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7014, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7011, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7001, + "src": "2423:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 7009, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "2406:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7008, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "2396:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2396:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2371:64:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7016, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2449:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7018, + "indexExpression": { + "argumentTypes": null, + "id": 7017, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7007, + "src": "2458:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2449:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2485:1:19", + "subdenomination": null, + "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": 7019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2477:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 7021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2477:10:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2449:38:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279", + "id": 7023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2489:34:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + }, + "value": "identifier has no registry entry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7", + "typeString": "literal_string \"identifier has no registry entry\"" + } + ], + "id": 7015, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45590, + 45591 + ], + "referencedDeclaration": 45591, + "src": "2441:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2441:83:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7025, + "nodeType": "ExpressionStatement", + "src": "2441:83:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7026, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2537:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7028, + "indexExpression": { + "argumentTypes": null, + "id": 7027, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7007, + "src": "2546:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2537:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7005, + "id": 7029, + "nodeType": "Return", + "src": "2530:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.\n@dev Throws if address not set.", + "id": 7031, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForStringOrDie", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7001, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 7031, + "src": "2305:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7000, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2305:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2304:28:19" + }, + "returnParameters": { + "id": 7005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7004, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7031, + "src": "2356:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7003, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2355:9:19" + }, + "scope": 7094, + "src": "2271:295:19", + "stateMutability": "view", + "superFunction": 9539, + "visibility": "external" + }, + { + "body": { + "id": 7051, + "nodeType": "Block", + "src": "2815:112:19", + "statements": [ + { + "assignments": [ + 7039 + ], + "declarations": [ + { + "constant": false, + "id": 7039, + "name": "identifierHash", + "nodeType": "VariableDeclaration", + "scope": 7051, + "src": "2821:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7038, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2821:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7046, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7043, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7033, + "src": "2873:10:19", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 7041, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45574, + "src": "2856:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2856:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7040, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45581, + "src": "2846:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2846:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2821:64:19" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7047, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "2898:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7049, + "indexExpression": { + "argumentTypes": null, + "id": 7048, + "name": "identifierHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7039, + "src": "2907:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2898:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7037, + "id": 7050, + "nodeType": "Return", + "src": "2891:31:19" + } + ] + }, + "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.", + "id": 7052, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressForString", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7033, + "name": "identifier", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "2755:26:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7032, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2755:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2754:28:19" + }, + "returnParameters": { + "id": 7037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7036, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "2806:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2806:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2805:9:19" + }, + "scope": 7094, + "src": "2726:201:19", + "stateMutability": "view", + "superFunction": 9546, + "visibility": "external" + }, + { + "body": { + "id": 7092, + "nodeType": "Block", + "src": "3481:180:19", + "statements": [ + { + "body": { + "id": 7088, + "nodeType": "Block", + "src": "3550:89:19", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7077, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6905, + "src": "3562:8:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 7081, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7078, + "name": "identifierHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7055, + "src": "3571:16:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 7080, + "indexExpression": { + "argumentTypes": null, + "id": 7079, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3588:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3571:19:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3562:29:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 7082, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7057, + "src": "3595:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3562:39:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 7087, + "nodeType": "IfStatement", + "src": "3558:75:19", + "trueBody": { + "id": 7086, + "nodeType": "Block", + "src": "3603:30:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 7084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3620:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7061, + "id": 7085, + "nodeType": "Return", + "src": "3613:11:19" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7066, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3507:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7067, + "name": "identifierHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7055, + "src": "3511:16:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 7068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3511:23:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3507:27:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7089, + "initializationExpression": { + "assignments": [ + 7063 + ], + "declarations": [ + { + "constant": false, + "id": 7063, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 7089, + "src": "3492:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3492:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7065, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 7064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3504:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3492:13:19" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 7075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 7070, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3536:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 7073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3546:1:19", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 7071, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "3540:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 44171, + "src": "3540:5:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3540:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3536:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7076, + "nodeType": "ExpressionStatement", + "src": "3536:12:19" + }, + "nodeType": "ForStatement", + "src": "3487:152:19" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 7090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3651:5:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7061, + "id": 7091, + "nodeType": "Return", + "src": "3644:12:19" + } + ] + }, + "documentation": "@notice Iterates over provided array of identifiers, getting the address for each.\n Returns true if `sender` matches the address of one of the provided identifiers.\n@param identifierHashes Array of hashes of approved identifiers.\n@param sender Address in question to verify membership.\n@return True if `sender` corresponds to the address of any of `identifiers`\n registry entries.", + "id": 7093, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOneOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7055, + "name": "identifierHashes", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3385:35:19", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3385:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7054, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3385:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7057, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3422:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3422:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3384:53:19" + }, + "returnParameters": { + "id": 7061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7060, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "3473:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7059, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3473:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3472:6:19" + }, + "scope": 7094, + "src": "3368:293:19", + "stateMutability": "view", + "superFunction": 9556, + "visibility": "external" + } + ], + "scope": 7095, + "src": "270:3393:19" + } + ], + "src": "0:3664:19" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.23", + "updatedAt": "2022-09-23T14:52:45.919Z", + "devdoc": { + "methods": { + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization" + } + }, + "getAddressFor(bytes32)": { + "params": { + "identifierHash": "Identifier hash of contract whose address we want to look up." + } + }, + "getAddressForOrDie(bytes32)": { + "details": "Throws if address not set.", + "params": { + "identifierHash": "Identifier hash of contract whose address we want to look up." + } + }, + "getAddressForString(string)": { + "params": { + "identifier": "Identifier of contract whose address we want to look up." + } + }, + "getAddressForStringOrDie(string)": { + "details": "Throws if address not set.", + "params": { + "identifier": "Identifier of contract whose address we want to look up." + } + }, + "isOneOf(bytes32[],address)": { + "params": { + "identifierHashes": "Array of hashes of approved identifiers.", + "sender": "Address in question to verify membership." + }, + "return": "True if `sender` corresponds to the address of any of `identifiers` registry entries." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "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 anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "setAddressFor(string,address)": { + "params": { + "addr": "Address of contract.", + "identifier": "Identifier of contract whose address we want to set." + } + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "title": "Routes identifiers to addresses." + }, + "userdoc": { + "methods": { + "constructor": "Sets initialized == true on implementation contracts", + "getAddressFor(bytes32)": { + "notice": "Gets address associated with the given identifierHash." + }, + "getAddressForOrDie(bytes32)": { + "notice": "Gets address associated with the given identifierHash." + }, + "getAddressForString(string)": { + "notice": "Gets address associated with the given identifier." + }, + "getAddressForStringOrDie(string)": { + "notice": "Gets address associated with the given identifier." + }, + "initialize()": { + "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy." + }, + "isOneOf(bytes32[],address)": { + "notice": "Iterates over provided array of identifiers, getting the address for each. Returns true if `sender` matches the address of one of the provided identifiers." + }, + "setAddressFor(string,address)": { + "notice": "Associates the given address with the given identifier." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/abis/StableToken.json b/celo-social-connect-dapp/packages/react-app/abis/StableToken.json new file mode 100644 index 00000000..4ee15f17 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/abis/StableToken.json @@ -0,0 +1,38273 @@ +{ + "contractName": "StableToken", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "test", + "type": "bool" + } + ], + "payable": false, + "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": false, + "internalType": "uint256", + "name": "factor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastUpdated", + "type": "uint256" + } + ], + "name": "InflationFactorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "updatePeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastUpdated", + "type": "uint256" + } + ], + "name": "InflationParametersUpdated", + "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": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "RegistrySet", + "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" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "comment", + "type": "string" + } + ], + "name": "TransferComment", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "blsKey", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "blsPop", + "type": "bytes" + } + ], + "name": "checkProofOfPossession", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "aNumerator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aDenominator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bNumerator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bDenominator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "exponent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_decimals", + "type": "uint256" + } + ], + "name": "fractionMulExp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ], + "name": "getBlockNumberFromHeader", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getEpochNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "getEpochNumberOfBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getEpochSize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "getParentSealBitmap", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ], + "name": "getVerifiedSealBitmapFromHeader", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ], + "name": "hashHeader", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "minQuorumSize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minQuorumSizeInCurrentSet", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "numberValidatorsInCurrentSet", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "numberValidatorsInSet", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "validatorSignerAddressFromCurrentSet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "validatorSignerAddressFromSet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + }, + { + "internalType": "address", + "name": "registryAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "inflationRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "inflationFactorUpdatePeriod", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "initialBalanceAddresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "initialBalanceValues", + "type": "uint256[]" + }, + { + "internalType": "string", + "name": "exchangeIdentifier", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updatePeriod", + "type": "uint256" + } + ], + "name": "setInflationParameters", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "string", + "name": "comment", + "type": "string" + } + ], + "name": "transferWithComment", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "accountOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "accountOwner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getInflationParameters", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "valueToUnits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getExchangeRegistryId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "units", + "type": "uint256" + } + ], + "name": "unitsToValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "debitGasFees", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "gatewayFeeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "communityFund", + "type": "address" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tipTxFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gatewayFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTxFee", + "type": "uint256" + } + ], + "name": "creditGasFees", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"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\":false,\"internalType\":\"uint256\",\"name\":\"factor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"InflationFactorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatePeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"InflationParametersUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"RegistrySet\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"comment\",\"type\":\"string\"}],\"name\":\"TransferComment\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPop\",\"type\":\"bytes\"}],\"name\":\"checkProofOfPossession\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"communityFund\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tipTxFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gatewayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseTxFee\",\"type\":\"uint256\"}],\"name\":\"creditGasFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"debitGasFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"aNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exponent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_decimals\",\"type\":\"uint256\"}],\"name\":\"fractionMulExp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"getBlockNumberFromHeader\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEpochNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getEpochNumberOfBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEpochSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getExchangeRegistryId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInflationParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getParentSealBitmap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"getVerifiedSealBitmapFromHeader\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"hashHeader\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inflationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inflationFactorUpdatePeriod\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"initialBalanceAddresses\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"initialBalanceValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"exchangeIdentifier\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"minQuorumSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minQuorumSizeInCurrentSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numberValidatorsInCurrentSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"numberValidatorsInSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatePeriod\",\"type\":\"uint256\"}],\"name\":\"setInflationParameters\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"setRegistry\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"comment\",\"type\":\"string\"}],\"name\":\"transferWithComment\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"units\",\"type\":\"uint256\"}],\"name\":\"unitsToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"validatorSignerAddressFromCurrentSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"validatorSignerAddressFromSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToUnits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"accountOwner\":\"The owner of the StableToken.\",\"spender\":\"The spender of the StableToken.\"},\"return\":\"The amount of StableToken owner is allowing spender to spend.\"},\"approve(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"balanceOf(address)\":{\"params\":{\"accountOwner\":\"The address to query the balance of.\"},\"return\":\"The balance of the specified address.\"},\"burn(uint256)\":{\"params\":{\"value\":\"The amount of StableToken to burn.\"}},\"checkProofOfPossession(address,bytes,bytes)\":{\"params\":{\"blsKey\":\"The BLS public key that the validator is using for consensus, should pass proof of possession. 48 bytes.\",\"blsPop\":\"The BLS public key proof-of-possession, which consists of a signature on the account address. 96 bytes.\",\"sender\":\"The address signed by the BLS key to generate the proof of possession.\"},\"return\":\"True upon success.\"},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"details\":\"Note that this function is called by the protocol when paying for tx fees in this currency. Before the tx is executed, gas is debited from the sender via a call to `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.\",\"params\":{\"baseTxFee\":\"Community fund fee\",\"communityFund\":\"Community fund address\",\"feeRecipient\":\"Coinbase address\",\"from\":\"The account to debit balance from\",\"gatewayFee\":\"Gateway fee\",\"gatewayFeeRecipient\":\"Gateway address\",\"tipTxFee\":\"Coinbase fee\"}},\"debitGasFees(address,uint256)\":{\"details\":\"Note that this function is called by the protocol when paying for tx fees in this currency. After the tx is executed, gas is refunded to the sender and credited to the various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.\",\"params\":{\"from\":\"The account to reserve balance from\",\"value\":\"The amount of balance to reserve\"}},\"decimals()\":{\"return\":\"The number of decimal places to which StableToken is divisible.\"},\"decreaseAllowance(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The decrement of the amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_decimals\":\"precision\",\"aDenominator\":\"Denominator of first fraction\",\"aNumerator\":\"Numerator of first fraction\",\"bDenominator\":\"Denominator of exponentiated fraction\",\"bNumerator\":\"Numerator of exponentiated fraction\",\"exponent\":\"exponent to raise b to\"},\"return\":\"Numerator of the computed quantity (not reduced).Denominator of the computed quantity (not reduced).\"},\"getBlockNumberFromHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Block number.\"},\"getEpochNumber()\":{\"return\":\"Current epoch number.\"},\"getEpochNumberOfBlock(uint256)\":{\"params\":{\"blockNumber\":\"Block number where epoch number is calculated.\"},\"return\":\"Epoch number.\"},\"getEpochSize()\":{\"return\":\"The current epoch size in blocks.\"},\"getExchangeRegistryId()\":{\"details\":\"When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID. exchangeRegistryId was introduced after the initial release of cUSD's StableToken, so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken exchangeRegistryId were to be correctly initialized, this function could be deprecated in favor of using exchangeRegistryId directly.\",\"return\":\"Registry id for the corresponding exchange.\"},\"getInflationParameters()\":{\"return\":\"ratefactorupdatePeriodfactorLastUpdated\"},\"getParentSealBitmap(uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve. Must be within 4 epochs of the current number.\"},\"return\":\"Bitmap parent seal with set bits at indices corresponding to signing validators.\"},\"getVerifiedSealBitmapFromHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Bitmap parent seal with set bits at indices correspoinding to signing validators.\"},\"getVersionNumber()\":{\"return\":\"Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract.\"},\"hashHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Header hash.\"},\"increaseAllowance(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The increment of the amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"initialize(string,string,uint8,address,uint256,uint256,address[],uint256[],string)\":{\"params\":{\"_decimals\":\"Tokens are divisible to this many decimal places.\",\"_name\":\"The name of the stable token (English)\",\"_symbol\":\"A short symbol identifying the token (e.g. \\\"cUSD\\\")\",\"exchangeIdentifier\":\"String identifier of exchange in registry (for specific fiat pairs)\",\"inflationFactorUpdatePeriod\":\"How often the inflation factor is updated, in seconds.\",\"inflationRate\":\"Weekly inflation rate.\",\"initialBalanceAddresses\":\"Array of addresses with an initial balance.\",\"initialBalanceValues\":\"Array of balance values corresponding to initialBalanceAddresses.\",\"registryAddress\":\"Address of the Registry contract.\"}},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"minQuorumSize(uint256)\":{\"details\":\"Computed in celo-blockchain as int(math.Ceil(float64(2*valSet.Size()) / 3))\"},\"minQuorumSizeInCurrentSet()\":{\"return\":\"Byzantine quorum of validators.\"},\"mint(address,uint256)\":{\"params\":{\"to\":\"The account for which to mint tokens.\",\"value\":\"The amount of StableToken to mint.\"}},\"name()\":{\"return\":\"The name of the stable token.\"},\"numberValidatorsInCurrentSet()\":{\"return\":\"Size of the current elected validator set.\"},\"numberValidatorsInSet(uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve the validator set from.\"},\"return\":\"Size of the validator set.\"},\"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 anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setInflationParameters(uint256,uint256)\":{\"params\":{\"rate\":\"New rate.\",\"updatePeriod\":\"How often inflationFactor is updated.\"}},\"setRegistry(address)\":{\"params\":{\"registryAddress\":\"The address of a registry contract for routing to other contracts.\"}},\"symbol()\":{\"return\":\"The symbol of the stable token.\"},\"totalSupply()\":{\"details\":\"Though totalSupply_ is stored in units, this returns value.\",\"return\":\"The total value of StableToken in existence\"},\"transfer(address,uint256)\":{\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"from\":\"The address to transfer StableToken from.\",\"to\":\"The address to transfer StableToken to.\",\"value\":\"The amount of StableToken to transfer.\"},\"return\":\"True if the transaction succeeds.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"transferWithComment(address,uint256,string)\":{\"params\":{\"comment\":\"The transfer comment.\",\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if the transaction succeeds.\"},\"unitsToValue(uint256)\":{\"params\":{\"units\":\"The units to convert to value.\"},\"return\":\"The value corresponding to `units` given the current inflation factor.\"},\"validatorSignerAddressFromCurrentSet(uint256)\":{\"params\":{\"index\":\"Index of requested validator in the validator set.\"},\"return\":\"Address of validator at the requested index.\"},\"validatorSignerAddressFromSet(uint256,uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve the validator set from.\",\"index\":\"Index of requested validator in the validator set.\"},\"return\":\"Address of validator at the requested index.\"},\"valueToUnits(uint256)\":{\"details\":\"We don't compute the updated inflationFactor here because we assume any function calling this will have updated the inflation factor.\",\"params\":{\"value\":\"The value to convert to units.\"},\"return\":\"The units corresponding to `value` given the current inflation factor.\"}},\"title\":\"An ERC20 compliant token with adjustable supply.\"},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Gets the amount of owner's StableToken allowed to be spent by spender.\"},\"approve(address,uint256)\":{\"notice\":\"Approve a user to transfer StableToken on behalf of another user.\"},\"balanceOf(address)\":{\"notice\":\"Gets the balance of the specified address using the presently stored inflation factor.\"},\"burn(uint256)\":{\"notice\":\"Burns StableToken from the balance of msg.sender.\"},\"checkProofOfPossession(address,bytes,bytes)\":{\"notice\":\"Checks a BLS proof of possession.\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Alternative function to credit balance after making payments for gas in this StableToken currency.\"},\"debitGasFees(address,uint256)\":{\"notice\":\"Reserve balance for making payments for gas in this StableToken currency.\"},\"decreaseAllowance(address,uint256)\":{\"notice\":\"Decrease the allowance of another user.\"},\"fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"calculate a * b^x for fractions a, b to `decimals` precision\"},\"getBlockNumberFromHeader(bytes)\":{\"notice\":\"Parses block number out of header.\"},\"getEpochNumber()\":{\"notice\":\"Returns the epoch number at a block.\"},\"getEpochNumberOfBlock(uint256)\":{\"notice\":\"Returns the epoch number at a block.\"},\"getEpochSize()\":{\"notice\":\"Returns the current epoch size in blocks.\"},\"getExchangeRegistryId()\":{\"notice\":\"Returns the exchange id in the registry of the corresponding fiat pair exchange.\"},\"getInflationParameters()\":{\"notice\":\"gets inflation parameters.\"},\"getParentSealBitmap(uint256)\":{\"notice\":\"Gets the parent seal bitmap from the header at the given block number.\"},\"getVerifiedSealBitmapFromHeader(bytes)\":{\"notice\":\"Verifies the BLS signature on the header and returns the seal bitmap. The validator set used for verification is retrieved based on the parent hash field of the header. If the parent hash is not in the blockchain, verification fails.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"hashHeader(bytes)\":{\"notice\":\"Computes hash of header.\"},\"increaseAllowance(address,uint256)\":{\"notice\":\"Increase the allowance of another user.\"},\"minQuorumSize(uint256)\":{\"notice\":\"Returns the minimum number of required signers for a given block number.\"},\"minQuorumSizeInCurrentSet()\":{\"notice\":\"Computes byzantine quorum from current validator set size\"},\"mint(address,uint256)\":{\"notice\":\"Mints new StableToken and gives it to 'to'.\"},\"numberValidatorsInCurrentSet()\":{\"notice\":\"Gets the size of the current elected validator set.\"},\"numberValidatorsInSet(uint256)\":{\"notice\":\"Gets the size of the validator set that must sign the given block number.\"},\"setInflationParameters(uint256,uint256)\":{\"notice\":\"Updates Inflation Parameters.\"},\"setRegistry(address)\":{\"notice\":\"Updates the address pointing to a Registry contract.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `value` from `msg.sender` to `to`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers StableToken from one address to another on behalf of a user.\"},\"transferWithComment(address,uint256,string)\":{\"notice\":\"Transfer token for a specified address\"},\"unitsToValue(uint256)\":{\"notice\":\"Returns the value of a given number of units given the current inflation factor.\"},\"validatorSignerAddressFromCurrentSet(uint256)\":{\"notice\":\"Gets a validator address from the current validator set.\"},\"validatorSignerAddressFromSet(uint256,uint256)\":{\"notice\":\"Gets a validator address from the validator set at the given block number.\"},\"valueToUnits(uint256)\":{\"notice\":\"Returns the units for a given value given the current inflation factor.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol\":\"StableToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol\":{\"keccak256\":\"0xd61979452e5da908f604c3797e288c0a819ba6091c0d24ed172af865e87fae6c\",\"urls\":[\"bzz-raw://1051ccf97c4dca2dabbdf9f458c324c92ca54460061c4327e5e25a905ecc351c\",\"dweb:/ipfs/QmVe1A5gqua4eY6wNKFrXu8E3hrU2v1GktDyFVZreHXkjA\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol\":{\"keccak256\":\"0x2f98fa3b3454621817917bae2830806858a96c9457be2c5b6e0bed5b35aaaba3\",\"urls\":[\"bzz-raw://b6bf5cf79debe02093777cc9ddef4616dedd041ccc2618c43ea91c90afd97df6\",\"dweb:/ipfs/QmXonY3FkVy2jnQvLkgDi4LcaniS5DVZ1zpRZecWKWy9Ro\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol\":{\"keccak256\":\"0x2d264574f693b31cdf1ef1fe44dd07f4ddd60c1979e79fc84b6f3019ceda9ac6\",\"urls\":[\"bzz-raw://eb43996e3f01765f6b4997ef86dceca4af987a9c6f2743de7d29ec887651ea2b\",\"dweb:/ipfs/QmdRfAZ97XBNd42XYQBWVFAx7gAKUuS3KvL41ryxo9YTwT\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol\":{\"keccak256\":\"0xb0c39576688963518409df19910b47df18946262666fb0b14f834c449ef8a095\",\"urls\":[\"bzz-raw://6502a36e8b8409ee4b06294f35476f73791a035bb078cb0f680c86622d6d184c\",\"dweb:/ipfs/QmetSeLjwd3Lp3BwyM8yFydSULPnVpToxu3phiL4EesvA3\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol\":{\"keccak256\":\"0xfdd9e70bd58259b491ec54779715d7469ab4f804836bf5f63ff86921d0cae056\",\"urls\":[\"bzz-raw://e55f23f464e49c42b1f31782dcb88cbd2ca64e050d5f110ccdc2ffd50cd582ff\",\"dweb:/ipfs/QmfBiet9GbT9S9rn9SG9CkyXQGAMQRuk4EBmChY1m4kv47\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol\":{\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\",\"urls\":[\"bzz-raw://bf85ce1ac9c145877666436ce0c9c998ab205a7fe8ec39a90332ac01fecad9f2\",\"dweb:/ipfs/QmYQTztErbUUYf52rAL3xVjFqED91n6Es7RidjDTkuKeM6\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol\":{\"keccak256\":\"0xbaab1752a0881844fa2cefac336073c7a037d8a066c27a5558f11006cb594ecc\",\"urls\":[\"bzz-raw://805969c4595cd54d20d9415e2a3e6a4bd1e05990fbb5989328493f8ad86b18ec\",\"dweb:/ipfs/QmeGNYyUtVRUGtjrUNFuoah1dERppUQw9CMtasVsfZvH4V\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"keccak256\":\"0x7bf4411df057bec6f7fcc1c25c1f46cd9a8f75118958012b56ecef8a986abd62\",\"urls\":[\"bzz-raw://b08c5c589b31ab774f6d1eb73bf67e111e04a0f1b99cd8e2528f021cf4983100\",\"dweb:/ipfs/Qmao3mnAW1mUixfwtZXvJUCBzK65hzfmvHGgZqHPpXEt3C\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\",\"urls\":[\"bzz-raw://8f350863943ab54dcf4d5ea525c16748f59263bf36c1d85251c1164d0e592032\",\"dweb:/ipfs/QmXAG6fvVQKM86rVsk6R3ndEoHtS9fcAAVxBApJ5j3LWeK\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IFreezer.sol\":{\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\",\"urls\":[\"bzz-raw://32df109167a13e684c9b296a0e13dda1899e418788eb59bf59aedd7a3ce65466\",\"dweb:/ipfs/QmR6BJCRFMSQpBpnSH2vzLE959FhXnmreDocWWc7fUYnnu\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IElection.sol\":{\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\",\"urls\":[\"bzz-raw://84dcf3a9952f1ce9a9110abb1783dfead290fd17c28216c5acb22de9d090921d\",\"dweb:/ipfs/QmeNoLz8WcHX9GLcBfQChXFHsFDRaVRRXnPXXvB2qVTaSZ\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\",\"urls\":[\"bzz-raw://cabeae6e6c47364291f12cf69658dcf5bdd8ac7eebda53d48a2b03aab96386a3\",\"dweb:/ipfs/QmUtPSC4hVz79XVVjFwQ6CozMd6oAR1m6yrPFkHD5sCdB1\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/ILockedGold.sol\":{\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\",\"urls\":[\"bzz-raw://6b955b6829748cd136fa92c3a434f5419e4eb024d535a854900ad48bd4151b67\",\"dweb:/ipfs/QmXM5uL5dsKecYyedAzsrZXAp81NtWQErbbVEFccJ6ZqiY\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IValidators.sol\":{\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\",\"urls\":[\"bzz-raw://cf5d0c2f6ee9b2c8e270162455177e9c3bac79ac07d4f37c86f7f2ee5978a756\",\"dweb:/ipfs/QmZTKmytn1Wi3QfU3bHuSaSeYQzRrFKehyngrg37rHD3vV\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/identity/interfaces/IAttestations.sol\":{\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\",\"urls\":[\"bzz-raw://c1255d08278188247ef81fb09edd2d1d4a019fb0fe80fd3d9850415c5eb5caaf\",\"dweb:/ipfs/QmcJvqSM35nAR8p8LwVczhnaY6VwTRThNjfCzkzeiAkz45\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/identity/interfaces/IRandom.sol\":{\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\",\"urls\":[\"bzz-raw://f2c6fe351990bfdeb55484bd3622d44c8f58579a7212d5cce71a82df846497f5\",\"dweb:/ipfs/QmRDDTXUqbA6dHfJe4ZS1442JDAfwoHq2eH9LHnQyzsh44\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol\":{\"keccak256\":\"0x14ecf2f9573e0bdb4edeeb9f04b476acfccdce584499709bf8c417b785b7d79b\",\"urls\":[\"bzz-raw://58f679c94bbc72dce49faa6da4d32956b26951593d46b399953e208383e3c817\",\"dweb:/ipfs/QmaCJHAGbjiFzK4wbeiic8rrQDs5Bu4ghMVqTbaQznNVqR\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IExchange.sol\":{\"keccak256\":\"0xbfcf77e30fc62218decbb73297d5161b9c490f7e44f75158f1c79674e4b8b83c\",\"urls\":[\"bzz-raw://ad0caaddcb552a2c040e827e9336cdec7dfaf629cca9f30e5f5bc12645abde43\",\"dweb:/ipfs/QmTjnGbfoSkZhNWhrbcYdLjF1LLqAJcviJ2ZKSMH9KWz95\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IReserve.sol\":{\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\",\"urls\":[\"bzz-raw://198fb3cd945e374926e3d6bcb2469b7f5c635e78b40417a4b3a1eacabeca234b\",\"dweb:/ipfs/Qma8RRSqksFCzL5gWTXmGtJvC4Mw1bgquvN33nKhrRwUrD\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/ISortedOracles.sol\":{\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\",\"urls\":[\"bzz-raw://f1a472385d5fa1b1cc4ab6ff948cd11f86c55328841d89f39f02b64449d3ac1a\",\"dweb:/ipfs/QmSYfwR8RJ2nyzt9VJtLKqaUHwAPfz579vhcQP7LRLaqTe\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol\":{\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\",\"urls\":[\"bzz-raw://94f7d7578274be8212b8c9a3f0759d884969b05a7f0c64c7c9352102f4e51ab4\",\"dweb:/ipfs/Qmd3bERcFLrrvpURuzKUg6YCSFisNQ36YpRLWkxEcS1Tkj\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620070be380380620070be833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350806200011b576001600060146101000a81548160ff0219169083151502179055505b50506200012b565b600033905090565b616f83806200013b6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063a457c2d7116100ce578063df4da46111610087578063df4da461146112b1578063e1d6aceb146112cf578063e50e652d1461138a578063ec683072146113cc578063f2fde38b14611447578063fae8db0a1461148b5761027f565b8063a457c2d7146110b4578063a67f87471461111a578063a9059cbb1461114d578063a91ee0dc146111b3578063af31f587146111f7578063dd62ed3e146112395761027f565b80638a883626116101205780638a88362614610e965780638da5cb5b14610f655780638f32d59b14610faf57806395d89b4114610fd15780639a7b3be7146110545780639b2b592f146110725761027f565b806370a0823114610dae578063715018a614610e065780637385e5da14610e105780637b10399914610e2e57806387ee8a0f14610e785761027f565b806339509351116101f55780634b2c2f44116101b95780634b2c2f4414610a4a57806354255be014610b1957806358cf967214610b4c5780635d180adb14610b9a57806367960e9114610c125780636a30b25314610ce15761027f565b806339509351146108d85780633b1eb4bf1461093e57806340a12f641461098057806340c10f191461099e57806342966c6814610a045761027f565b806318160ddd1161024757806318160ddd1461043f5780631e4f0e031461045d578063222836ad1461066c57806323b872dd146106a457806323f0ab651461072a578063313ce567146108b45761027f565b806306fdde0314610284578063095ea7b314610307578063123633ea1461036d57806312c6c099146103db578063158ef93e1461041d575b600080fd5b61028c6114cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cc5780820151818401526020810190506102b1565b50505050905090810190601f1680156102f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103536004803603604081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061156f565b604051808215151515815260200191505060405180910390f35b6103996004803603602081101561038357600080fd5b8101908080359060200190929190505050611792565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610407600480360360208110156103f157600080fd5b81019080803590602001909291905050506118e3565b6040518082815260200191505060405180910390f35b61042561190c565b604051808215151515815260200191505060405180910390f35b61044761191f565b6040518082815260200191505060405180910390f35b61066a600480360361012081101561047457600080fd5b810190808035906020019064010000000081111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111640100000000831117156104c557600080fd5b9091929391929390803590602001906401000000008111156104e657600080fd5b8201836020820111156104f857600080fd5b8035906020019184600183028401116401000000008311171561051a57600080fd5b9091929391929390803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460208302840111640100000000831117156105b057600080fd5b9091929391929390803590602001906401000000008111156105d157600080fd5b8201836020820111156105e357600080fd5b8035906020019184602083028401116401000000008311171561060557600080fd5b90919293919293908035906020019064010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9091929391929390505050611931565b005b6106a26004803603604081101561068257600080fd5b810190808035906020019092919080359060200190929190505050611c57565b005b610710600480360360608110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebc565b604051808215151515815260200191505060405180910390f35b61089a6004803603606081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561081457600080fd5b82018360208201111561082657600080fd5b8035906020019184600183028401116401000000008311171561084857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612542565b604051808215151515815260200191505060405180910390f35b6108bc6126fb565b604051808260ff1660ff16815260200191505060405180910390f35b610924600480360360408110156108ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612712565b604051808215151515815260200191505060405180910390f35b61096a6004803603602081101561095457600080fd5b81019080803590602001909291905050506129cf565b6040518082815260200191505060405180910390f35b6109886129e9565b6040518082815260200191505060405180910390f35b6109ea600480360360408110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a4f565b604051808215151515815260200191505060405180910390f35b610a3060048036036020811015610a1a57600080fd5b8101908080359060200190929190505050612eb5565b604051808215151515815260200191505060405180910390f35b610b0360048036036020811015610a6057600080fd5b8101908080359060200190640100000000811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b80359060200191846001830284011164010000000083111715610ab157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506133dc565b6040518082815260200191505060405180910390f35b610b21613570565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610b9860048036036040811015610b6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613598565b005b610bd060048036036040811015610bb057600080fd5b8101908080359060200190929190803590602001909291905050506138d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ccb60048036036020811015610c2857600080fd5b8101908080359060200190640100000000811115610c4557600080fd5b820183602082011115610c5757600080fd5b80359060200191846001830284011164010000000083111715610c7957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613a28565b6040518082815260200191505060405180910390f35b610dac6004803603610100811015610cf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050613bbc565b005b610df060048036036020811015610dc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613eb2565b6040518082815260200191505060405180910390f35b610e0e613f03565b005b610e1861403c565b6040518082815260200191505060405180910390f35b610e3661404c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e80614072565b6040518082815260200191505060405180910390f35b610f4f60048036036020811015610eac57600080fd5b8101908080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506141b9565b6040518082815260200191505060405180910390f35b610f6d61434d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fb7614376565b604051808215151515815260200191505060405180910390f35b610fd96143d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611019578082015181840152602081019050610ffe565b50505050905090810190601f1680156110465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61105c614476565b6040518082815260200191505060405180910390f35b61109e6004803603602081101561108857600080fd5b8101908080359060200190929190505050614486565b6040518082815260200191505060405180910390f35b611100600480360360408110156110ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506145cf565b604051808215151515815260200191505060405180910390f35b611122614806565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6111996004803603604081101561116357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061486a565b604051808215151515815260200191505060405180910390f35b6111f5600480360360208110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614a3e565b005b6112236004803603602081101561120d57600080fd5b8101908080359060200190929190505050614be2565b6040518082815260200191505060405180910390f35b61129b6004803603604081101561124f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c24565b6040518082815260200191505060405180910390f35b6112b9614cab565b6040518082815260200191505060405180910390f35b611370600480360360608110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561132c57600080fd5b82018360208201111561133e57600080fd5b8035906020019184600183028401116401000000008311171561136057600080fd5b9091929391929390505050614de7565b604051808215151515815260200191505060405180910390f35b6113b6600480360360208110156113a057600080fd5b8101908080359060200190929190505050615026565b6040518082815260200191505060405180910390f35b61142a600480360360c08110156113e257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050615071565b604051808381526020018281526020019250505060405180910390f35b6114896004803603602081101561145d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615285565b005b6114b7600480360360208110156114a157600080fd5b810190808035906020019092919050505061530b565b6040518082815260200191505060405180910390f35b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115655780601f1061153a57610100808354040283529160200191611565565b820191906000526020600020905b81548152906001019060200180831161154857829003601f168201915b5050505050905090565b6000611579616af4565b6000611583615454565b8092508193505050600860030154811461161a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976115f7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16844360405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061180b57805182526020820191506020810190506020830392506117e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461186b576040519150601f19603f3d011682016040523d82523d6000602084013e611870565b606091505b508093508192505050806118cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180616d05603d913960400191505060405180910390fd5b6118da82600061562d565b92505050919050565b60006118ed616af4565b6118f5615454565b50809150506119048184615644565b915050919050565b600060149054906101000a900460ff1681565b600061192c600654614be2565b905090565b600060149054906101000a900460ff16156119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000881415611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c286026913960400191505060405180910390fd5b60008711611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616bdb6027913960400191505060405180910390fd5b611a8b33615671565b60006006819055508d8d60029190611aa4929190616b07565b508b8b60039190611ab6929190616b07565b5089600460006101000a81548160ff021916908360ff160217905550611adb886157b5565b600860000160008201518160000155905050611af56157d3565b6008600101600082015181600001559050508660086002018190555042600860030181905550838390508686905014611b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b60008090505b86869050811015611c0757611beb878783818110611bb657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868684818110611bdf57fe5b905060200201356157f9565b50611c006001826159f890919063ffffffff16565b9050611b9c565b50611c1189614a3e565b818160405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120600c819055505050505050505050505050505050565b611c5f614376565b611cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611cd9616af4565b6000611ce3615454565b80925081935050506008600301548114611d7a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611d57600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000841415611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616c4e6027913960400191505060405180910390fd5b60008311611e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f757064617465506572696f64206d757374206265203e2030000000000000000081525060200191505060405180910390fd5b611e53846157b5565b600860000160008201518160000155905050826008600201819055507fa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d84844260405180848152602001838152602001828152602001935050505060405180910390a150505050565b6000611ec6616af4565b6000611ed0615454565b80925081935050506008600301548114611f675781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611f44600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b611f6f615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b81019080805190602001909291905050501561207c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b60006120a1600860010160405180602001604052908160008201548152505086615644565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054851115612296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616e216038913960400191505060405180910390fd5b6122e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237d81600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244f85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b60008060fb73ffffffffffffffffffffffffffffffffffffffff16858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b602083106125cb57805182526020820191506020810190506020830392506125a8565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061261c57805182526020820191506020810190506020830392506125f9565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b602083106126855780518252602082019150602081019050602083039250612662565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146126e5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ea565b606091505b505080915050809150509392505050565b6000600460009054906101000a900460ff16905090565b600061271c616af4565b6000612726615454565b809250819350505060086003015481146127bd5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a9761279a600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006128d986836159f890919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60006129e2826129dd614cab565b615bc5565b9050919050565b60008060001b600c541415612a465760405160200180807f45786368616e67650000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001209050612a4c565b600c5490505b90565b6000612a59616af4565b6000612a63615454565b80925081935050506008600301548114612afa5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612ad7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612b406129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b7457600080fd5b505afa158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d065750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c9c57600080fd5b505afa158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612e2f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050506040513d6020811015612def57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206d696e7400000081525060200191505060405180910390fd5b612eab85856157f9565b9250505092915050565b6000612ebf616af4565b6000612ec9615454565b80925081935050506008600301548114612f605781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612f3d600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612fa66129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fda57600080fd5b505afa158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061316c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561310257600080fd5b505afa158015613116573d6000803e3d6000fd5b505050506040513d602081101561312c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6131de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206275726e00000081525060200191505060405180910390fd5b6000613203600860010160405180602001604052908160008201548152505086615644565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156132ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f76616c75652065786365656465642062616c616e6365206f662073656e64657281525060200191505060405180910390fd5b6132cf81600654615b7b90919063ffffffff16565b60068190555061332781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019350505050919050565b60006060600060f473ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613431578051825260208201915060208101905060208303925061340e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106134985780518252602082019150602081019050602083039250613475565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146134f8576040519150601f19603f3d011682016040523d82523d6000602084013e6134fd565b606091505b5080935081925050508061355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616c756038913960400191505060405180910390fd5b613567826000615c0d565b92505050919050565b6000806000806001600260006001839350829250819150809050935093509350935090919293565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613642615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d60208110156136e857600080fd5b81019080805190602001909291905050501561374f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b613757616af4565b6000613761615454565b809250819350505060086003015481146137f85781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976137d5600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600061381d600860010160405180602001604052908160008201548152505085615644565b905061387181600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c981600654615b7b90919063ffffffff16565b6006819055505050505050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16858560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061394f578051825260208201915060208101905060208303925061392c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146139af576040519150601f19603f3d011682016040523d82523d6000602084013e6139b4565b606091505b50809350819250505080613a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616d776036913960400191505060405180910390fd5b613a1e82600061562d565b9250505092915050565b60006060600060f673ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613a7d5780518252602082019150602081019050602083039250613a5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310613ae45780518252602082019150602081019050602083039250613ac1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50809350819250505080613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616f2c6023913960400191505060405180910390fd5b613bb3826000615c0d565b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613c66615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613ce257600080fd5b505afa158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b810190808051906020019092919050505015613d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000613d98600860010160405180602001604052908160008201548152505086615644565b9050613dec81600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4c613e3d8a8885615cae565b826159f890919063ffffffff16565b9050613e6b613e5c8a8a87615cae565b826159f890919063ffffffff16565b9050613e8a613e7b8a8986615cae565b826159f890919063ffffffff16565b9050613ea1816006546159f890919063ffffffff16565b600681905550505050505050505050565b6000613efc600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614be2565b9050919050565b613f0b614376565b613f7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061404743615026565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1643604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106140e357805182526020820191506020810190506020830392506140c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614143576040519150601f19603f3d011682016040523d82523d6000602084013e614148565b606091505b508093508192505050806141a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180616d426035913960400191505060405180910390fd5b6141b282600061562d565b9250505090565b60006060600060f773ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b6020831061420e57805182526020820191506020810190506020830392506141eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106142755780518252602082019150602081019050602083039250614252565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146142d5576040519150601f19603f3d011682016040523d82523d6000602084013e6142da565b606091505b50809350819250505080614339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616ed16031913960400191505060405180910390fd5b61434482600061562d565b92505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166143b8615e1a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561446c5780601f106144415761010080835404028352916020019161446c565b820191906000526020600020905b81548152906001019060200180831161444f57829003601f168201915b5050505050905090565b6000614481436129cf565b905090565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106144f757805182526020820191506020810190506020830392506144d4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614557576040519150601f19603f3d011682016040523d82523d6000602084013e61455c565b606091505b508093508192505050806145bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616bad602e913960400191505060405180910390fd5b6145c682600061562d565b92505050919050565b60006145d9616af4565b60006145e3615454565b8092508193505050600860030154811461467a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614657600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147108683615b7b90919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60008060008061482e600860000160405180602001604052908160008201548152505061561f565b614850600860010160405180602001604052908160008201548152505061561f565b600860020154600860030154935093509350935090919293565b6000614874616af4565b600061487e615454565b809250819350505060086003015481146149155781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976148f2600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b61491d615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d60208110156149c357600080fd5b810190808051906020019092919050505015614a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b614a348585615e22565b9250505092915050565b614a46614376565b614ab8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6000614bec616af4565b614bf4615454565b5080915050614c1c614c1782614c0986616102565b61618c90919063ffffffff16565b6162d5565b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006060600060f873ffffffffffffffffffffffffffffffffffffffff166040516020016040516020818303038152906040526040518082805190602001908083835b60208310614d115780518252602082019150602081019050602083039250614cee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b50809350819250505080614dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180616e806025913960400191505060405180910390fd5b614de082600061562d565b9250505090565b6000614df1616af4565b6000614dfb615454565b80925081935050506008600301548114614e925781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614e6f600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b614e9a615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614f1657600080fd5b505afa158015614f2a573d6000803e3d6000fd5b505050506040513d6020811015614f4057600080fd5b810190808051906020019092919050505015614fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000614fb3888861486a565b90507fe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1809350505050949350505050565b600061506a600361505c600261504e600261504088614486565b6162f690919063ffffffff16565b6159f890919063ffffffff16565b61637c90919063ffffffff16565b9050919050565b60008060008714158015615086575060008514155b6150f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f612064656e6f6d696e61746f72206973207a65726f000000000000000000000081525060200191505060405180910390fd5b6000806000606060fc73ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c8c6040516020018087815260200186815260200185815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b60208310615192578051825260208201915060208101905060208303925061516f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146151f2576040519150601f19603f3d011682016040523d82523d6000602084013e6151f7565b606091505b50809250819350505081615256576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616e596027913960400191505060405180910390fd5b61526181600061562d565b935061526e81602061562d565b925083839550955050505050965096945050505050565b61528d614376565b6152ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61530881615671565b50565b60006060600060f573ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061537c5780518252602082019150602081019050602083039250615359565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146153dc576040519150601f19603f3d011682016040523d82523d6000602084013e6153e1565b606091505b50809350819250505080615440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180616ea5602c913960400191505060405180910390fd5b61544b826000615c0d565b92505050919050565b61545c616af4565b600061547b6008600201546008600301546159f890919063ffffffff16565b4210156154ae5760086001016008600301548160405180602001604052908160008201548152505091509150915061561b565b60008060006154e26008600201546154d460086003015442615b7b90919063ffffffff16565b61637c90919063ffffffff16565b9050615564615509600860010160405180602001604052908160008201548152505061561f565b6155196155146157d3565b61561f565b61553b600860000160405180602001604052908160008201548152505061561f565b61554b6155466157d3565b61561f565b85600460009054906101000a900460ff1660ff16615071565b8093508194505050600083148061557b5750600082145b156155af5760086001016008600301548160405180602001604052908160008201548152505091509450945050505061561b565b6155b7616af4565b6155da6155c3846157b5565b6155cc866157b5565b61618c90919063ffffffff16565b9050600061560d6155f9846008600201546162f690919063ffffffff16565b6008600301546159f890919063ffffffff16565b905081819650965050505050505b9091565b600081600001519050919050565b60006156398383615c0d565b60001c905092915050565b600061566961566461565584616102565b856163c690919063ffffffff16565b6162d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156156f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6157bd616af4565b6040518060200160405280838152509050919050565b6157db616af4565b604051806020016040528069d3c21bcecceda1000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561589d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f302069732061207265736572766564206164647265737300000000000000000081525060200191505060405180910390fd5b60008214156158af57600190506159f2565b60006158d4600860010160405180602001604052908160008201548152505084615644565b90506158eb816006546159f890919063ffffffff16565b60068190555061594381600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b92915050565b600080828401905083811015615a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f467265657a6572000000000000000000000000000000000000000000000000008152506007019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015615b3b57600080fd5b505afa158015615b4f573d6000803e3d6000fd5b505050506040513d6020811015615b6557600080fd5b8101908080519060200190929190505050905090565b6000615bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250616825565b905092915050565b600080828481615bd157fe5b0490506000838581615bdf57fe5b061415615bef5780915050615c07565b615c036001826159f890919063ffffffff16565b9150505b92915050565b6000615c236020836159f890919063ffffffff16565b83511015615c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736c6963696e67206f7574206f662072616e676500000000000000000000000081525060200191505060405180910390fd5b60006020830184015190508091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ced5760009050615e13565b6000615d12600860010160405180602001604052908160008201548152505084615644565b9050615d6681600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3809150505b9392505050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b6000615ece600860010160405180602001604052908160008201548152505084615644565b905080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b615fba81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061604f81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b61610a616af4565b6161126168e5565b82111561616a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616ccf6036913960400191505060405180910390fd5b604051806020016040528069d3c21bcecceda100000084028152509050919050565b616194616af4565b60008260000151141561620f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e277420646976696465206279203000000000000000000000000000000081525060200191505060405180910390fd5b600069d3c21bcecceda10000008460000151029050836000015169d3c21bcecceda1000000828161623c57fe5b04146162b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f766572666c6f7720617420646976696465000000000000000000000000000081525060200191505060405180910390fd5b6040518060200160405280846000015183816162c857fe5b0481525091505092915050565b600069d3c21bcecceda10000008260000151816162ee57fe5b049050919050565b6000808314156163095760009050616376565b600082840290508284828161631a57fe5b0414616371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd76021913960400191505060405180910390fd5b809150505b92915050565b60006163be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616904565b905092915050565b6163ce616af4565b6000836000015114806163e5575060008260000151145b156164015760405180602001604052806000815250905061681f565b69d3c21bcecceda10000008260000151141561641f5782905061681f565b69d3c21bcecceda10000008360000151141561643d5781905061681f565b600069d3c21bcecceda1000000616453856169ca565b600001518161645e57fe5b049050600061646c85616a01565b600001519050600069d3c21bcecceda1000000616488866169ca565b600001518161649357fe5b04905060006164a186616a01565b600001519050600082850290506000851461653557828582816164c057fe5b0414616534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b600069d3c21bcecceda100000082029050600082146165d75769d3c21bcecceda100000082828161656257fe5b04146165d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f766572666c6f772078317931202a206669786564312064657465637465640081525060200191505060405180910390fd5b5b809150600084860290506000861461666857848682816165f357fe5b0414616667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b60008488029050600088146166f6578488828161668157fe5b04146166f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6166fe616a3e565b878161670657fe5b049650616711616a3e565b858161671957fe5b04945060008588029050600088146167aa578588828161673557fe5b04146167a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6167b2616af4565b60405180602001604052808781525090506167db81604051806020016040528087815250616a4b565b90506167f581604051806020016040528086815250616a4b565b905061680f81604051806020016040528085815250616a4b565b9050809a50505050505050505050505b92915050565b60008383111582906168d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561689757808201518184015260208101905061687c565b50505050905090810190601f1680156168c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60007601357c299a88ea76a58924d52ce4f26a85af186c2b9e74905090565b600080831182906169b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561697557808201518184015260208101905061695a565b50505050905090810190601f1680156169a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816169bc57fe5b049050809150509392505050565b6169d2616af4565b604051806020016040528069d3c21bcecceda1000000808560000151816169f557fe5b04028152509050919050565b616a09616af4565b604051806020016040528069d3c21bcecceda100000080856000015181616a2c57fe5b04028460000151038152509050919050565b600064e8d4a51000905090565b616a53616af4565b6000826000015184600001510190508360000151811015616adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616464206f766572666c6f77206465746563746564000000000000000000000081525060200191505060405180910390fd5b60405180602001604052808281525091505092915050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616b4857803560ff1916838001178555616b76565b82800160010185558215616b76579182015b82811115616b75578235825591602001919060010190616b5a565b5b509050616b839190616b87565b5090565b616ba991905b80821115616ba5576000816000905550600101616b8d565b5090565b9056fe6572726f722063616c6c696e67206e756d62657256616c696461746f7273496e53657420707265636f6d70696c65696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174654d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e6572726f722063616c6c696e672067657456657269666965645365616c4269746d617046726f6d48656164657220707265636f6d70696c6563616e27742063616c6c207768656e20636f6e74726163742069732066726f7a656e63616e277420637265617465206669786964697479206e756d626572206c6172676572207468616e206d61784e6577466978656428296572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e67206e756d62657256616c696461746f7273496e43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d53657420707265636f6d70696c6572657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e6465727472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e746572726f722063616c6c696e67206672616374696f6e4d756c45787020707265636f6d70696c656572726f722063616c6c696e672067657445706f636853697a6520707265636f6d70696c656572726f722063616c6c696e6720676574506172656e745365616c4269746d617020707265636f6d70696c656572726f722063616c6c696e6720676574426c6f636b4e756d62657246726f6d48656164657220707265636f6d70696c657472616e7366657220617474656d7074656420746f2072657365727665642061646472657373203078306572726f722063616c6c696e67206861736848656164657220707265636f6d70696c65a265627a7a72315820f881c1ef841ee1c797a12d2b1c9e74738f72704f6ac8ec7339c72ee42ba8f5fb64736f6c634300050d0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063a457c2d7116100ce578063df4da46111610087578063df4da461146112b1578063e1d6aceb146112cf578063e50e652d1461138a578063ec683072146113cc578063f2fde38b14611447578063fae8db0a1461148b5761027f565b8063a457c2d7146110b4578063a67f87471461111a578063a9059cbb1461114d578063a91ee0dc146111b3578063af31f587146111f7578063dd62ed3e146112395761027f565b80638a883626116101205780638a88362614610e965780638da5cb5b14610f655780638f32d59b14610faf57806395d89b4114610fd15780639a7b3be7146110545780639b2b592f146110725761027f565b806370a0823114610dae578063715018a614610e065780637385e5da14610e105780637b10399914610e2e57806387ee8a0f14610e785761027f565b806339509351116101f55780634b2c2f44116101b95780634b2c2f4414610a4a57806354255be014610b1957806358cf967214610b4c5780635d180adb14610b9a57806367960e9114610c125780636a30b25314610ce15761027f565b806339509351146108d85780633b1eb4bf1461093e57806340a12f641461098057806340c10f191461099e57806342966c6814610a045761027f565b806318160ddd1161024757806318160ddd1461043f5780631e4f0e031461045d578063222836ad1461066c57806323b872dd146106a457806323f0ab651461072a578063313ce567146108b45761027f565b806306fdde0314610284578063095ea7b314610307578063123633ea1461036d57806312c6c099146103db578063158ef93e1461041d575b600080fd5b61028c6114cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cc5780820151818401526020810190506102b1565b50505050905090810190601f1680156102f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103536004803603604081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061156f565b604051808215151515815260200191505060405180910390f35b6103996004803603602081101561038357600080fd5b8101908080359060200190929190505050611792565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610407600480360360208110156103f157600080fd5b81019080803590602001909291905050506118e3565b6040518082815260200191505060405180910390f35b61042561190c565b604051808215151515815260200191505060405180910390f35b61044761191f565b6040518082815260200191505060405180910390f35b61066a600480360361012081101561047457600080fd5b810190808035906020019064010000000081111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111640100000000831117156104c557600080fd5b9091929391929390803590602001906401000000008111156104e657600080fd5b8201836020820111156104f857600080fd5b8035906020019184600183028401116401000000008311171561051a57600080fd5b9091929391929390803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460208302840111640100000000831117156105b057600080fd5b9091929391929390803590602001906401000000008111156105d157600080fd5b8201836020820111156105e357600080fd5b8035906020019184602083028401116401000000008311171561060557600080fd5b90919293919293908035906020019064010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9091929391929390505050611931565b005b6106a26004803603604081101561068257600080fd5b810190808035906020019092919080359060200190929190505050611c57565b005b610710600480360360608110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebc565b604051808215151515815260200191505060405180910390f35b61089a6004803603606081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561081457600080fd5b82018360208201111561082657600080fd5b8035906020019184600183028401116401000000008311171561084857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612542565b604051808215151515815260200191505060405180910390f35b6108bc6126fb565b604051808260ff1660ff16815260200191505060405180910390f35b610924600480360360408110156108ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612712565b604051808215151515815260200191505060405180910390f35b61096a6004803603602081101561095457600080fd5b81019080803590602001909291905050506129cf565b6040518082815260200191505060405180910390f35b6109886129e9565b6040518082815260200191505060405180910390f35b6109ea600480360360408110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a4f565b604051808215151515815260200191505060405180910390f35b610a3060048036036020811015610a1a57600080fd5b8101908080359060200190929190505050612eb5565b604051808215151515815260200191505060405180910390f35b610b0360048036036020811015610a6057600080fd5b8101908080359060200190640100000000811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b80359060200191846001830284011164010000000083111715610ab157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506133dc565b6040518082815260200191505060405180910390f35b610b21613570565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610b9860048036036040811015610b6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613598565b005b610bd060048036036040811015610bb057600080fd5b8101908080359060200190929190803590602001909291905050506138d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ccb60048036036020811015610c2857600080fd5b8101908080359060200190640100000000811115610c4557600080fd5b820183602082011115610c5757600080fd5b80359060200191846001830284011164010000000083111715610c7957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613a28565b6040518082815260200191505060405180910390f35b610dac6004803603610100811015610cf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050613bbc565b005b610df060048036036020811015610dc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613eb2565b6040518082815260200191505060405180910390f35b610e0e613f03565b005b610e1861403c565b6040518082815260200191505060405180910390f35b610e3661404c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e80614072565b6040518082815260200191505060405180910390f35b610f4f60048036036020811015610eac57600080fd5b8101908080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506141b9565b6040518082815260200191505060405180910390f35b610f6d61434d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fb7614376565b604051808215151515815260200191505060405180910390f35b610fd96143d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611019578082015181840152602081019050610ffe565b50505050905090810190601f1680156110465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61105c614476565b6040518082815260200191505060405180910390f35b61109e6004803603602081101561108857600080fd5b8101908080359060200190929190505050614486565b6040518082815260200191505060405180910390f35b611100600480360360408110156110ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506145cf565b604051808215151515815260200191505060405180910390f35b611122614806565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6111996004803603604081101561116357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061486a565b604051808215151515815260200191505060405180910390f35b6111f5600480360360208110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614a3e565b005b6112236004803603602081101561120d57600080fd5b8101908080359060200190929190505050614be2565b6040518082815260200191505060405180910390f35b61129b6004803603604081101561124f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c24565b6040518082815260200191505060405180910390f35b6112b9614cab565b6040518082815260200191505060405180910390f35b611370600480360360608110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561132c57600080fd5b82018360208201111561133e57600080fd5b8035906020019184600183028401116401000000008311171561136057600080fd5b9091929391929390505050614de7565b604051808215151515815260200191505060405180910390f35b6113b6600480360360208110156113a057600080fd5b8101908080359060200190929190505050615026565b6040518082815260200191505060405180910390f35b61142a600480360360c08110156113e257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050615071565b604051808381526020018281526020019250505060405180910390f35b6114896004803603602081101561145d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615285565b005b6114b7600480360360208110156114a157600080fd5b810190808035906020019092919050505061530b565b6040518082815260200191505060405180910390f35b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115655780601f1061153a57610100808354040283529160200191611565565b820191906000526020600020905b81548152906001019060200180831161154857829003601f168201915b5050505050905090565b6000611579616af4565b6000611583615454565b8092508193505050600860030154811461161a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976115f7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16844360405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061180b57805182526020820191506020810190506020830392506117e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461186b576040519150601f19603f3d011682016040523d82523d6000602084013e611870565b606091505b508093508192505050806118cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180616d05603d913960400191505060405180910390fd5b6118da82600061562d565b92505050919050565b60006118ed616af4565b6118f5615454565b50809150506119048184615644565b915050919050565b600060149054906101000a900460ff1681565b600061192c600654614be2565b905090565b600060149054906101000a900460ff16156119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000881415611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c286026913960400191505060405180910390fd5b60008711611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616bdb6027913960400191505060405180910390fd5b611a8b33615671565b60006006819055508d8d60029190611aa4929190616b07565b508b8b60039190611ab6929190616b07565b5089600460006101000a81548160ff021916908360ff160217905550611adb886157b5565b600860000160008201518160000155905050611af56157d3565b6008600101600082015181600001559050508660086002018190555042600860030181905550838390508686905014611b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b60008090505b86869050811015611c0757611beb878783818110611bb657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868684818110611bdf57fe5b905060200201356157f9565b50611c006001826159f890919063ffffffff16565b9050611b9c565b50611c1189614a3e565b818160405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120600c819055505050505050505050505050505050565b611c5f614376565b611cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611cd9616af4565b6000611ce3615454565b80925081935050506008600301548114611d7a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611d57600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000841415611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616c4e6027913960400191505060405180910390fd5b60008311611e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f757064617465506572696f64206d757374206265203e2030000000000000000081525060200191505060405180910390fd5b611e53846157b5565b600860000160008201518160000155905050826008600201819055507fa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d84844260405180848152602001838152602001828152602001935050505060405180910390a150505050565b6000611ec6616af4565b6000611ed0615454565b80925081935050506008600301548114611f675781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611f44600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b611f6f615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b81019080805190602001909291905050501561207c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b60006120a1600860010160405180602001604052908160008201548152505086615644565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054851115612296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616e216038913960400191505060405180910390fd5b6122e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237d81600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244f85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b60008060fb73ffffffffffffffffffffffffffffffffffffffff16858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b602083106125cb57805182526020820191506020810190506020830392506125a8565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061261c57805182526020820191506020810190506020830392506125f9565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b602083106126855780518252602082019150602081019050602083039250612662565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146126e5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ea565b606091505b505080915050809150509392505050565b6000600460009054906101000a900460ff16905090565b600061271c616af4565b6000612726615454565b809250819350505060086003015481146127bd5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a9761279a600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006128d986836159f890919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60006129e2826129dd614cab565b615bc5565b9050919050565b60008060001b600c541415612a465760405160200180807f45786368616e67650000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001209050612a4c565b600c5490505b90565b6000612a59616af4565b6000612a63615454565b80925081935050506008600301548114612afa5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612ad7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612b406129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b7457600080fd5b505afa158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d065750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c9c57600080fd5b505afa158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612e2f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050506040513d6020811015612def57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206d696e7400000081525060200191505060405180910390fd5b612eab85856157f9565b9250505092915050565b6000612ebf616af4565b6000612ec9615454565b80925081935050506008600301548114612f605781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612f3d600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612fa66129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fda57600080fd5b505afa158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061316c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561310257600080fd5b505afa158015613116573d6000803e3d6000fd5b505050506040513d602081101561312c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6131de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206275726e00000081525060200191505060405180910390fd5b6000613203600860010160405180602001604052908160008201548152505086615644565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156132ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f76616c75652065786365656465642062616c616e6365206f662073656e64657281525060200191505060405180910390fd5b6132cf81600654615b7b90919063ffffffff16565b60068190555061332781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019350505050919050565b60006060600060f473ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613431578051825260208201915060208101905060208303925061340e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106134985780518252602082019150602081019050602083039250613475565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146134f8576040519150601f19603f3d011682016040523d82523d6000602084013e6134fd565b606091505b5080935081925050508061355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616c756038913960400191505060405180910390fd5b613567826000615c0d565b92505050919050565b6000806000806001600260006001839350829250819150809050935093509350935090919293565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613642615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d60208110156136e857600080fd5b81019080805190602001909291905050501561374f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b613757616af4565b6000613761615454565b809250819350505060086003015481146137f85781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976137d5600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600061381d600860010160405180602001604052908160008201548152505085615644565b905061387181600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c981600654615b7b90919063ffffffff16565b6006819055505050505050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16858560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061394f578051825260208201915060208101905060208303925061392c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146139af576040519150601f19603f3d011682016040523d82523d6000602084013e6139b4565b606091505b50809350819250505080613a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616d776036913960400191505060405180910390fd5b613a1e82600061562d565b9250505092915050565b60006060600060f673ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613a7d5780518252602082019150602081019050602083039250613a5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310613ae45780518252602082019150602081019050602083039250613ac1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50809350819250505080613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616f2c6023913960400191505060405180910390fd5b613bb3826000615c0d565b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613c66615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613ce257600080fd5b505afa158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b810190808051906020019092919050505015613d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000613d98600860010160405180602001604052908160008201548152505086615644565b9050613dec81600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4c613e3d8a8885615cae565b826159f890919063ffffffff16565b9050613e6b613e5c8a8a87615cae565b826159f890919063ffffffff16565b9050613e8a613e7b8a8986615cae565b826159f890919063ffffffff16565b9050613ea1816006546159f890919063ffffffff16565b600681905550505050505050505050565b6000613efc600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614be2565b9050919050565b613f0b614376565b613f7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061404743615026565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1643604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106140e357805182526020820191506020810190506020830392506140c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614143576040519150601f19603f3d011682016040523d82523d6000602084013e614148565b606091505b508093508192505050806141a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180616d426035913960400191505060405180910390fd5b6141b282600061562d565b9250505090565b60006060600060f773ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b6020831061420e57805182526020820191506020810190506020830392506141eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106142755780518252602082019150602081019050602083039250614252565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146142d5576040519150601f19603f3d011682016040523d82523d6000602084013e6142da565b606091505b50809350819250505080614339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616ed16031913960400191505060405180910390fd5b61434482600061562d565b92505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166143b8615e1a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561446c5780601f106144415761010080835404028352916020019161446c565b820191906000526020600020905b81548152906001019060200180831161444f57829003601f168201915b5050505050905090565b6000614481436129cf565b905090565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106144f757805182526020820191506020810190506020830392506144d4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614557576040519150601f19603f3d011682016040523d82523d6000602084013e61455c565b606091505b508093508192505050806145bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616bad602e913960400191505060405180910390fd5b6145c682600061562d565b92505050919050565b60006145d9616af4565b60006145e3615454565b8092508193505050600860030154811461467a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614657600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147108683615b7b90919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60008060008061482e600860000160405180602001604052908160008201548152505061561f565b614850600860010160405180602001604052908160008201548152505061561f565b600860020154600860030154935093509350935090919293565b6000614874616af4565b600061487e615454565b809250819350505060086003015481146149155781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976148f2600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b61491d615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d60208110156149c357600080fd5b810190808051906020019092919050505015614a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b614a348585615e22565b9250505092915050565b614a46614376565b614ab8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6000614bec616af4565b614bf4615454565b5080915050614c1c614c1782614c0986616102565b61618c90919063ffffffff16565b6162d5565b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006060600060f873ffffffffffffffffffffffffffffffffffffffff166040516020016040516020818303038152906040526040518082805190602001908083835b60208310614d115780518252602082019150602081019050602083039250614cee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b50809350819250505080614dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180616e806025913960400191505060405180910390fd5b614de082600061562d565b9250505090565b6000614df1616af4565b6000614dfb615454565b80925081935050506008600301548114614e925781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614e6f600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b614e9a615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614f1657600080fd5b505afa158015614f2a573d6000803e3d6000fd5b505050506040513d6020811015614f4057600080fd5b810190808051906020019092919050505015614fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000614fb3888861486a565b90507fe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1809350505050949350505050565b600061506a600361505c600261504e600261504088614486565b6162f690919063ffffffff16565b6159f890919063ffffffff16565b61637c90919063ffffffff16565b9050919050565b60008060008714158015615086575060008514155b6150f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f612064656e6f6d696e61746f72206973207a65726f000000000000000000000081525060200191505060405180910390fd5b6000806000606060fc73ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c8c6040516020018087815260200186815260200185815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b60208310615192578051825260208201915060208101905060208303925061516f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146151f2576040519150601f19603f3d011682016040523d82523d6000602084013e6151f7565b606091505b50809250819350505081615256576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616e596027913960400191505060405180910390fd5b61526181600061562d565b935061526e81602061562d565b925083839550955050505050965096945050505050565b61528d614376565b6152ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61530881615671565b50565b60006060600060f573ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061537c5780518252602082019150602081019050602083039250615359565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146153dc576040519150601f19603f3d011682016040523d82523d6000602084013e6153e1565b606091505b50809350819250505080615440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180616ea5602c913960400191505060405180910390fd5b61544b826000615c0d565b92505050919050565b61545c616af4565b600061547b6008600201546008600301546159f890919063ffffffff16565b4210156154ae5760086001016008600301548160405180602001604052908160008201548152505091509150915061561b565b60008060006154e26008600201546154d460086003015442615b7b90919063ffffffff16565b61637c90919063ffffffff16565b9050615564615509600860010160405180602001604052908160008201548152505061561f565b6155196155146157d3565b61561f565b61553b600860000160405180602001604052908160008201548152505061561f565b61554b6155466157d3565b61561f565b85600460009054906101000a900460ff1660ff16615071565b8093508194505050600083148061557b5750600082145b156155af5760086001016008600301548160405180602001604052908160008201548152505091509450945050505061561b565b6155b7616af4565b6155da6155c3846157b5565b6155cc866157b5565b61618c90919063ffffffff16565b9050600061560d6155f9846008600201546162f690919063ffffffff16565b6008600301546159f890919063ffffffff16565b905081819650965050505050505b9091565b600081600001519050919050565b60006156398383615c0d565b60001c905092915050565b600061566961566461565584616102565b856163c690919063ffffffff16565b6162d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156156f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6157bd616af4565b6040518060200160405280838152509050919050565b6157db616af4565b604051806020016040528069d3c21bcecceda1000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561589d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f302069732061207265736572766564206164647265737300000000000000000081525060200191505060405180910390fd5b60008214156158af57600190506159f2565b60006158d4600860010160405180602001604052908160008201548152505084615644565b90506158eb816006546159f890919063ffffffff16565b60068190555061594381600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b92915050565b600080828401905083811015615a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f467265657a6572000000000000000000000000000000000000000000000000008152506007019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015615b3b57600080fd5b505afa158015615b4f573d6000803e3d6000fd5b505050506040513d6020811015615b6557600080fd5b8101908080519060200190929190505050905090565b6000615bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250616825565b905092915050565b600080828481615bd157fe5b0490506000838581615bdf57fe5b061415615bef5780915050615c07565b615c036001826159f890919063ffffffff16565b9150505b92915050565b6000615c236020836159f890919063ffffffff16565b83511015615c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736c6963696e67206f7574206f662072616e676500000000000000000000000081525060200191505060405180910390fd5b60006020830184015190508091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ced5760009050615e13565b6000615d12600860010160405180602001604052908160008201548152505084615644565b9050615d6681600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3809150505b9392505050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b6000615ece600860010160405180602001604052908160008201548152505084615644565b905080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b615fba81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061604f81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b61610a616af4565b6161126168e5565b82111561616a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616ccf6036913960400191505060405180910390fd5b604051806020016040528069d3c21bcecceda100000084028152509050919050565b616194616af4565b60008260000151141561620f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e277420646976696465206279203000000000000000000000000000000081525060200191505060405180910390fd5b600069d3c21bcecceda10000008460000151029050836000015169d3c21bcecceda1000000828161623c57fe5b04146162b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f766572666c6f7720617420646976696465000000000000000000000000000081525060200191505060405180910390fd5b6040518060200160405280846000015183816162c857fe5b0481525091505092915050565b600069d3c21bcecceda10000008260000151816162ee57fe5b049050919050565b6000808314156163095760009050616376565b600082840290508284828161631a57fe5b0414616371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd76021913960400191505060405180910390fd5b809150505b92915050565b60006163be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616904565b905092915050565b6163ce616af4565b6000836000015114806163e5575060008260000151145b156164015760405180602001604052806000815250905061681f565b69d3c21bcecceda10000008260000151141561641f5782905061681f565b69d3c21bcecceda10000008360000151141561643d5781905061681f565b600069d3c21bcecceda1000000616453856169ca565b600001518161645e57fe5b049050600061646c85616a01565b600001519050600069d3c21bcecceda1000000616488866169ca565b600001518161649357fe5b04905060006164a186616a01565b600001519050600082850290506000851461653557828582816164c057fe5b0414616534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b600069d3c21bcecceda100000082029050600082146165d75769d3c21bcecceda100000082828161656257fe5b04146165d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f766572666c6f772078317931202a206669786564312064657465637465640081525060200191505060405180910390fd5b5b809150600084860290506000861461666857848682816165f357fe5b0414616667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b60008488029050600088146166f6578488828161668157fe5b04146166f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6166fe616a3e565b878161670657fe5b049650616711616a3e565b858161671957fe5b04945060008588029050600088146167aa578588828161673557fe5b04146167a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6167b2616af4565b60405180602001604052808781525090506167db81604051806020016040528087815250616a4b565b90506167f581604051806020016040528086815250616a4b565b905061680f81604051806020016040528085815250616a4b565b9050809a50505050505050505050505b92915050565b60008383111582906168d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561689757808201518184015260208101905061687c565b50505050905090810190601f1680156168c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60007601357c299a88ea76a58924d52ce4f26a85af186c2b9e74905090565b600080831182906169b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561697557808201518184015260208101905061695a565b50505050905090810190601f1680156169a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816169bc57fe5b049050809150509392505050565b6169d2616af4565b604051806020016040528069d3c21bcecceda1000000808560000151816169f557fe5b04028152509050919050565b616a09616af4565b604051806020016040528069d3c21bcecceda100000080856000015181616a2c57fe5b04028460000151038152509050919050565b600064e8d4a51000905090565b616a53616af4565b6000826000015184600001510190508360000151811015616adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616464206f766572666c6f77206465746563746564000000000000000000000081525060200191505060405180910390fd5b60405180602001604052808281525091505092915050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616b4857803560ff1916838001178555616b76565b82800160010185558215616b76579182015b82811115616b75578235825591602001919060010190616b5a565b5b509050616b839190616b87565b5090565b616ba991905b80821115616ba5576000816000905550600101616b8d565b5090565b9056fe6572726f722063616c6c696e67206e756d62657256616c696461746f7273496e53657420707265636f6d70696c65696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174654d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e6572726f722063616c6c696e672067657456657269666965645365616c4269746d617046726f6d48656164657220707265636f6d70696c6563616e27742063616c6c207768656e20636f6e74726163742069732066726f7a656e63616e277420637265617465206669786964697479206e756d626572206c6172676572207468616e206d61784e6577466978656428296572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e67206e756d62657256616c696461746f7273496e43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d53657420707265636f6d70696c6572657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e6465727472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e746572726f722063616c6c696e67206672616374696f6e4d756c45787020707265636f6d70696c656572726f722063616c6c696e672067657445706f636853697a6520707265636f6d70696c656572726f722063616c6c696e6720676574506172656e745365616c4269746d617020707265636f6d70696c656572726f722063616c6c696e6720676574426c6f636b4e756d62657246726f6d48656164657220707265636f6d70696c657472616e7366657220617474656d7074656420746f2072657365727665642061646472657373203078306572726f722063616c6c696e67206861736848656164657220707265636f6d70696c65a265627a7a72315820f881c1ef841ee1c797a12d2b1c9e74738f72704f6ac8ec7339c72ee42ba8f5fb64736f6c634300050d0032", + "sourceMap": "695:20782:137:-;;;3526:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;3526:52:137;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3526:52:137;;;;;;;;;;;;;;;;3570:4;698:17:163;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;3526:52:137;695:20782;;788:96:159;833:15;867:10;860:17;;788:96;:::o;695:20782:137:-;;;;;;;", + "deployedSourceMap": "695:20782:137:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;695:20782:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11567:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11567:77:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7790:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7790:288:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3769:367:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3769:367:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13774:250:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13774:250:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12875:99:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4278:1275;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4278:1275:137;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;:::i;:::-;;5702:491;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5702:491:137;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10790:718;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10790:718:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6264:266:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6264:266:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6264:266:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6264:266:22;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6264:266:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6264:266:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6264:266:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11879:77:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6473:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6473:415:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2608:147:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2608:147:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14610:199:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8257:399;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8257:399:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9870:602;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9870:602:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8414:343:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8414:343:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8414:343:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8414:343:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8414:343:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8414:343:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3260:117:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19507:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19507:287:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4440:378:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4440:378:22;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7106:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7106:288:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7106:288:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7106:288:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7106:288:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7106:288:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20540:624:137;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20540:624:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12605:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12605:127:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1684:137:163;;;:::i;:::-;;9949:112:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2540:25:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4955:326:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6659:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6659:329:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6659:329:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6659:329:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6659:329:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6659:329:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;899:77:163;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11705:81:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11705:81:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2856:109:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5497:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5497:321:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7168:333:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7168:333:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13125:266;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18113:163;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18113:163:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3089:230:23;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3089:230:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;15052:663:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15052:663:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12238:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12238:138:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2178:266:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9471:267:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9471:267:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9471:267:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9471:267:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9471:267:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9670:147:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9670:147:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1297:763;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1297:763:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1970:107:163;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:163;;;;;;;;;;;;;;;;;;;:::i;:::-;;7685:322:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7685:322:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11567:77:137;11606:13;11634:5;11627:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11567:77;:::o;7790:288::-;7879:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;7918:1;7899:21;;:7;:21;;;;7891:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8004:5;7973:7;:19;7981:10;7973:19;;;;;;;;;;;;;;;:28;7993:7;7973:28;;;;;;;;;;;;;;;:36;;;;8041:7;8020:36;;8029:10;8020:36;;;8050:5;8020:36;;;;;;;;;;;;;;;;;;8069:4;8062:11;;7790:288;;;;;;:::o;3769:367:22:-;3851:7;3866:16;3888:12;409:8;3923:24;;3965:5;3980:12;3948:46;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3948:46:22;;;3923:72;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3923:72:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3906:89:22;;;;;;;;4009:7;4001:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4103:27;4123:3;4128:1;4103:19;:27::i;:::-;4088:43;;;;3769:367;;;:::o;13774:250:137:-;13834:7;13849:50;;:::i;:::-;13935:27;:25;:27::i;:::-;13906:56;;;;;13975:44;13989:22;14013:5;13975:13;:44::i;:::-;13968:51;;;13774:250;;;:::o;53:23:12:-;;;;;;;;;;;;;:::o;12875:99:137:-;12921:7;12943:26;12956:12;;12943;:26::i;:::-;12936:33;;12875:99;:::o;4278:1275::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;4661:1:137;4644:13;:18;;4636:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4749:1;4719:27;:31;4711:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:30;4820:10;4801:18;:30::i;:::-;4853:1;4838:12;:16;;;;4868:5;;4860;:13;;;;;;;:::i;:::-;;4889:7;;4879;:17;;;;;;;:::i;:::-;;4914:9;4902;;:21;;;;;;;;;;;;;;;;;;4952:31;4969:13;4952:16;:31::i;:::-;4930:14;:19;;:53;;;;;;;;;;;5013:20;:18;:20::i;:::-;4989:14;:21;;:44;;;;;;;;;;;5069:27;5039:14;:27;;:57;;;;5187:3;5152:14;:32;;:38;;;;5239:20;;:27;;5205:23;;:30;;:61;5197:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:9;5315:1;5303:13;;5298:143;5322:23;;:30;;5318:1;:34;5298:143;;;5376:58;5382:23;;5406:1;5382:26;;;;;;;;;;;;;;;5410:20;;5431:1;5410:23;;;;;;;;;;;;;5376:5;:58::i;:::-;;5358:8;5364:1;5358;:5;;:8;;;;:::i;:::-;5354:12;;5298:143;;;;5446:28;5458:15;5446:11;:28::i;:::-;5528:18;;5511:36;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;5511:36:137;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5511:36:137;;;5501:47;;;;;;5480:18;:68;;;;4278:1275;;;;;;;;;;;;;;:::o;5702:491::-;1103:9:163;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2547:50:137;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;5847:1;5839:4;:9;;5831:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5921:1;5906:12;:16;5898:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5979:22;5996:4;5979:16;:22::i;:::-;5957:14;:19;;:44;;;;;;;;;;;6037:12;6007:14;:27;;:42;;;;6061:127;6095:4;6107:12;6179:3;6061:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:1:163;;5702:491:137;;:::o;10790:718::-;10927:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10941:13:137;10957:43;10971:14;:21;;10957:43;;;;;;;;;;;;;;;;;10994:5;10957:13;:43::i;:::-;10941:59;;11028:1;11014:16;;:2;:16;;;;11006:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:8;:14;11109:4;11100:14;;;;;;;;;;;;;;;;11091:5;:23;;11083:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11190:7;:13;11198:4;11190:13;;;;;;;;;;;;;;;:25;11204:10;11190:25;;;;;;;;;;;;;;;;11181:5;:34;;11166:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11309:23;11326:5;11309:8;:12;11318:2;11309:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;11294:8;:12;11303:2;11294:12;;;;;;;;;;;;;;;:38;;;;11355:25;11374:5;11355:8;:14;11364:4;11355:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;11338:8;:14;11347:4;11338:14;;;;;;;;;;;;;;;:42;;;;11414:36;11444:5;11414:7;:13;11422:4;11414:13;;;;;;;;;;;;;;;:25;11428:10;11414:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;11386:7;:13;11394:4;11386:13;;;;;;;;;;;;;;;:25;11400:10;11386:25;;;;;;;;;;;;;;;:64;;;;11476:2;11461:25;;11470:4;11461:25;;;11480:5;11461:25;;;;;;;;;;;;;;;;;;11499:4;11492:11;;;10790:718;;;;;;;:::o;6264:266:22:-;6387:4;6401:12;355:8;6433:30;;6481:6;6489;6497;6464:40;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6464:40:22;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6464:40:22;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6464:40:22;;;6433:72;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6433:72:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6419:86:22;;;;;6518:7;6511:14;;;6264:266;;;;;:::o;11879:77:137:-;11922:5;11942:9;;;;;;;;;;;11935:16;;11879:77;:::o;6473:415::-;6584:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;6625:1;6606:21;;:7;:21;;;;6598:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6680:16;6699:7;:19;6707:10;6699:19;;;;;;;;;;;;;;;:28;6719:7;6699:28;;;;;;;;;;;;;;;;6680:47;;6733:16;6752:19;6765:5;6752:8;:12;;:19;;;;:::i;:::-;6733:38;;6808:8;6777:7;:19;6785:10;6777:19;;;;;;;;;;;;;;;:28;6797:7;6777:28;;;;;;;;;;;;;;;:39;;;;6848:7;6827:39;;6836:10;6827:39;;;6857:8;6827:39;;;;;;;;;;;;;;;;;;6879:4;6872:11;;;;6473:415;;;;;;:::o;2608:147:22:-;2681:7;2703:47;2722:11;2735:14;:12;:14::i;:::-;2703:18;:47::i;:::-;2696:54;;2608:147;;;:::o;14610:199:137:-;14664:7;14713:1;14705:10;;14683:18;;:32;14679:126;;;1469:28:23;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1469:28:23;;;1459:39;;;;;;14725:27:137;;;;14679:126;14780:18;;14773:25;;14610:199;;:::o;8257:399::-;8338:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;8379:8;;;;;;;;;;;:27;;;8407:23;:21;:23::i;:::-;8379:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8379:52:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8379:52:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8379:52:137;;;;;;;;;;;;;;;;8365:66;;:10;:66;;;:138;;;;8457:8;;;;;;;;;;;:22;;;2467:30:23;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2467:30:23;;;2457:41;;;;;;8457:46:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8457:46:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8457:46:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8457:46:137;;;;;;;;;;;;;;;;8443:60;;:10;:60;;;8365:138;:212;;;;8529:8;;;;;;;;;;;:22;;;1293:31;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1293:31:137;;;1283:42;;;;;;8529:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8529:48:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8529:48:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8529:48:137;;;;;;;;;;;;;;;;8515:62;;:10;:62;;;8365:212;8350:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8635:16;8641:2;8645:5;8635;:16::i;:::-;8628:23;;8257:399;;;;;;:::o;9870:602::-;9939:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;9980:8;;;;;;;;;;;:27;;;10008:23;:21;:23::i;:::-;9980:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9980:52:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9980:52:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9980:52:137;;;;;;;;;;;;;;;;9966:66;;:10;:66;;;:140;;;;10058:8;;;;;;;;;;;:22;;;1293:31;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1293:31:137;;;1283:42;;;;;;10058:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10058:48:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10058:48:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10058:48:137;;;;;;;;;;;;;;;;10044:62;;:10;:62;;;9966:140;9951:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10157:13;10173:43;10187:14;:21;;10173:43;;;;;;;;;;;;;;;;;10210:5;10173:13;:43::i;:::-;10157:59;;10239:8;:20;10248:10;10239:20;;;;;;;;;;;;;;;;10230:5;:29;;10222:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10317:23;10334:5;10317:12;;:16;;:23;;;;:::i;:::-;10302:12;:38;;;;10369:31;10394:5;10369:8;:20;10378:10;10369:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;10346:8;:20;10355:10;10346:20;;;;;;;;;;;;;;;:54;;;;10440:1;10411:39;;10420:10;10411:39;;;10444:5;10411:39;;;;;;;;;;;;;;;;;;10463:4;10456:11;;;9870:602;;;;;:::o;8414:343:22:-;8497:7;8512:16;8534:12;764:9;8569:35;;8622:6;8605:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8605:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8605:24:22;;;8569:61;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8569:61:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8552:78:22;;;;;;;;8644:7;8636:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8725:27;8745:3;8750:1;8725:19;:27::i;:::-;8718:34;;;;8414:343;;;:::o;3260:117:137:-;3311:7;3320;3329;3338;3361:1;3364;3367;3370;3353:19;;;;;;;;;;;;;;;;;;;;3260:117;;;;:::o;19507:287::-;104:1:2;82:24;;:10;:24;;;74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2547:50:137;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;19638:13;19654:43;19668:14;:21;;19654:43;;;;;;;;;;;;;;;;;19691:5;19654:13;:43::i;:::-;19638:59;;19720:25;19739:5;19720:8;:14;19729:4;19720:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;19703:8;:14;19712:4;19703:14;;;;;;;;;;;;;;;:42;;;;19766:23;19783:5;19766:12;;:16;;:23;;;;:::i;:::-;19751:12;:38;;;;2977:1;331::8;;19507:287:137;;:::o;4440:378:22:-;4548:7;4565:16;4587:12;409:8;4622:24;;4664:5;4671:11;4647:36;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4647:36:22;;;4622:62;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4622:62:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4605:79:22;;;;;;;;4698:7;4690:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4785:27;4805:3;4810:1;4785:19;:27::i;:::-;4770:43;;;;4440:378;;;;:::o;7106:288::-;7168:7;7183:16;7205:12;635:8;7240:22;;7280:6;7263:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7263:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7263:24:22;;;7240:48;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7240:48:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7223:65:22;;;;;;;;7302:7;7294:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7362:27;7382:3;7387:1;7362:19;:27::i;:::-;7355:34;;;;7106:288;;;:::o;20540:624:137:-;104:1:2;82:24;;:10;:24;;;74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20800:13:137;20816:44;20830:14;:21;;20816:44;;;;;;;;;;;;;;;;;20853:6;20816:13;:44::i;:::-;20800:60;;20883:25;20902:5;20883:8;:14;20892:4;20883:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;20866:8;:14;20875:4;20866:14;;;;;;;;;;;;;;;:42;;;;20923:53;20933:42;20944:4;20950:13;20965:9;20933:10;:42::i;:::-;20923:5;:9;;:53;;;;:::i;:::-;20915:61;;20990:51;21000:40;21011:4;21017:12;21031:8;21000:10;:40::i;:::-;20990:5;:9;;:51;;;;:::i;:::-;20982:59;;21055:60;21065:49;21076:4;21082:19;21103:10;21065;:49::i;:::-;21055:5;:9;;:60;;;;:::i;:::-;21047:68;;21136:23;21153:5;21136:12;;:16;;:23;;;;:::i;:::-;21121:12;:38;;;;331:1:8;20540:624:137;;;;;;;;:::o;12605:127::-;12669:7;12691:36;12704:8;:22;12713:12;12704:22;;;;;;;;;;;;;;;;12691:12;:36::i;:::-;12684:43;;12605:127;;;:::o;1684:137:163:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;9949:112:22:-;10007:7;10029:27;10043:12;10029:13;:27::i;:::-;10022:34;;9949:112;:::o;2540:25:23:-;;;;;;;;;;;;;:::o;4955:326:22:-;5016:7;5031:16;5053:12;467:8;5088:28;;5142:12;5117:39;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5117:39:22;;;5088:69;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5088:69:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5071:86:22;;;;;;;;5171:7;5163:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:27;5269:3;5274:1;5249:19;:27::i;:::-;5242:34;;;;4955:326;:::o;6659:329::-;6735:7;6750:16;6772:12;583:8;6807:35;;6860:6;6843:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6843:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6843:24:22;;;6807:61;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6807:61:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6790:78:22;;;;;;;;6882:7;6874:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:27;6976:3;6981:1;6956:19;:27::i;:::-;6949:34;;;;6659:329;;;:::o;899:77:163:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;11705:81:137:-;11746:13;11774:7;11767:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11705:81;:::o;2856:109:22:-;2903:7;2925:35;2947:12;2925:21;:35::i;:::-;2918:42;;2856:109;:::o;5497:321::-;5570:7;5585:16;5607:12;467:8;5642:28;;5688:11;5671:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5671:29:22;;;5642:59;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5642:59:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5625:76:22;;;;;;;;5715:7;5707:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:27;5806:3;5811:1;5786:19;:27::i;:::-;5779:34;;;;5497:321;;;:::o;7168:333:137:-;7279:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;7293:16;7312:7;:19;7320:10;7312:19;;;;;;;;;;;;;;;:28;7332:7;7312:28;;;;;;;;;;;;;;;;7293:47;;7346:16;7365:19;7378:5;7365:8;:12;;:19;;;;:::i;:::-;7346:38;;7421:8;7390:7;:19;7398:10;7390:19;;;;;;;;;;;;;;;:28;7410:7;7390:28;;;;;;;;;;;;;;;:39;;;;7461:7;7440:39;;7449:10;7440:39;;;7470:8;7440:39;;;;;;;;;;;;;;;;;;7492:4;7485:11;;;;7168:333;;;;;;:::o;13125:266::-;13182:7;13191;13200;13209;13239:28;:14;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;13275:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;13313:14;:27;;;13348:14;:32;;;13224:162;;;;;;;;13125:266;;;;:::o;18113:163::-;18230:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18251:20:137;18261:2;18265:5;18251:9;:20::i;:::-;18244:27;;18113:163;;;;;;:::o;3089:230:23:-;1103:9:163;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:1:23;3166:29;;:15;:29;;;;3158:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:15;3238:8;;:37;;;;;;;;;;;;;;;;;;3298:15;3286:28;;;;;;;;;;;;3089:230;:::o;15052:663:137:-;15110:7;15125:50;;:::i;:::-;15211:27;:25;:27::i;:::-;15182:56;;;;;15640:70;:58;15675:22;15640:27;15661:5;15640:20;:27::i;:::-;:34;;:58;;;;:::i;:::-;:68;:70::i;:::-;15633:77;;;15052:663;;;:::o;12238:138::-;12319:7;12341;:21;12349:12;12341:21;;;;;;;;;;;;;;;:30;12363:7;12341:30;;;;;;;;;;;;;;;;12334:37;;12238:138;;;;:::o;2178:266:22:-;2223:7;2238:16;2260:12;518:8;2295:21;;2317:18;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2317:18:22;;;2295:41;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2295:41:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2278:58:22;;;;;;;;2350:7;2342:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:27;2432:3;2437:1;2412:19;:27::i;:::-;2405:34;;;;2178:266;:::o;9471:267:137:-;9626:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9640:14:137;9657:19;9666:2;9670:5;9657:8;:19::i;:::-;9640:36;;9687:24;9703:7;;9687:24;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9687:24:137;;;;;;;;;;;;;;9724:9;9717:16;;;9471:267;;;;;;;;:::o;9670:147:22:-;9735:7;9757:55;9810:1;9757:48;9803:1;9757:41;9796:1;9757:34;9779:11;9757:21;:34::i;:::-;:38;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;:52;;:55;;;;:::i;:::-;9750:62;;9670:147;;;:::o;1297:763::-;1491:7;1500;1539:1;1523:12;:17;;:38;;;;;1560:1;1544:12;:17;;1523:38;1515:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1593:23;1622:25;1653:12;1671:16;295:8;1710:23;;1758:10;1770:12;1784:10;1796:12;1810:8;1820:9;1741:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1741:89:22;;;1710:126;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1710:126:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1693:143:22;;;;;;;;1850:7;1842:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:27;1945:3;1950:1;1925:19;:27::i;:::-;1907:45;;1978:28;1998:3;2003:2;1978:19;:28::i;:::-;1958:48;;2020:15;2037:17;2012:43;;;;;;;;1297:763;;;;;;;;;:::o;1970:107:163:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;7685:322:22:-;7756:7;7771:16;7793:12;698:9;7828:33;;7879:11;7862:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7862:29:22;;;7828:64;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7828:64:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7811:81:22;;;;;;;;7906:7;7898:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7975:27;7995:3;8000:1;7975:19;:27::i;:::-;7968:34;;;;7685:322;;;:::o;16485:1407:137:-;16544:27;;:::i;:::-;16573:7;16641:65;16678:14;:27;;;16641:14;:32;;;:36;;:65;;;;:::i;:::-;16635:3;:71;16631:156;;;16724:14;:21;;16747:14;:32;;;16716:64;;;;;;;;;;;;;;;;;;;;;;;;;;16631:156;16793:17;16816:19;16914:29;16946:86;16999:14;:27;;;16946:41;16954:14;:32;;;16946:3;:7;;:41;;;;:::i;:::-;:45;;:86;;;;:::i;:::-;16914:118;;17066:214;17088:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;17126:29;:20;:18;:20::i;:::-;:27;:29::i;:::-;17163:28;:14;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;17199:29;:20;:18;:20::i;:::-;:27;:29::i;:::-;17236:21;17265:9;;;;;;;;;;;17066:214;;:14;:214::i;:::-;17039:241;;;;;;;;17424:1;17411:9;:14;:34;;;;17444:1;17429:11;:16;17411:34;17407:119;;;17463:14;:21;;17486:14;:32;;;17455:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17407:119;17532:50;;:::i;:::-;17585:77;17627:29;17644:11;17627:16;:29::i;:::-;17585:27;17602:9;17585:16;:27::i;:::-;:34;;:77;;;;:::i;:::-;17532:130;;17668:19;17690:104;17734:54;17766:21;17734:14;:27;;;:31;;:54;;;;:::i;:::-;17690:14;:32;;;:36;;:104;;;;:::i;:::-;17668:126;;17809:22;17833:11;17801:44;;;;;;;;;16485:1407;;;:::o;1674:92:7:-;1732:7;1754:1;:7;;;1747:14;;1674:92;;;:::o;8917:150:22:-;9001:7;9031:30;9051:2;9055:5;9031:19;:30::i;:::-;9023:39;;9016:46;;8917:150;;;;:::o;16093:211:137:-;16210:7;16234:65;:53;16259:27;16280:5;16259:20;:27::i;:::-;16234:15;:24;;:53;;;;:::i;:::-;:63;:65::i;:::-;16227:72;;16093:211;;;;:::o;2178:225:163:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;1502:94:7:-;1550:15;;:::i;:::-;1580:11;;;;;;;;1589:1;1580:11;;;1573:18;;1502:94;;;:::o;1180:97::-;1221:15;;:::i;:::-;1251:21;;;;;;;;996:25;1251:21;;;1244:28;;1180:97;:::o;8835:388:137:-;8894:4;8928:1;8914:16;;:2;:16;;;;8906:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8977:1;8968:5;:10;8964:42;;;8995:4;8988:11;;;;8964:42;9012:13;9028:43;9042:14;:21;;9028:43;;;;;;;;;;;;;;;;;9065:5;9028:13;:43::i;:::-;9012:59;;9092:23;9109:5;9092:12;;:16;;:23;;;;:::i;:::-;9077:12;:38;;;;9136:23;9153:5;9136:8;:12;9145:2;9136:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;9121:8;:12;9130:2;9121:12;;;;;;;;;;;;;;;:38;;;;9191:2;9170:31;;9187:1;9170:31;;;9195:5;9170:31;;;;;;;;;;;;;;;;;;9214:4;9207:11;;;8835:388;;;;;:::o;834:176:162:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;4092:131:23:-;4137:8;4169;;;;;;;;;;;:27;;;1668;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1668:27:23;;;1658:38;;;;;;4169:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4169:48:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4169:48:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4169:48:23;;;;;;;;;;;;;;;;4153:65;;4092:131;:::o;1274:134:162:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;3177:379:22:-;3280:7;3388:19;3424:9;3410:11;:23;;;;;;3388:45;;3470:1;3457:9;3443:11;:23;;;;;;:28;3439:113;;;3488:11;3481:18;;;;;3439:113;3527:18;3543:1;3527:11;:15;;:18;;;;:::i;:::-;3520:25;;;3177:379;;;;;:::o;9227:255::-;9311:7;9347:13;9357:2;9347:5;:9;;:13;;;;:::i;:::-;9334:2;:9;:26;;9326:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9391:9;9453:2;9446:5;9442:14;9438:2;9434:23;9428:30;9423:35;;9476:1;9469:8;;;9227:255;;;;:::o;21168:306:137:-;21247:7;21280:1;21266:16;;:2;:16;;;21262:45;;;21299:1;21292:8;;;;21262:45;21312:13;21328:43;21342:14;:21;;21328:43;;;;;;;;;;;;;;;;;21365:5;21328:13;:43::i;:::-;21312:59;;21392:23;21409:5;21392:8;:12;21401:2;21392:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;21377:8;:12;21386:2;21377:12;;;;;;;;;;;;;;;:38;;;;21441:2;21426:25;;21435:4;21426:25;;;21445:5;21426:25;;;;;;;;;;;;;;;;;;21464:5;21457:12;;;21168:306;;;;;;:::o;788:96:159:-;833:15;867:10;860:17;;788:96;:::o;18473:469:137:-;18537:4;18571:1;18557:16;;:2;:16;;;;18549:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18626:13;18642:43;18656:14;:21;;18642:43;;;;;;;;;;;;;;;;;18679:5;18642:13;:43::i;:::-;18626:59;;18723:5;18699:8;:20;18708:10;18699:20;;;;;;;;;;;;;;;;:29;;18691:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18803:31;18828:5;18803:8;:20;18812:10;18803:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;18780:8;:20;18789:10;18780:20;;;;;;;;;;;;;;;:54;;;;18855:23;18872:5;18855:8;:12;18864:2;18855:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;18840:8;:12;18849:2;18840:12;;;;;;;;;;;;;;;:38;;;;18910:2;18889:31;;18898:10;18889:31;;;18914:5;18889:31;;;;;;;;;;;;;;;;;;18933:4;18926:11;;;18473:469;;;;:::o;2547:203:7:-;2599:15;;:::i;:::-;2635:13;:11;:13::i;:::-;2630:1;:18;;2622:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2720:25;;;;;;;;996;2729:1;:15;2720:25;;;2713:32;;2547:203;;;:::o;9180:283::-;9257:15;;:::i;:::-;9299:1;9288;:7;;;:12;;9280:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9328:9;996:25;9340:1;:7;;;:21;9328:33;;9394:1;:7;;;996:25;9375:1;:15;;;;;;:26;9367:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9437:21;;;;;;;;9450:1;:7;;;9446:1;:11;;;;;;9437:21;;;9430:28;;;9180:283;;;;:::o;2909:109::-;2970:7;996:25;2992:1;:7;;;:21;;;;;;2985:28;;2909:109;;;:::o;2159:459:162:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;6206:1636:7:-;6285:15;;:::i;:::-;6323:1;6312;:7;;;:12;:28;;;;6339:1;6328;:7;;;:12;6312:28;6308:52;;;6349:11;;;;;;;;6358:1;6349:11;;;6342:18;;;;6308:52;996:25;6370:1;:7;;;:22;6366:36;;;6401:1;6394:8;;;;6366:36;996:25;6412:1;:7;;;:22;6408:36;;;6443:1;6436:8;;;;6408:36;6533:10;996:25;6546:10;6554:1;6546:7;:10::i;:::-;:16;;;:30;;;;;;6533:43;;6582:10;6595:13;6606:1;6595:10;:13::i;:::-;:19;;;6582:32;;6620:10;996:25;6633:10;6641:1;6633:7;:10::i;:::-;:16;;;:30;;;;;;6620:43;;6669:10;6682:13;6693:1;6682:10;:13::i;:::-;:19;;;6669:32;;6785:12;6805:2;6800;:7;6785:22;;6823:1;6817:2;:7;6813:63;;6847:2;6841;6834:4;:9;;;;;;:15;6826:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:63;6975:18;996:25;6996:4;:18;6975:39;;7032:1;7024:4;:9;7020:91;;996:25;7056:4;7043:10;:17;;;;;;:32;7035:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7020:91;7124:10;7117:17;;7141:12;7161:2;7156;:7;7141:22;;7179:1;7173:2;:7;7169:63;;7203:2;7197;7190:4;:9;;;;;;:15;7182:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:63;7239:12;7259:2;7254;:7;7239:22;;7277:1;7271:2;:7;7267:63;;7301:2;7295;7288:4;:9;;;;;;:15;7280:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7267:63;7347:14;:12;:14::i;:::-;7342:2;:19;;;;;;7337:24;;7377:14;:12;:14::i;:::-;7372:2;:19;;;;;;7367:24;;7397:12;7417:2;7412;:7;7397:22;;7435:1;7429:2;:7;7425:63;;7459:2;7453;7446:4;:9;;;;;;:15;7438:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7425:63;7572:22;;:::i;:::-;7597:14;;;;;;;;7606:4;7597:14;;;7572:39;;7626:27;7630:6;7638:14;;;;;;;;7647:4;7638:14;;;7626:3;:27::i;:::-;7617:36;;7695:27;7699:6;7707:14;;;;;;;;7716:4;7707:14;;;7695:3;:27::i;:::-;7686:36;;7764:27;7768:6;7776:14;;;;;;;;7785:4;7776:14;;;7764:3;:27::i;:::-;7755:36;;7831:6;7824:13;;;;;;;;;;;;6206:1636;;;;;:::o;1732:187:162:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;2163:127:7:-;2209:7;2231:54;2224:61;;2163:127;:::o;3718:338:162:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3889:28:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;4068:159:7:-;4127:15;;:::i;:::-;4157:47;;;;;;;;996:25;;4167:1;:7;;;:21;;;;;;4166:37;4157:47;;;4150:54;;4068:159;;;:::o;4514:172::-;4576:15;;:::i;:::-;4606:57;;;;;;;;996:25;;4626:1;:7;;;:21;;;;;;4625:37;4615:1;:7;;;:47;4606:57;;;4599:64;;4514:172;;;:::o;1905:87::-;1952:7;1974:13;1967:20;;1905:87;:::o;5058:207::-;5132:15;;:::i;:::-;5155:9;5177:1;:7;;;5167:1;:7;;;:17;5155:29;;5203:1;:7;;;5198:1;:12;;5190:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:11;;;;;;;;5258:1;5249:11;;;5242:18;;;5058:207;;;;:::o;695:20782:137:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./interfaces/IStableToken.sol\";\nimport \"../common/interfaces/ICeloToken.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/CalledByVm.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/FixidityLib.sol\";\nimport \"../common/Freezable.sol\";\nimport \"../common/UsingRegistry.sol\";\nimport \"../common/UsingPrecompiles.sol\";\n\n/**\n * @title An ERC20 compliant token with adjustable supply.\n */\n// solhint-disable-next-line max-line-length\ncontract StableToken is\n ICeloVersionedContract,\n Ownable,\n Initializable,\n UsingRegistry,\n UsingPrecompiles,\n Freezable,\n CalledByVm,\n IStableToken,\n IERC20,\n ICeloToken\n{\n using FixidityLib for FixidityLib.Fraction;\n using SafeMath for uint256;\n\n event InflationFactorUpdated(uint256 factor, uint256 lastUpdated);\n\n event InflationParametersUpdated(uint256 rate, uint256 updatePeriod, uint256 lastUpdated);\n\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n event TransferComment(string comment);\n\n bytes32 constant GRANDA_MENTO_REGISTRY_ID = keccak256(abi.encodePacked(\"GrandaMento\"));\n\n string internal name_;\n string internal symbol_;\n uint8 internal decimals_;\n\n // Stored as units. Value can be found using unitsToValue().\n mapping(address => uint256) internal balances;\n uint256 internal totalSupply_;\n\n // Stored as values. Units can be found using valueToUnits().\n mapping(address => mapping(address => uint256)) internal allowed;\n\n // STABILITY FEE PARAMETERS\n\n // The `rate` is how much the `factor` is adjusted by per `updatePeriod`.\n // The `factor` describes units/value of StableToken, and is greater than or equal to 1.\n // The `updatePeriod` governs how often the `factor` is updated.\n // `factorLastUpdated` indicates when the inflation factor was last updated.\n struct InflationState {\n FixidityLib.Fraction rate;\n FixidityLib.Fraction factor;\n uint256 updatePeriod;\n uint256 factorLastUpdated;\n }\n\n InflationState inflationState;\n\n // The registry ID of the exchange contract with permission to mint and burn this token.\n // Unique per StableToken instance.\n bytes32 exchangeRegistryId;\n\n /**\n * @notice Recomputes and updates inflation factor if more than `updatePeriod`\n * has passed since last update.\n */\n modifier updateInflationFactor() {\n FixidityLib.Fraction memory updatedInflationFactor;\n uint256 lastUpdated;\n\n (updatedInflationFactor, lastUpdated) = getUpdatedInflationFactor();\n\n if (lastUpdated != inflationState.factorLastUpdated) {\n inflationState.factor = updatedInflationFactor;\n inflationState.factorLastUpdated = lastUpdated;\n emit InflationFactorUpdated(inflationState.factor.unwrap(), inflationState.factorLastUpdated);\n }\n _;\n }\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return Storage version of the contract.\n * @return Major version of the contract.\n * @return Minor version of the contract.\n * @return Patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 2, 0, 1);\n }\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @param _name The name of the stable token (English)\n * @param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n * @param _decimals Tokens are divisible to this many decimal places.\n * @param registryAddress Address of the Registry contract.\n * @param inflationRate Weekly inflation rate.\n * @param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n * @param initialBalanceAddresses Array of addresses with an initial balance.\n * @param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n * @param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)\n */\n function initialize(\n string calldata _name,\n string calldata _symbol,\n uint8 _decimals,\n address registryAddress,\n uint256 inflationRate,\n uint256 inflationFactorUpdatePeriod,\n address[] calldata initialBalanceAddresses,\n uint256[] calldata initialBalanceValues,\n string calldata exchangeIdentifier\n ) external initializer {\n require(inflationRate != 0, \"Must provide a non-zero inflation rate\");\n require(inflationFactorUpdatePeriod > 0, \"inflationFactorUpdatePeriod must be > 0\");\n\n _transferOwnership(msg.sender);\n\n totalSupply_ = 0;\n name_ = _name;\n symbol_ = _symbol;\n decimals_ = _decimals;\n\n inflationState.rate = FixidityLib.wrap(inflationRate);\n inflationState.factor = FixidityLib.fixed1();\n inflationState.updatePeriod = inflationFactorUpdatePeriod;\n // solhint-disable-next-line not-rely-on-time\n inflationState.factorLastUpdated = now;\n\n require(initialBalanceAddresses.length == initialBalanceValues.length, \"Array length mismatch\");\n for (uint256 i = 0; i < initialBalanceAddresses.length; i = i.add(1)) {\n _mint(initialBalanceAddresses[i], initialBalanceValues[i]);\n }\n setRegistry(registryAddress);\n exchangeRegistryId = keccak256(abi.encodePacked(exchangeIdentifier));\n }\n\n /**\n * @notice Updates Inflation Parameters.\n * @param rate New rate.\n * @param updatePeriod How often inflationFactor is updated.\n */\n function setInflationParameters(uint256 rate, uint256 updatePeriod)\n external\n onlyOwner\n updateInflationFactor\n {\n require(rate != 0, \"Must provide a non-zero inflation rate.\");\n require(updatePeriod > 0, \"updatePeriod must be > 0\");\n inflationState.rate = FixidityLib.wrap(rate);\n inflationState.updatePeriod = updatePeriod;\n\n emit InflationParametersUpdated(\n rate,\n updatePeriod,\n // solhint-disable-next-line not-rely-on-time\n now\n );\n }\n\n /**\n * @notice Increase the allowance of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The increment of the amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function increaseAllowance(address spender, uint256 value)\n external\n updateInflationFactor\n returns (bool)\n {\n require(spender != address(0), \"reserved address 0x0 cannot have allowance\");\n uint256 oldValue = allowed[msg.sender][spender];\n uint256 newValue = oldValue.add(value);\n allowed[msg.sender][spender] = newValue;\n emit Approval(msg.sender, spender, newValue);\n return true;\n }\n\n /**\n * @notice Decrease the allowance of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The decrement of the amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function decreaseAllowance(address spender, uint256 value)\n external\n updateInflationFactor\n returns (bool)\n {\n uint256 oldValue = allowed[msg.sender][spender];\n uint256 newValue = oldValue.sub(value);\n allowed[msg.sender][spender] = newValue;\n emit Approval(msg.sender, spender, newValue);\n return true;\n }\n\n /**\n * @notice Approve a user to transfer StableToken on behalf of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function approve(address spender, uint256 value) external updateInflationFactor returns (bool) {\n require(spender != address(0), \"reserved address 0x0 cannot have allowance\");\n allowed[msg.sender][spender] = value;\n emit Approval(msg.sender, spender, value);\n return true;\n }\n\n /**\n * @notice Mints new StableToken and gives it to 'to'.\n * @param to The account for which to mint tokens.\n * @param value The amount of StableToken to mint.\n */\n function mint(address to, uint256 value) external updateInflationFactor returns (bool) {\n require(\n msg.sender == registry.getAddressForOrDie(getExchangeRegistryId()) ||\n msg.sender == registry.getAddressFor(VALIDATORS_REGISTRY_ID) ||\n msg.sender == registry.getAddressFor(GRANDA_MENTO_REGISTRY_ID),\n \"Sender not authorized to mint\"\n );\n return _mint(to, value);\n }\n\n /**\n * @notice Mints new StableToken and gives it to 'to'.\n * @param to The account for which to mint tokens.\n * @param value The amount of StableToken to mint.\n */\n function _mint(address to, uint256 value) private returns (bool) {\n require(to != address(0), \"0 is a reserved address\");\n if (value == 0) {\n return true;\n }\n\n uint256 units = _valueToUnits(inflationState.factor, value);\n totalSupply_ = totalSupply_.add(units);\n balances[to] = balances[to].add(units);\n emit Transfer(address(0), to, value);\n return true;\n }\n\n /**\n * @notice Transfer token for a specified address\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n * @param comment The transfer comment.\n * @return True if the transaction succeeds.\n */\n function transferWithComment(address to, uint256 value, string calldata comment)\n external\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n bool succeeded = transfer(to, value);\n emit TransferComment(comment);\n return succeeded;\n }\n\n /**\n * @notice Burns StableToken from the balance of msg.sender.\n * @param value The amount of StableToken to burn.\n */\n function burn(uint256 value) external updateInflationFactor returns (bool) {\n require(\n msg.sender == registry.getAddressForOrDie(getExchangeRegistryId()) ||\n msg.sender == registry.getAddressFor(GRANDA_MENTO_REGISTRY_ID),\n \"Sender not authorized to burn\"\n );\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(units <= balances[msg.sender], \"value exceeded balance of sender\");\n totalSupply_ = totalSupply_.sub(units);\n balances[msg.sender] = balances[msg.sender].sub(units);\n emit Transfer(msg.sender, address(0), units);\n return true;\n }\n\n /**\n * @notice Transfers StableToken from one address to another on behalf of a user.\n * @param from The address to transfer StableToken from.\n * @param to The address to transfer StableToken to.\n * @param value The amount of StableToken to transfer.\n * @return True if the transaction succeeds.\n */\n function transferFrom(address from, address to, uint256 value)\n external\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(to != address(0), \"transfer attempted to reserved address 0x0\");\n require(units <= balances[from], \"transfer value exceeded balance of sender\");\n require(\n value <= allowed[from][msg.sender],\n \"transfer value exceeded sender's allowance for recipient\"\n );\n\n balances[to] = balances[to].add(units);\n balances[from] = balances[from].sub(units);\n allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);\n emit Transfer(from, to, value);\n return true;\n }\n\n /**\n * @return The name of the stable token.\n */\n function name() external view returns (string memory) {\n return name_;\n }\n\n /**\n * @return The symbol of the stable token.\n */\n function symbol() external view returns (string memory) {\n return symbol_;\n }\n\n /**\n * @return The number of decimal places to which StableToken is divisible.\n */\n function decimals() external view returns (uint8) {\n return decimals_;\n }\n\n /**\n * @notice Gets the amount of owner's StableToken allowed to be spent by spender.\n * @param accountOwner The owner of the StableToken.\n * @param spender The spender of the StableToken.\n * @return The amount of StableToken owner is allowing spender to spend.\n */\n function allowance(address accountOwner, address spender) external view returns (uint256) {\n return allowed[accountOwner][spender];\n }\n\n /**\n * @notice Gets the balance of the specified address using the presently stored inflation factor.\n * @param accountOwner The address to query the balance of.\n * @return The balance of the specified address.\n */\n function balanceOf(address accountOwner) external view returns (uint256) {\n return unitsToValue(balances[accountOwner]);\n }\n\n /**\n * @return The total value of StableToken in existence\n * @dev Though totalSupply_ is stored in units, this returns value.\n */\n function totalSupply() external view returns (uint256) {\n return unitsToValue(totalSupply_);\n }\n\n /**\n * @notice gets inflation parameters.\n * @return rate\n * @return factor\n * @return updatePeriod\n * @return factorLastUpdated\n */\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256) {\n return (\n inflationState.rate.unwrap(),\n inflationState.factor.unwrap(),\n inflationState.updatePeriod,\n inflationState.factorLastUpdated\n );\n }\n\n /**\n * @notice Returns the units for a given value given the current inflation factor.\n * @param value The value to convert to units.\n * @return The units corresponding to `value` given the current inflation factor.\n * @dev We don't compute the updated inflationFactor here because\n * we assume any function calling this will have updated the inflation factor.\n */\n function valueToUnits(uint256 value) external view returns (uint256) {\n FixidityLib.Fraction memory updatedInflationFactor;\n\n (updatedInflationFactor, ) = getUpdatedInflationFactor();\n return _valueToUnits(updatedInflationFactor, value);\n }\n\n /**\n * @notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n * @dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\n * exchangeRegistryId was introduced after the initial release of cUSD's StableToken,\n * so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\n * exchangeRegistryId were to be correctly initialized, this function could be deprecated\n * in favor of using exchangeRegistryId directly.\n * @return Registry id for the corresponding exchange.\n */\n function getExchangeRegistryId() public view returns (bytes32) {\n if (exchangeRegistryId == bytes32(0)) {\n return EXCHANGE_REGISTRY_ID;\n } else {\n return exchangeRegistryId;\n }\n }\n\n /**\n * @notice Returns the value of a given number of units given the current inflation factor.\n * @param units The units to convert to value.\n * @return The value corresponding to `units` given the current inflation factor.\n */\n function unitsToValue(uint256 units) public view returns (uint256) {\n FixidityLib.Fraction memory updatedInflationFactor;\n\n (updatedInflationFactor, ) = getUpdatedInflationFactor();\n\n // We're ok using FixidityLib.divide here because updatedInflationFactor is\n // not going to surpass maxFixedDivisor any time soon.\n // Quick upper-bound estimation: if annual inflation were 5% (an order of\n // magnitude more than the initial proposal of 0.5%), in 500 years, the\n // inflation factor would be on the order of 10**10, which is still a safe\n // divisor.\n return FixidityLib.newFixed(units).divide(updatedInflationFactor).fromFixed();\n }\n\n /**\n * @notice Returns the units for a given value given the current inflation factor.\n * @param inflationFactor The current inflation factor.\n * @param value The value to convert to units.\n * @return The units corresponding to `value` given the current inflation factor.\n * @dev We assume any function calling this will have updated the inflation factor.\n */\n function _valueToUnits(FixidityLib.Fraction memory inflationFactor, uint256 value)\n private\n pure\n returns (uint256)\n {\n return inflationFactor.multiply(FixidityLib.newFixed(value)).fromFixed();\n }\n\n /**\n * @notice Computes the up-to-date inflation factor.\n * @return Current inflation factor.\n * @return Last time when the returned inflation factor was updated.\n */\n function getUpdatedInflationFactor() private view returns (FixidityLib.Fraction memory, uint256) {\n /* solhint-disable not-rely-on-time */\n if (now < inflationState.factorLastUpdated.add(inflationState.updatePeriod)) {\n return (inflationState.factor, inflationState.factorLastUpdated);\n }\n\n uint256 numerator;\n uint256 denominator;\n\n // TODO: handle retroactive updates given decreases to updatePeriod\n uint256 timesToApplyInflation = now.sub(inflationState.factorLastUpdated).div(\n inflationState.updatePeriod\n );\n\n (numerator, denominator) = fractionMulExp(\n inflationState.factor.unwrap(),\n FixidityLib.fixed1().unwrap(),\n inflationState.rate.unwrap(),\n FixidityLib.fixed1().unwrap(),\n timesToApplyInflation,\n decimals_\n );\n\n // This should never happen. If something went wrong updating the\n // inflation factor, keep the previous factor\n if (numerator == 0 || denominator == 0) {\n return (inflationState.factor, inflationState.factorLastUpdated);\n }\n\n FixidityLib.Fraction memory currentInflationFactor = FixidityLib.wrap(numerator).divide(\n FixidityLib.wrap(denominator)\n );\n uint256 lastUpdated = inflationState.factorLastUpdated.add(\n inflationState.updatePeriod.mul(timesToApplyInflation)\n );\n\n return (currentInflationFactor, lastUpdated);\n /* solhint-enable not-rely-on-time */\n }\n\n /**\n * @notice Transfers `value` from `msg.sender` to `to`\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n */\n // solhint-disable-next-line no-simple-event-func-name\n function transfer(address to, uint256 value)\n public\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n return _transfer(to, value);\n }\n\n /**\n * @notice Transfers StableToken from one address to another\n * @param to The address to transfer StableToken to.\n * @param value The amount of StableToken to be transferred.\n */\n function _transfer(address to, uint256 value) internal returns (bool) {\n require(to != address(0), \"transfer attempted to reserved address 0x0\");\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(balances[msg.sender] >= units, \"transfer value exceeded balance of sender\");\n balances[msg.sender] = balances[msg.sender].sub(units);\n balances[to] = balances[to].add(units);\n emit Transfer(msg.sender, to, value);\n return true;\n }\n\n /**\n * @notice Reserve balance for making payments for gas in this StableToken currency.\n * @param from The account to reserve balance from\n * @param value The amount of balance to reserve\n * @dev Note that this function is called by the protocol when paying for tx fees in this\n * currency. After the tx is executed, gas is refunded to the sender and credited to the\n * various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\n * by `creditGasFees` reflect the *net* gas fee payments for the transaction.\n */\n function debitGasFees(address from, uint256 value)\n external\n onlyVm\n onlyWhenNotFrozen\n updateInflationFactor\n {\n uint256 units = _valueToUnits(inflationState.factor, value);\n balances[from] = balances[from].sub(units);\n totalSupply_ = totalSupply_.sub(units);\n }\n\n /**\n * @notice Alternative function to credit balance after making payments\n * for gas in this StableToken currency.\n * @param from The account to debit balance from\n * @param feeRecipient Coinbase address\n * @param gatewayFeeRecipient Gateway address\n * @param communityFund Community fund address\n * @param tipTxFee Coinbase fee\n * @param baseTxFee Community fund fee\n * @param gatewayFee Gateway fee\n * @dev Note that this function is called by the protocol when paying for tx fees in this\n * currency. Before the tx is executed, gas is debited from the sender via a call to\n * `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\n * payments for the transaction.\n */\n function creditGasFees(\n address from,\n address feeRecipient,\n address gatewayFeeRecipient,\n address communityFund,\n uint256 refund,\n uint256 tipTxFee,\n uint256 gatewayFee,\n uint256 baseTxFee\n ) external onlyVm onlyWhenNotFrozen {\n uint256 units = _valueToUnits(inflationState.factor, refund);\n balances[from] = balances[from].add(units);\n\n units = units.add(_creditGas(from, communityFund, baseTxFee));\n units = units.add(_creditGas(from, feeRecipient, tipTxFee));\n units = units.add(_creditGas(from, gatewayFeeRecipient, gatewayFee));\n totalSupply_ = totalSupply_.add(units);\n }\n\n function _creditGas(address from, address to, uint256 value) internal returns (uint256) {\n if (to == address(0)) {\n return 0;\n }\n uint256 units = _valueToUnits(inflationState.factor, value);\n balances[to] = balances[to].add(units);\n emit Transfer(from, to, value);\n return units;\n }\n\n}\n", + "sourcePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol", + "ast": { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol", + "exportedSymbols": { + "StableToken": [ + 44644 + ] + }, + "id": 44645, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 43270, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:137" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 43271, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46333, + "src": "26:59:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 43272, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46451, + "src": "86:63:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 43273, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46925, + "src": "150:64:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol", + "file": "./interfaces/IStableToken.sol", + "id": 43274, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 45383, + "src": "216:39:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol", + "file": "../common/interfaces/ICeloToken.sol", + "id": 43275, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 9411, + "src": "256:45:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 43276, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 9425, + "src": "302:57:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol", + "file": "../common/CalledByVm.sol", + "id": 43277, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 2801, + "src": "360:34:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 43278, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 4705, + "src": "395:37:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol", + "file": "../common/FixidityLib.sol", + "id": 43279, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 3611, + "src": "433:35:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol", + "file": "../common/Freezable.sol", + "id": 43280, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 3633, + "src": "469:33:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol", + "file": "../common/UsingRegistry.sol", + "id": 43281, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 8616, + "src": "503:37:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol", + "file": "../common/UsingPrecompiles.sol", + "id": 43282, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 8210, + "src": "541:40:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43283, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9424, + "src": "721:22:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9424", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 43284, + "nodeType": "InheritanceSpecifier", + "src": "721:22:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43285, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46450, + "src": "747:7:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$46450", + "typeString": "contract Ownable" + } + }, + "id": 43286, + "nodeType": "InheritanceSpecifier", + "src": "747:7:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43287, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "758:13:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 43288, + "nodeType": "InheritanceSpecifier", + "src": "758:13:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43289, + "name": "UsingRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8615, + "src": "775:13:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistry_$8615", + "typeString": "contract UsingRegistry" + } + }, + "id": 43290, + "nodeType": "InheritanceSpecifier", + "src": "775:13:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43291, + "name": "UsingPrecompiles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8209, + "src": "792:16:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingPrecompiles_$8209", + "typeString": "contract UsingPrecompiles" + } + }, + "id": 43292, + "nodeType": "InheritanceSpecifier", + "src": "792:16:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43293, + "name": "Freezable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3632, + "src": "812:9:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Freezable_$3632", + "typeString": "contract Freezable" + } + }, + "id": 43294, + "nodeType": "InheritanceSpecifier", + "src": "812:9:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43295, + "name": "CalledByVm", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2800, + "src": "825:10:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CalledByVm_$2800", + "typeString": "contract CalledByVm" + } + }, + "id": 43296, + "nodeType": "InheritanceSpecifier", + "src": "825:10:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43297, + "name": "IStableToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 45382, + "src": "839:12:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IStableToken_$45382", + "typeString": "contract IStableToken" + } + }, + "id": 43298, + "nodeType": "InheritanceSpecifier", + "src": "839:12:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43299, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46924, + "src": "855:6:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$46924", + "typeString": "contract IERC20" + } + }, + "id": 43300, + "nodeType": "InheritanceSpecifier", + "src": "855:6:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43301, + "name": "ICeloToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9410, + "src": "865:10:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloToken_$9410", + "typeString": "contract ICeloToken" + } + }, + "id": 43302, + "nodeType": "InheritanceSpecifier", + "src": "865:10:137" + } + ], + "contractDependencies": [ + 2800, + 3632, + 4704, + 8209, + 8615, + 9410, + 9424, + 45382, + 45995, + 46450, + 46924 + ], + "contractKind": "contract", + "documentation": "@title An ERC20 compliant token with adjustable supply.", + "fullyImplemented": true, + "id": 44644, + "linearizedBaseContracts": [ + 44644, + 9410, + 46924, + 45382, + 2800, + 3632, + 8209, + 8615, + 4704, + 46450, + 45995, + 9424 + ], + "name": "StableToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 43305, + "libraryName": { + "contractScope": null, + "id": 43303, + "name": "FixidityLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3610, + "src": "886:11:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FixidityLib_$3610", + "typeString": "library FixidityLib" + } + }, + "nodeType": "UsingForDirective", + "src": "880:43:137", + "typeName": { + "contractScope": null, + "id": 43304, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "902:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + } + }, + { + "id": 43308, + "libraryName": { + "contractScope": null, + "id": 43306, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46332, + "src": "932:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$46332", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "926:27:137", + "typeName": { + "id": 43307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "945:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 43314, + "name": "InflationFactorUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 43313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43310, + "indexed": false, + "name": "factor", + "nodeType": "VariableDeclaration", + "scope": 43314, + "src": "986:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "986:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43312, + "indexed": false, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43314, + "src": "1002:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1002:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "985:37:137" + }, + "src": "957:66:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43322, + "name": "InflationParametersUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 43321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43316, + "indexed": false, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1060:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1060:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43318, + "indexed": false, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1074:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1074:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43320, + "indexed": false, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1096:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1059:57:137" + }, + "src": "1027:90:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43330, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 43329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43324, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1136:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1136:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43326, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1158:18:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1158:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43328, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1178:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1178:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:57:137" + }, + "src": "1121:72:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43334, + "name": "TransferComment", + "nodeType": "EventDefinition", + "parameters": { + "id": 43333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43332, + "indexed": false, + "name": "comment", + "nodeType": "VariableDeclaration", + "scope": 43334, + "src": "1219:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43331, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1219:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1218:16:137" + }, + "src": "1197:38:137" + }, + { + "constant": true, + "id": 43342, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1239:86:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 43335, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1239:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4772616e64614d656e746f", + "id": 43339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1310:13:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868", + "typeString": "literal_string \"GrandaMento\"" + }, + "value": "GrandaMento" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868", + "typeString": "literal_string \"GrandaMento\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 43337, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47575, + "src": "1293:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 43338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1293:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 43340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1293:31:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 43336, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47582, + "src": "1283:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 43341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1283:42:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 43344, + "name": "name_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1330:21:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 43343, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1330:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43346, + "name": "symbol_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1355:23:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 43345, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1355:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43348, + "name": "decimals_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1382:24:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 43347, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1382:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43352, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1474:45:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 43351, + "keyType": { + "id": 43349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1482:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1474:27:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1493:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43354, + "name": "totalSupply_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1523:29:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1523:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43360, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1621:64:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 43359, + "keyType": { + "id": 43355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1629:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1621:47:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 43358, + "keyType": { + "id": 43356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1640:27:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1659:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "canonicalName": "StableToken.InflationState", + "id": 43369, + "members": [ + { + "constant": false, + "id": 43362, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2062:25:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43361, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2062:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43364, + "name": "factor", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2093:27:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43363, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2093:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43366, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2126:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2126:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43368, + "name": "factorLastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2152:25:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2152:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "InflationState", + "nodeType": "StructDefinition", + "scope": 44644, + "src": "2034:148:137", + "visibility": "public" + }, + { + "constant": false, + "id": 43371, + "name": "inflationState", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "2186:29:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState" + }, + "typeName": { + "contractScope": null, + "id": 43370, + "name": "InflationState", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 43369, + "src": "2186:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage_ptr", + "typeString": "struct StableToken.InflationState" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43373, + "name": "exchangeRegistryId", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "2349:26:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 43372, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2349:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 43418, + "nodeType": "Block", + "src": "2541:442:137", + "statements": [ + { + "assignments": [ + 43378 + ], + "declarations": [ + { + "constant": false, + "id": 43378, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 43418, + "src": "2547:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43377, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2547:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43379, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2547:50:137" + }, + { + "assignments": [ + 43381 + ], + "declarations": [ + { + "constant": false, + "id": 43381, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43418, + "src": "2603:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43380, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2603:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43382, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2603:19:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 43383, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43378, + "src": "2630:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 43384, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2654:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 43385, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2629:37:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43386, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "2669:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 43387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2669:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "2629:67:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43389, + "nodeType": "ExpressionStatement", + "src": "2629:67:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43390, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2707:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43391, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2722:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2722:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2707:47:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 43416, + "nodeType": "IfStatement", + "src": "2703:269:137", + "trueBody": { + "id": 43415, + "nodeType": "Block", + "src": "2756:216:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 43398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43394, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2764:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43396, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "2764:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43397, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43378, + "src": "2788:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "2764:46:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43399, + "nodeType": "ExpressionStatement", + "src": "2764:46:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43400, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2818:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2818:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43403, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2853:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2818:46:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43405, + "nodeType": "ExpressionStatement", + "src": "2818:46:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43407, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2900:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "2900:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "2900:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 43410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2900:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43411, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2932:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43412, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2932:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43406, + "name": "InflationFactorUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43314, + "src": "2877:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 43413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2877:88:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43414, + "nodeType": "EmitStatement", + "src": "2872:93:137" + } + ] + } + }, + { + "id": 43417, + "nodeType": "PlaceholderStatement", + "src": "2977:1:137" + } + ] + }, + "documentation": "@notice Recomputes and updates inflation factor if more than `updatePeriod`\nhas passed since last update.", + "id": 43419, + "name": "updateInflationFactor", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 43374, + "nodeType": "ParameterList", + "parameters": [], + "src": "2538:2:137" + }, + "src": "2508:475:137", + "visibility": "internal" + }, + { + "body": { + "id": 43436, + "nodeType": "Block", + "src": "3347:30:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 43430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3361:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "32", + "id": 43431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3364:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 43432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3367:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 43433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3370:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "id": 43434, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3360:12:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_1_by_1_$", + "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 1)" + } + }, + "functionReturnParameters": 43429, + "id": 43435, + "nodeType": "Return", + "src": "3353:19:137" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.", + "id": 43437, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43420, + "nodeType": "ParameterList", + "parameters": [], + "src": "3285:2:137" + }, + "returnParameters": { + "id": 43429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43422, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3311:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3311:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43424, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3320:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3320:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43426, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3329:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3329:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43428, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3338:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3338:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3310:36:137" + }, + "scope": 44644, + "src": "3260:117:137", + "stateMutability": "pure", + "superFunction": 9423, + "visibility": "external" + }, + { + "body": { + "id": 43445, + "nodeType": "Block", + "src": "3576:2:137", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 43446, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 43442, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43439, + "src": "3570:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 43443, + "modifierName": { + "argumentTypes": null, + "id": 43441, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "3556:13:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3556:19:137" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43439, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 43446, + "src": "3538:9:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43438, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3538:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3537:11:137" + }, + "returnParameters": { + "id": 43444, + "nodeType": "ParameterList", + "parameters": [], + "src": "3576:0:137" + }, + "scope": 44644, + "src": "3526:52:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 43583, + "nodeType": "Block", + "src": "4630:923:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43472, + "name": "inflationRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43456, + "src": "4644:13:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4661:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4644:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e2072617465", + "id": 43475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4664:40:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881", + "typeString": "literal_string \"Must provide a non-zero inflation rate\"" + }, + "value": "Must provide a non-zero inflation rate" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881", + "typeString": "literal_string \"Must provide a non-zero inflation rate\"" + } + ], + "id": 43471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "4636:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4636:69:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43477, + "nodeType": "ExpressionStatement", + "src": "4636:69:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43479, + "name": "inflationFactorUpdatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43458, + "src": "4719:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4749:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4719:31:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e2030", + "id": 43482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4752:41:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0", + "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\"" + }, + "value": "inflationFactorUpdatePeriod must be > 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0", + "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\"" + } + ], + "id": 43478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "4711:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4711:83:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43484, + "nodeType": "ExpressionStatement", + "src": "4711:83:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43486, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "4820:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4820:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 43485, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46449, + "src": "4801:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 43488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4801:30:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43489, + "nodeType": "ExpressionStatement", + "src": "4801:30:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43490, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "4838:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 43491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4853:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4838:16:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43493, + "nodeType": "ExpressionStatement", + "src": "4838:16:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43494, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43344, + "src": "4860:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43495, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43448, + "src": "4868:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "4860:13:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 43497, + "nodeType": "ExpressionStatement", + "src": "4860:13:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43498, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43346, + "src": "4879:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43499, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43450, + "src": "4889:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "4879:17:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 43501, + "nodeType": "ExpressionStatement", + "src": "4879:17:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43502, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "4902:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43503, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43452, + "src": "4914:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4902:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 43505, + "nodeType": "ExpressionStatement", + "src": "4902:21:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43506, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "4930:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43508, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "4930:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43511, + "name": "inflationRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43456, + "src": "4969:13:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43509, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "4952:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "4952:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4952:31:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "4930:53:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43514, + "nodeType": "ExpressionStatement", + "src": "4930:53:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43515, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "4989:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "4989:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 43518, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "5013:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "5013:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5013:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "4989:44:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43522, + "nodeType": "ExpressionStatement", + "src": "4989:44:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43523, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5039:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "5039:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43526, + "name": "inflationFactorUpdatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43458, + "src": "5069:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5039:57:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43528, + "nodeType": "ExpressionStatement", + "src": "5039:57:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43529, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5152:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "5152:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43532, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "5187:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5152:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43534, + "nodeType": "ExpressionStatement", + "src": "5152:38:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43536, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5205:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43538, + "name": "initialBalanceValues", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43464, + "src": "5239:20:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 43539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5239:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5205:61:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4172726179206c656e677468206d69736d61746368", + "id": 43541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5268:23:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea", + "typeString": "literal_string \"Array length mismatch\"" + }, + "value": "Array length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea", + "typeString": "literal_string \"Array length mismatch\"" + } + ], + "id": 43535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5197:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5197:95:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43543, + "nodeType": "ExpressionStatement", + "src": "5197:95:137" + }, + { + "body": { + "id": 43568, + "nodeType": "Block", + "src": "5368:73:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43560, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5382:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43562, + "indexExpression": { + "argumentTypes": null, + "id": 43561, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5406:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5382:26:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43563, + "name": "initialBalanceValues", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43464, + "src": "5410:20:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 43565, + "indexExpression": { + "argumentTypes": null, + "id": 43564, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5431:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5410:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43559, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43878, + "src": "5376:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5376:58:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 43567, + "nodeType": "ExpressionStatement", + "src": "5376:58:137" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43548, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5318:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43549, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5322:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5322:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5318:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 43569, + "initializationExpression": { + "assignments": [ + 43545 + ], + "declarations": [ + { + "constant": false, + "id": 43545, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 43569, + "src": "5303:9:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5303:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43547, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 43546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5315:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5303:13:137" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 43557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43552, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5354:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 43555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5364:1:137", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 43553, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5358:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "5358:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5358:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5354:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43558, + "nodeType": "ExpressionStatement", + "src": "5354:12:137" + }, + "nodeType": "ForStatement", + "src": "5298:143:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43571, + "name": "registryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43454, + "src": "5458:15:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 43570, + "name": "setRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8432, + "src": "5446:11:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 43572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5446:28:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43573, + "nodeType": "ExpressionStatement", + "src": "5446:28:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43574, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "5480:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43578, + "name": "exchangeIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43466, + "src": "5528:18:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 43576, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47575, + "src": "5511:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 43577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5511:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 43579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5511:36:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 43575, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47582, + "src": "5501:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 43580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5501:47:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5480:68:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 43582, + "nodeType": "ExpressionStatement", + "src": "5480:68:137" + } + ] + }, + "documentation": "@param _name The name of the stable token (English)\n@param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n@param _decimals Tokens are divisible to this many decimal places.\n@param registryAddress Address of the Registry contract.\n@param inflationRate Weekly inflation rate.\n@param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n@param initialBalanceAddresses Array of addresses with an initial balance.\n@param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n@param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)", + "id": 43584, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43469, + "modifierName": { + "argumentTypes": null, + "id": 43468, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "4618:11:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4618:11:137" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43448, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4303:21:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43447, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4303:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43450, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4330:23:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43449, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4330:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43452, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4359:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 43451, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4359:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43454, + "name": "registryAddress", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4380:23:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4380:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43456, + "name": "inflationRate", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4409:21:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4409:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43458, + "name": "inflationFactorUpdatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4436:35:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4436:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43461, + "name": "initialBalanceAddresses", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4477:42:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 43459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4477:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 43460, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4477:9:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43464, + "name": "initialBalanceValues", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4525:39:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 43462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4525:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43463, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4525:9:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43466, + "name": "exchangeIdentifier", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4570:34:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43465, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4570:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4297:311:137" + }, + "returnParameters": { + "id": 43470, + "nodeType": "ParameterList", + "parameters": [], + "src": "4630:0:137" + }, + "scope": 44644, + "src": "4278:1275:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43630, + "nodeType": "Block", + "src": "5825:368:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43596, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "5839:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5847:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5839:9:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e", + "id": 43599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5850:41:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c", + "typeString": "literal_string \"Must provide a non-zero inflation rate.\"" + }, + "value": "Must provide a non-zero inflation rate." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c", + "typeString": "literal_string \"Must provide a non-zero inflation rate.\"" + } + ], + "id": 43595, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5831:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5831:61:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43601, + "nodeType": "ExpressionStatement", + "src": "5831:61:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43603, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "5906:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5921:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5906:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "757064617465506572696f64206d757374206265203e2030", + "id": 43606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5924:26:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037", + "typeString": "literal_string \"updatePeriod must be > 0\"" + }, + "value": "updatePeriod must be > 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037", + "typeString": "literal_string \"updatePeriod must be > 0\"" + } + ], + "id": 43602, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5898:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5898:53:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43608, + "nodeType": "ExpressionStatement", + "src": "5898:53:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43609, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5957:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43611, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "5957:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43614, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "5996:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43612, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "5979:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "5979:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5979:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "5957:44:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43617, + "nodeType": "ExpressionStatement", + "src": "5957:44:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43618, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "6007:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43620, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "6007:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43621, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "6037:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6007:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43623, + "nodeType": "ExpressionStatement", + "src": "6007:42:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43625, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "6095:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 43626, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "6107:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 43627, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "6179:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43624, + "name": "InflationParametersUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43322, + "src": "6061:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256)" + } + }, + "id": 43628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6061:127:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43629, + "nodeType": "EmitStatement", + "src": "6056:132:137" + } + ] + }, + "documentation": "@notice Updates Inflation Parameters.\n@param rate New rate.\n@param updatePeriod How often inflationFactor is updated.", + "id": 43631, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43591, + "modifierName": { + "argumentTypes": null, + "id": 43590, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46383, + "src": "5787:9:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5787:9:137" + }, + { + "arguments": null, + "id": 43593, + "modifierName": { + "argumentTypes": null, + "id": 43592, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "5801:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5801:21:137" + } + ], + "name": "setInflationParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43586, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43631, + "src": "5734:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5734:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43588, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43631, + "src": "5748:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5748:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5733:36:137" + }, + "returnParameters": { + "id": 43594, + "nodeType": "ParameterList", + "parameters": [], + "src": "5825:0:137" + }, + "scope": 44644, + "src": "5702:491:137", + "stateMutability": "nonpayable", + "superFunction": 45349, + "visibility": "external" + }, + { + "body": { + "id": 43685, + "nodeType": "Block", + "src": "6592:296:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43643, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6606:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6625:1:137", + "subdenomination": null, + "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": 43644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6617:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6617:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6606:21:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365", + "id": 43648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6629:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + }, + "value": "reserved address 0x0 cannot have allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + } + ], + "id": 43642, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "6598:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6598:76:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43650, + "nodeType": "ExpressionStatement", + "src": "6598:76:137" + }, + { + "assignments": [ + 43652 + ], + "declarations": [ + { + "constant": false, + "id": 43652, + "name": "oldValue", + "nodeType": "VariableDeclaration", + "scope": 43685, + "src": "6680:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6680:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43659, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43653, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "6699:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43656, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43654, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6707:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6707:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6699:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43658, + "indexExpression": { + "argumentTypes": null, + "id": 43657, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6719:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6699:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6680:47:137" + }, + { + "assignments": [ + 43661 + ], + "declarations": [ + { + "constant": false, + "id": 43661, + "name": "newValue", + "nodeType": "VariableDeclaration", + "scope": 43685, + "src": "6733:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6733:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43666, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43664, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43635, + "src": "6765:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43662, + "name": "oldValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43652, + "src": "6752:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "6752:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6752:19:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6733:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43667, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "6777:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43671, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43668, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6785:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6785:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6777:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43672, + "indexExpression": { + "argumentTypes": null, + "id": 43670, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6797:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6777:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43673, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43661, + "src": "6808:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6777:39:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43675, + "nodeType": "ExpressionStatement", + "src": "6777:39:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43677, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6836:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6836:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43679, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6848:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43680, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43661, + "src": "6857:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43676, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "6827:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6827:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43682, + "nodeType": "EmitStatement", + "src": "6822:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6879:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43641, + "id": 43684, + "nodeType": "Return", + "src": "6872:11:137" + } + ] + }, + "documentation": "@notice Increase the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The increment of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43686, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43638, + "modifierName": { + "argumentTypes": null, + "id": 43637, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "6549:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6549:21:137" + } + ], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43633, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6500:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6500:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43635, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6517:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6517:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6499:32:137" + }, + "returnParameters": { + "id": 43641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6584:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6584:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6583:6:137" + }, + "scope": 44644, + "src": "6473:415:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43731, + "nodeType": "Block", + "src": "7287:214:137", + "statements": [ + { + "assignments": [ + 43698 + ], + "declarations": [ + { + "constant": false, + "id": 43698, + "name": "oldValue", + "nodeType": "VariableDeclaration", + "scope": 43731, + "src": "7293:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7293:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43705, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43699, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7312:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43702, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43700, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7320:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7320:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7312:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43704, + "indexExpression": { + "argumentTypes": null, + "id": 43703, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7332:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7312:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7293:47:137" + }, + { + "assignments": [ + 43707 + ], + "declarations": [ + { + "constant": false, + "id": 43707, + "name": "newValue", + "nodeType": "VariableDeclaration", + "scope": 43731, + "src": "7346:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7346:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43712, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43710, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43690, + "src": "7378:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43708, + "name": "oldValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43698, + "src": "7365:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "7365:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7365:19:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7346:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43713, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7390:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43717, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43714, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7398:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7398:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7390:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43718, + "indexExpression": { + "argumentTypes": null, + "id": 43716, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7410:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7390:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43719, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43707, + "src": "7421:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7390:39:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43721, + "nodeType": "ExpressionStatement", + "src": "7390:39:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43723, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7449:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7449:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43725, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7461:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43726, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43707, + "src": "7470:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43722, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "7440:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7440:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43728, + "nodeType": "EmitStatement", + "src": "7435:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7492:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43696, + "id": 43730, + "nodeType": "Return", + "src": "7485:11:137" + } + ] + }, + "documentation": "@notice Decrease the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The decrement of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43732, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43693, + "modifierName": { + "argumentTypes": null, + "id": 43692, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "7244:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7244:21:137" + } + ], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43688, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7195:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7195:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43690, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7212:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7212:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7194:32:137" + }, + "returnParameters": { + "id": 43696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43695, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7279:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43694, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7279:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7278:6:137" + }, + "scope": 44644, + "src": "7168:333:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43770, + "nodeType": "Block", + "src": "7885:193:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43744, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "7899:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7918:1:137", + "subdenomination": null, + "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": 43745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7910:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7910:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7899:21:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365", + "id": 43749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7922:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + }, + "value": "reserved address 0x0 cannot have allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + } + ], + "id": 43743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "7891:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7891:76:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43751, + "nodeType": "ExpressionStatement", + "src": "7891:76:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43752, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7973:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43756, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43753, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7981:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7981:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7973:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43757, + "indexExpression": { + "argumentTypes": null, + "id": 43755, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "7993:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7973:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43736, + "src": "8004:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7973:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43760, + "nodeType": "ExpressionStatement", + "src": "7973:36:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8029:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8029:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43764, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "8041:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43765, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43736, + "src": "8050:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43761, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "8020:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8020:36:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43767, + "nodeType": "EmitStatement", + "src": "8015:41:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8069:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43742, + "id": 43769, + "nodeType": "Return", + "src": "8062:11:137" + } + ] + }, + "documentation": "@notice Approve a user to transfer StableToken on behalf of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43771, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43739, + "modifierName": { + "argumentTypes": null, + "id": 43738, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "7848:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7848:21:137" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43734, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7807:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7807:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43736, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7824:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7824:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7806:32:137" + }, + "returnParameters": { + "id": 43742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43741, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7879:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43740, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7879:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7878:6:137" + }, + "scope": 44644, + "src": "7790:288:137", + "stateMutability": "nonpayable", + "superFunction": 46896, + "visibility": "external" + }, + { + "body": { + "id": 43815, + "nodeType": "Block", + "src": "8344:312:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8365:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8365:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43787, + "name": "getExchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44219, + "src": "8407:21:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 43788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8407:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43785, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8379:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9566, + "src": "8379:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8379:52:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8365:66:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43791, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8443:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43795, + "name": "VALIDATORS_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8369, + "src": "8480:22:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43793, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8457:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "8457:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8457:46:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8443:60:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8365:138:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43799, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8515:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8515:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43803, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43342, + "src": "8552:24:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43801, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8529:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "8529:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8529:48:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8515:62:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8365:212:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206d696e74", + "id": 43807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8585:31:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa", + "typeString": "literal_string \"Sender not authorized to mint\"" + }, + "value": "Sender not authorized to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa", + "typeString": "literal_string \"Sender not authorized to mint\"" + } + ], + "id": 43782, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "8350:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8350:272:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43809, + "nodeType": "ExpressionStatement", + "src": "8350:272:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43811, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43773, + "src": "8641:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43812, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43775, + "src": "8645:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43810, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43878, + "src": "8635:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8635:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 43781, + "id": 43814, + "nodeType": "Return", + "src": "8628:23:137" + } + ] + }, + "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.", + "id": 43816, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43778, + "modifierName": { + "argumentTypes": null, + "id": 43777, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "8307:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8307:21:137" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43773, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8271:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8271:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43775, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8283:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8283:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8270:27:137" + }, + "returnParameters": { + "id": 43781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43780, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8338:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43779, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8338:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8337:6:137" + }, + "scope": 44644, + "src": "8257:399:137", + "stateMutability": "nonpayable", + "superFunction": 45335, + "visibility": "external" + }, + { + "body": { + "id": 43877, + "nodeType": "Block", + "src": "8900:323:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43826, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "8914:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8928:1:137", + "subdenomination": null, + "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": 43827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8920:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8920:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8914:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "3020697320612072657365727665642061646472657373", + "id": 43831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8932:25:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a", + "typeString": "literal_string \"0 is a reserved address\"" + }, + "value": "0 is a reserved address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a", + "typeString": "literal_string \"0 is a reserved address\"" + } + ], + "id": 43825, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "8906:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8906:52:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43833, + "nodeType": "ExpressionStatement", + "src": "8906:52:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43834, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "8968:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8977:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8968:10:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 43840, + "nodeType": "IfStatement", + "src": "8964:42:137", + "trueBody": { + "id": 43839, + "nodeType": "Block", + "src": "8980:26:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8995:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43824, + "id": 43838, + "nodeType": "Return", + "src": "8988:11:137" + } + ] + } + }, + { + "assignments": [ + 43842 + ], + "declarations": [ + { + "constant": false, + "id": 43842, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 43877, + "src": "9012:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9012:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43848, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43844, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "9042:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "9042:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 43846, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "9065:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43843, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "9028:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 43847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9028:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9012:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43849, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "9077:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43852, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43842, + "src": "9109:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43850, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "9092:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "9092:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9092:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9077:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43855, + "nodeType": "ExpressionStatement", + "src": "9077:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43856, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "9121:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43858, + "indexExpression": { + "argumentTypes": null, + "id": 43857, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9130:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9121:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43863, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43842, + "src": "9153:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43859, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "9136:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43861, + "indexExpression": { + "argumentTypes": null, + "id": 43860, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9145:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9136:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "9136:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9136:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9121:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43866, + "nodeType": "ExpressionStatement", + "src": "9121:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9187:1:137", + "subdenomination": null, + "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": 43868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9179:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9179:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43871, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9191:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43872, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "9195:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43867, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "9170:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9170:31:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43874, + "nodeType": "EmitStatement", + "src": "9165:36:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9214:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43824, + "id": 43876, + "nodeType": "Return", + "src": "9207:11:137" + } + ] + }, + "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.", + "id": 43878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43818, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8850:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8850:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43820, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8862:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8862:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8849:27:137" + }, + "returnParameters": { + "id": 43824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43823, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8894:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43822, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8894:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8893:6:137" + }, + "scope": 44644, + "src": "8835:388:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 43906, + "nodeType": "Block", + "src": "9634:104:137", + "statements": [ + { + "assignments": [ + 43894 + ], + "declarations": [ + { + "constant": false, + "id": 43894, + "name": "succeeded", + "nodeType": "VariableDeclaration", + "scope": 43906, + "src": "9640:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43893, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9640:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43899, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43896, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43880, + "src": "9666:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43897, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43882, + "src": "9670:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43895, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44402, + "src": "9657:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9657:19:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9640:36:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43901, + "name": "comment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43884, + "src": "9703:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 43900, + "name": "TransferComment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43334, + "src": "9687:15:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 43902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9687:24:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43903, + "nodeType": "EmitStatement", + "src": "9682:29:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43904, + "name": "succeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43894, + "src": "9724:9:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 43892, + "id": 43905, + "nodeType": "Return", + "src": "9717:16:137" + } + ] + }, + "documentation": "@notice Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.\n@param comment The transfer comment.\n@return True if the transaction succeeds.", + "id": 43907, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43887, + "modifierName": { + "argumentTypes": null, + "id": 43886, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "9569:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9569:21:137" + }, + { + "arguments": null, + "id": 43889, + "modifierName": { + "argumentTypes": null, + "id": 43888, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "9595:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9595:17:137" + } + ], + "name": "transferWithComment", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43880, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9500:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9500:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43882, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9512:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9512:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43884, + "name": "comment", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9527:23:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43883, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9527:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9499:52:137" + }, + "returnParameters": { + "id": 43892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43891, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9626:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43890, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9626:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9625:6:137" + }, + "scope": 44644, + "src": "9471:267:137", + "stateMutability": "nonpayable", + "superFunction": 9394, + "visibility": "external" + }, + { + "body": { + "id": 43985, + "nodeType": "Block", + "src": "9945:527:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43917, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "9966:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9966:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43921, + "name": "getExchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44219, + "src": "10008:21:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 43922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10008:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43919, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "9980:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9566, + "src": "9980:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9980:52:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9966:66:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43925, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10044:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10044:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43929, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43342, + "src": "10081:24:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43927, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "10058:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "10058:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10058:48:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10044:62:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9966:140:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206275726e", + "id": 43933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10114:31:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d", + "typeString": "literal_string \"Sender not authorized to burn\"" + }, + "value": "Sender not authorized to burn" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d", + "typeString": "literal_string \"Sender not authorized to burn\"" + } + ], + "id": 43916, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "9951:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9951:200:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43935, + "nodeType": "ExpressionStatement", + "src": "9951:200:137" + }, + { + "assignments": [ + 43937 + ], + "declarations": [ + { + "constant": false, + "id": 43937, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 43985, + "src": "10157:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10157:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43943, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43939, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "10187:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43940, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "10187:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 43941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43909, + "src": "10210:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43938, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "10173:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 43942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10173:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10157:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43945, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10230:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43946, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10239:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43949, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43947, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10248:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10248:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10239:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10230:29:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "76616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 43951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10261:34:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c", + "typeString": "literal_string \"value exceeded balance of sender\"" + }, + "value": "value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c", + "typeString": "literal_string \"value exceeded balance of sender\"" + } + ], + "id": 43944, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "10222:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10222:74:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43953, + "nodeType": "ExpressionStatement", + "src": "10222:74:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43954, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "10302:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43957, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10334:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43955, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "10317:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "10317:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10317:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10302:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43960, + "nodeType": "ExpressionStatement", + "src": "10302:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43961, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10346:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43964, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43962, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10355:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10355:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10346:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43970, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10394:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43965, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10369:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43968, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43966, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10378:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10378:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10369:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "10369:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10369:31:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10346:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43973, + "nodeType": "ExpressionStatement", + "src": "10346:54:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43975, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10420:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10420:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10440:1:137", + "subdenomination": null, + "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": 43977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10432:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10432:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43980, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10444:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43974, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "10411:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10411:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43982, + "nodeType": "EmitStatement", + "src": "10406:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10463:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43915, + "id": 43984, + "nodeType": "Return", + "src": "10456:11:137" + } + ] + }, + "documentation": "@notice Burns StableToken from the balance of msg.sender.\n@param value The amount of StableToken to burn.", + "id": 43986, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43912, + "modifierName": { + "argumentTypes": null, + "id": 43911, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "9908:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9908:21:137" + } + ], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43909, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43986, + "src": "9884:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9884:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9883:15:137" + }, + "returnParameters": { + "id": 43915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43914, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43986, + "src": "9939:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43913, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9939:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9938:6:137" + }, + "scope": 44644, + "src": "9870:602:137", + "stateMutability": "nonpayable", + "superFunction": 45342, + "visibility": "external" + }, + { + "body": { + "id": 44086, + "nodeType": "Block", + "src": "10935:573:137", + "statements": [ + { + "assignments": [ + 44002 + ], + "declarations": [ + { + "constant": false, + "id": 44002, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44086, + "src": "10941:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10941:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44008, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44004, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "10971:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44005, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "10971:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44006, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "10994:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44003, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "10957:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10957:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10941:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11014:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11028:1:137", + "subdenomination": null, + "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": 44011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11020:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11020:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11014:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830", + "id": 44015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11032:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + }, + "value": "transfer attempted to reserved address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + } + ], + "id": 44009, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11006:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11006:71:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44017, + "nodeType": "ExpressionStatement", + "src": "11006:71:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44019, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11091:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44020, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11100:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44022, + "indexExpression": { + "argumentTypes": null, + "id": 44021, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11109:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11100:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11091:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 44024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11116:43:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + }, + "value": "transfer value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + } + ], + "id": 44018, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11083:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11083:77:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44026, + "nodeType": "ExpressionStatement", + "src": "11083:77:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11181:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44029, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11190:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44031, + "indexExpression": { + "argumentTypes": null, + "id": 44030, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11198:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11190:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44034, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44032, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11204:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11204:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11190:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11181:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e74", + "id": 44036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11223:58:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5", + "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\"" + }, + "value": "transfer value exceeded sender's allowance for recipient" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5", + "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\"" + } + ], + "id": 44027, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11166:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11166:121:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44038, + "nodeType": "ExpressionStatement", + "src": "11166:121:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44039, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11294:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44041, + "indexExpression": { + "argumentTypes": null, + "id": 44040, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11303:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11294:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44046, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11326:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44042, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11309:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44044, + "indexExpression": { + "argumentTypes": null, + "id": 44043, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11318:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11309:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "11309:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11309:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11294:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44049, + "nodeType": "ExpressionStatement", + "src": "11294:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44050, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11338:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44052, + "indexExpression": { + "argumentTypes": null, + "id": 44051, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11347:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11338:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44057, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11374:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44053, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11355:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44055, + "indexExpression": { + "argumentTypes": null, + "id": 44054, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11364:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11355:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "11355:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11355:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11338:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44060, + "nodeType": "ExpressionStatement", + "src": "11338:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44061, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11386:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44065, + "indexExpression": { + "argumentTypes": null, + "id": 44062, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11394:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11386:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44066, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44063, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11400:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11400:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11386:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44074, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11444:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44067, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11414:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44069, + "indexExpression": { + "argumentTypes": null, + "id": 44068, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11422:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11414:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44072, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44070, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11428:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11428:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11414:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "11414:29:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11414:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11386:64:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44077, + "nodeType": "ExpressionStatement", + "src": "11386:64:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44079, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11470:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44080, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11476:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44081, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11480:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44078, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "11461:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11461:25:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44083, + "nodeType": "EmitStatement", + "src": "11456:30:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 44084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11499:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 44000, + "id": 44085, + "nodeType": "Return", + "src": "11492:11:137" + } + ] + }, + "documentation": "@notice Transfers StableToken from one address to another on behalf of a user.\n@param from The address to transfer StableToken from.\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to transfer.\n@return True if the transaction succeeds.", + "id": 44087, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43995, + "modifierName": { + "argumentTypes": null, + "id": 43994, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "10870:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10870:21:137" + }, + { + "arguments": null, + "id": 43997, + "modifierName": { + "argumentTypes": null, + "id": 43996, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "10896:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10896:17:137" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43988, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10812:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10812:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43990, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10826:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10826:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43992, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10838:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43991, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10838:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10811:41:137" + }, + "returnParameters": { + "id": 44000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10927:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43998, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10927:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10926:6:137" + }, + "scope": 44644, + "src": "10790:718:137", + "stateMutability": "nonpayable", + "superFunction": 46907, + "visibility": "external" + }, + { + "body": { + "id": 44094, + "nodeType": "Block", + "src": "11621:23:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44092, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43344, + "src": "11634:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 44091, + "id": 44093, + "nodeType": "Return", + "src": "11627:12:137" + } + ] + }, + "documentation": "@return The name of the stable token.", + "id": 44095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44088, + "nodeType": "ParameterList", + "parameters": [], + "src": "11580:2:137" + }, + "returnParameters": { + "id": 44091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44090, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44095, + "src": "11606:13:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 44089, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11606:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11605:15:137" + }, + "scope": 44644, + "src": "11567:77:137", + "stateMutability": "view", + "superFunction": 9399, + "visibility": "external" + }, + { + "body": { + "id": 44102, + "nodeType": "Block", + "src": "11761:25:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44100, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43346, + "src": "11774:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 44099, + "id": 44101, + "nodeType": "Return", + "src": "11767:14:137" + } + ] + }, + "documentation": "@return The symbol of the stable token.", + "id": 44103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44096, + "nodeType": "ParameterList", + "parameters": [], + "src": "11720:2:137" + }, + "returnParameters": { + "id": 44099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44098, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44103, + "src": "11746:13:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 44097, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11746:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11745:15:137" + }, + "scope": 44644, + "src": "11705:81:137", + "stateMutability": "view", + "superFunction": 9404, + "visibility": "external" + }, + { + "body": { + "id": 44110, + "nodeType": "Block", + "src": "11929:27:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44108, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "11942:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 44107, + "id": 44109, + "nodeType": "Return", + "src": "11935:16:137" + } + ] + }, + "documentation": "@return The number of decimal places to which StableToken is divisible.", + "id": 44111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44104, + "nodeType": "ParameterList", + "parameters": [], + "src": "11896:2:137" + }, + "returnParameters": { + "id": 44107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44106, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44111, + "src": "11922:5:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 44105, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11922:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11921:7:137" + }, + "scope": 44644, + "src": "11879:77:137", + "stateMutability": "view", + "superFunction": 9409, + "visibility": "external" + }, + { + "body": { + "id": 44126, + "nodeType": "Block", + "src": "12328:48:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44120, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "12341:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44122, + "indexExpression": { + "argumentTypes": null, + "id": 44121, + "name": "accountOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44113, + "src": "12349:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12341:21:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44124, + "indexExpression": { + "argumentTypes": null, + "id": 44123, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44115, + "src": "12363:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12341:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44119, + "id": 44125, + "nodeType": "Return", + "src": "12334:37:137" + } + ] + }, + "documentation": "@notice Gets the amount of owner's StableToken allowed to be spent by spender.\n@param accountOwner The owner of the StableToken.\n@param spender The spender of the StableToken.\n@return The amount of StableToken owner is allowing spender to spend.", + "id": 44127, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44113, + "name": "accountOwner", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12257:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12257:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44115, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12279:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12279:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12256:39:137" + }, + "returnParameters": { + "id": 44119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44118, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12319:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12319:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12318:9:137" + }, + "scope": 44644, + "src": "12238:138:137", + "stateMutability": "view", + "superFunction": 46887, + "visibility": "external" + }, + { + "body": { + "id": 44140, + "nodeType": "Block", + "src": "12678:54:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44135, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "12704:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44137, + "indexExpression": { + "argumentTypes": null, + "id": 44136, + "name": "accountOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44129, + "src": "12713:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12704:22:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44134, + "name": "unitsToValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44248, + "src": "12691:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12691:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44133, + "id": 44139, + "nodeType": "Return", + "src": "12684:43:137" + } + ] + }, + "documentation": "@notice Gets the balance of the specified address using the presently stored inflation factor.\n@param accountOwner The address to query the balance of.\n@return The balance of the specified address.", + "id": 44141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44129, + "name": "accountOwner", + "nodeType": "VariableDeclaration", + "scope": 44141, + "src": "12624:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12624:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12623:22:137" + }, + "returnParameters": { + "id": 44133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44132, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44141, + "src": "12669:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12669:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12668:9:137" + }, + "scope": 44644, + "src": "12605:127:137", + "stateMutability": "view", + "superFunction": 46869, + "visibility": "external" + }, + { + "body": { + "id": 44150, + "nodeType": "Block", + "src": "12930:44:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44147, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "12956:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44146, + "name": "unitsToValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44248, + "src": "12943:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:26:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44145, + "id": 44149, + "nodeType": "Return", + "src": "12936:33:137" + } + ] + }, + "documentation": "@return The total value of StableToken in existence\n@dev Though totalSupply_ is stored in units, this returns value.", + "id": 44151, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44142, + "nodeType": "ParameterList", + "parameters": [], + "src": "12895:2:137" + }, + "returnParameters": { + "id": 44145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44151, + "src": "12921:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12921:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12920:9:137" + }, + "scope": 44644, + "src": "12875:99:137", + "stateMutability": "view", + "superFunction": 46862, + "visibility": "external" + }, + { + "body": { + "id": 44176, + "nodeType": "Block", + "src": "13218:173:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44162, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13239:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "13239:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "13239:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13239:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44166, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13275:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44167, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "13275:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "13275:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13275:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44170, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13313:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "13313:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44172, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13348:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "13348:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44174, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13231:155:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 44161, + "id": 44175, + "nodeType": "Return", + "src": "13224:162:137" + } + ] + }, + "documentation": "@notice gets inflation parameters.\n@return rate\n@return factor\n@return updatePeriod\n@return factorLastUpdated", + "id": 44177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getInflationParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44152, + "nodeType": "ParameterList", + "parameters": [], + "src": "13156:2:137" + }, + "returnParameters": { + "id": 44161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44154, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13182:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13182:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44156, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13191:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13191:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44158, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13200:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13200:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44160, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13209:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13209:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13181:36:137" + }, + "scope": 44644, + "src": "13125:266:137", + "stateMutability": "view", + "superFunction": 45374, + "visibility": "external" + }, + { + "body": { + "id": 44200, + "nodeType": "Block", + "src": "13843:181:137", + "statements": [ + { + "assignments": [ + 44187 + ], + "declarations": [ + { + "constant": false, + "id": 44187, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44200, + "src": "13849:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44186, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "13849:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44188, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13849:50:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44189, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44187, + "src": "13907:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + null + ], + "id": 44190, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13906:26:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$", + "typeString": "tuple(struct FixidityLib.Fraction memory,)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44191, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "13935:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 44192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13935:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "13906:56:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44194, + "nodeType": "ExpressionStatement", + "src": "13906:56:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44196, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44187, + "src": "13989:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 44197, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44179, + "src": "14013:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44195, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "13975:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13975:44:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44183, + "id": 44199, + "nodeType": "Return", + "src": "13968:51:137" + } + ] + }, + "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We don't compute the updated inflationFactor here because\nwe assume any function calling this will have updated the inflation factor.", + "id": 44201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "valueToUnits", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44179, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44201, + "src": "13796:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13796:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13795:15:137" + }, + "returnParameters": { + "id": 44183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44182, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44201, + "src": "13834:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13834:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13833:9:137" + }, + "scope": 44644, + "src": "13774:250:137", + "stateMutability": "view", + "superFunction": 45356, + "visibility": "external" + }, + { + "body": { + "id": 44218, + "nodeType": "Block", + "src": "14673:136:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44206, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "14683:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14713:1:137", + "subdenomination": null, + "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": 44207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14705:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": "bytes32" + }, + "id": 44209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14705:10:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14683:32:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 44216, + "nodeType": "Block", + "src": "14765:40:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44214, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "14780:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 44205, + "id": 44215, + "nodeType": "Return", + "src": "14773:25:137" + } + ] + }, + "id": 44217, + "nodeType": "IfStatement", + "src": "14679:126:137", + "trueBody": { + "id": 44213, + "nodeType": "Block", + "src": "14717:42:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44211, + "name": "EXCHANGE_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8281, + "src": "14732:20:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 44205, + "id": 44212, + "nodeType": "Return", + "src": "14725:27:137" + } + ] + } + } + ] + }, + "documentation": "@notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n@dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\nexchangeRegistryId was introduced after the initial release of cUSD's StableToken,\nso exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\nexchangeRegistryId were to be correctly initialized, this function could be deprecated\nin favor of using exchangeRegistryId directly.\n@return Registry id for the corresponding exchange.", + "id": 44219, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getExchangeRegistryId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44202, + "nodeType": "ParameterList", + "parameters": [], + "src": "14640:2:137" + }, + "returnParameters": { + "id": 44205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44204, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44219, + "src": "14664:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44203, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14664:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14663:9:137" + }, + "scope": 44644, + "src": "14610:199:137", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 44247, + "nodeType": "Block", + "src": "15119:596:137", + "statements": [ + { + "assignments": [ + 44229 + ], + "declarations": [ + { + "constant": false, + "id": 44229, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44247, + "src": "15125:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44228, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "15125:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44230, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "15125:50:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44231, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44229, + "src": "15183:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + null + ], + "id": 44232, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "15182:26:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$", + "typeString": "tuple(struct FixidityLib.Fraction memory,)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44233, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "15211:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 44234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15211:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "15182:56:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44236, + "nodeType": "ExpressionStatement", + "src": "15182:56:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44242, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44229, + "src": "15675:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44239, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44221, + "src": "15661:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44237, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "15640:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3093, + "src": "15640:20:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44241, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "divide", + "nodeType": "MemberAccess", + "referencedDeclaration": 3515, + "src": "15640:34:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:58:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fromFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3106, + "src": "15640:68:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:70:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44225, + "id": 44246, + "nodeType": "Return", + "src": "15633:77:137" + } + ] + }, + "documentation": "@notice Returns the value of a given number of units given the current inflation factor.\n@param units The units to convert to value.\n@return The value corresponding to `units` given the current inflation factor.", + "id": 44248, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unitsToValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44221, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44248, + "src": "15074:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15074:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15073:15:137" + }, + "returnParameters": { + "id": 44225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44224, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44248, + "src": "15110:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15110:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15109:9:137" + }, + "scope": 44644, + "src": "15052:663:137", + "stateMutability": "view", + "superFunction": 45363, + "visibility": "public" + }, + { + "body": { + "id": 44267, + "nodeType": "Block", + "src": "16221:83:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44252, + "src": "16280:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44259, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "16259:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3093, + "src": "16259:20:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16259:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 44257, + "name": "inflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44250, + "src": "16234:15:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44258, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "multiply", + "nodeType": "MemberAccess", + "referencedDeclaration": 3447, + "src": "16234:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16234:53:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fromFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3106, + "src": "16234:63:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16234:65:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44256, + "id": 44266, + "nodeType": "Return", + "src": "16227:72:137" + } + ] + }, + "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param inflationFactor The current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We assume any function calling this will have updated the inflation factor.", + "id": 44268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_valueToUnits", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44250, + "name": "inflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16116:43:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44249, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "16116:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44252, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16161:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16161:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16115:60:137" + }, + "returnParameters": { + "id": 44256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44255, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16210:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16210:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16209:9:137" + }, + "scope": 44644, + "src": "16093:211:137", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 44382, + "nodeType": "Block", + "src": "16582:1310:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44275, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "16635:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44279, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16678:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44280, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "16678:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44276, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16641:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44277, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16641:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "16641:36:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16641:65:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16635:71:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44290, + "nodeType": "IfStatement", + "src": "16631:156:137", + "trueBody": { + "id": 44289, + "nodeType": "Block", + "src": "16708:79:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44283, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16724:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "16724:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44285, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16747:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16747:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44287, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16723:57:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44288, + "nodeType": "Return", + "src": "16716:64:137" + } + ] + } + }, + { + "assignments": [ + 44292 + ], + "declarations": [ + { + "constant": false, + "id": 44292, + "name": "numerator", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16793:17:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16793:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44293, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "16793:17:137" + }, + { + "assignments": [ + 44295 + ], + "declarations": [ + { + "constant": false, + "id": 44295, + "name": "denominator", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16816:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16816:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44296, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "16816:19:137" + }, + { + "assignments": [ + 44298 + ], + "declarations": [ + { + "constant": false, + "id": 44298, + "name": "timesToApplyInflation", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16914:29:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16914:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44308, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44305, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16999:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "16999:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44301, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16954:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44302, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16954:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44299, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "16946:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "16946:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16946:41:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 46265, + "src": "16946:45:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16946:86:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16914:118:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44309, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17040:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44310, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17051:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44311, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "17039:24:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44313, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17088:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44314, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "17088:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44315, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17088:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17088:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 44317, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17126:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "17126:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17126:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17126:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17126:29:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44322, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17163:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44323, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "17163:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17163:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17163:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 44326, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17199:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "17199:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17199:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17199:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17199:29:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44331, + "name": "timesToApplyInflation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44298, + "src": "17236:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44332, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "17265:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 44312, + "name": "fractionMulExp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7713, + "src": "17066:14:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 44333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17066:214:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "17039:241:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44335, + "nodeType": "ExpressionStatement", + "src": "17039:241:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 44342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44336, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17411:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17424:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17411:14:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44339, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17429:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17444:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17429:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "17411:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44350, + "nodeType": "IfStatement", + "src": "17407:119:137", + "trueBody": { + "id": 44349, + "nodeType": "Block", + "src": "17447:79:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44343, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17463:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44344, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "17463:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44345, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17486:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "17486:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44347, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17462:57:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44348, + "nodeType": "Return", + "src": "17455:64:137" + } + ] + } + }, + { + "assignments": [ + 44354 + ], + "declarations": [ + { + "constant": false, + "id": 44354, + "name": "currentInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "17532:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44353, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "17532:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44365, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44362, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17644:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44360, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17627:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "17627:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17627:29:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44357, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17602:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44355, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17585:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "17585:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17585:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "divide", + "nodeType": "MemberAccess", + "referencedDeclaration": 3515, + "src": "17585:34:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17585:77:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17532:130:137" + }, + { + "assignments": [ + 44367 + ], + "declarations": [ + { + "constant": false, + "id": 44367, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "17668:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17668:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44377, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44374, + "name": "timesToApplyInflation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44298, + "src": "17766:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44371, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17734:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "17734:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 46249, + "src": "17734:31:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17734:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44368, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17690:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44369, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "17690:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "17690:36:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17690:104:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17668:126:137" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44378, + "name": "currentInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44354, + "src": "17809:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 44379, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44367, + "src": "17833:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44380, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17808:37:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44381, + "nodeType": "Return", + "src": "17801:44:137" + } + ] + }, + "documentation": "@notice Computes the up-to-date inflation factor.\n@return Current inflation factor.\n@return Last time when the returned inflation factor was updated.", + "id": 44383, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUpdatedInflationFactor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44269, + "nodeType": "ParameterList", + "parameters": [], + "src": "16519:2:137" + }, + "returnParameters": { + "id": 44274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "16544:27:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44270, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "16544:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44273, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "16573:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44272, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16573:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16543:38:137" + }, + "scope": 44644, + "src": "16485:1407:137", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 44401, + "nodeType": "Block", + "src": "18238:38:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44397, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44385, + "src": "18261:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44398, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44387, + "src": "18265:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44396, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44472, + "src": "18251:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 44399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18251:20:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 44395, + "id": 44400, + "nodeType": "Return", + "src": "18244:27:137" + } + ] + }, + "documentation": "@notice Transfers `value` from `msg.sender` to `to`\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 44402, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44390, + "modifierName": { + "argumentTypes": null, + "id": 44389, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "18173:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18173:21:137" + }, + { + "arguments": null, + "id": 44392, + "modifierName": { + "argumentTypes": null, + "id": 44391, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "18199:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18199:17:137" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44385, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18131:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18131:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44387, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18143:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18143:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18130:27:137" + }, + "returnParameters": { + "id": 44395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44394, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18230:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44393, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18230:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18229:6:137" + }, + "scope": 44644, + "src": "18113:163:137", + "stateMutability": "nonpayable", + "superFunction": 46878, + "visibility": "public" + }, + { + "body": { + "id": 44471, + "nodeType": "Block", + "src": "18543:399:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44412, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18557:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18571:1:137", + "subdenomination": null, + "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": 44413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18563:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18563:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "18557:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830", + "id": 44417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18575:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + }, + "value": "transfer attempted to reserved address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + } + ], + "id": 44411, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "18549:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18549:71:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44419, + "nodeType": "ExpressionStatement", + "src": "18549:71:137" + }, + { + "assignments": [ + 44421 + ], + "declarations": [ + { + "constant": false, + "id": 44421, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44471, + "src": "18626:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18626:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44427, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44423, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "18656:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44424, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "18656:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44425, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44406, + "src": "18679:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44422, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "18642:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18642:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18626:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44429, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18699:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44432, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44430, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18708:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18708:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18699:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 44433, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18723:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18699:29:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 44435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18730:43:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + }, + "value": "transfer value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + } + ], + "id": 44428, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "18691:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18691:83:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44437, + "nodeType": "ExpressionStatement", + "src": "18691:83:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44438, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18780:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44441, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44439, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18789:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18789:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18780:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44447, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18828:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44442, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18803:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44445, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44443, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18812:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18812:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18803:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "18803:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18803:31:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18780:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44450, + "nodeType": "ExpressionStatement", + "src": "18780:54:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44451, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18840:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44453, + "indexExpression": { + "argumentTypes": null, + "id": 44452, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18849:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18840:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44458, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18872:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44454, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18855:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44456, + "indexExpression": { + "argumentTypes": null, + "id": 44455, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18864:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18855:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "18855:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18855:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18840:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44461, + "nodeType": "ExpressionStatement", + "src": "18840:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44463, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18898:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18898:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 44465, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18910:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44466, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44406, + "src": "18914:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44462, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "18889:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18889:31:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44468, + "nodeType": "EmitStatement", + "src": "18884:36:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 44469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18933:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 44410, + "id": 44470, + "nodeType": "Return", + "src": "18926:11:137" + } + ] + }, + "documentation": "@notice Transfers StableToken from one address to another\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to be transferred.", + "id": 44472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44404, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18492:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18492:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44406, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18504:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18504:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18491:27:137" + }, + "returnParameters": { + "id": 44410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44409, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18537:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18537:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18536:6:137" + }, + "scope": 44644, + "src": "18473:469:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 44511, + "nodeType": "Block", + "src": "19632:162:137", + "statements": [ + { + "assignments": [ + 44486 + ], + "declarations": [ + { + "constant": false, + "id": 44486, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44511, + "src": "19638:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19638:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44492, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44488, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "19668:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44489, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "19668:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44490, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44476, + "src": "19691:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44487, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "19654:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19654:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19638:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44493, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "19703:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44495, + "indexExpression": { + "argumentTypes": null, + "id": 44494, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44474, + "src": "19712:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "19703:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44500, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44486, + "src": "19739:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44496, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "19720:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44498, + "indexExpression": { + "argumentTypes": null, + "id": 44497, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44474, + "src": "19729:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19720:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "19720:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19720:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19703:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44503, + "nodeType": "ExpressionStatement", + "src": "19703:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44504, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "19751:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44507, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44486, + "src": "19783:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44505, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "19766:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "19766:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19766:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19751:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44510, + "nodeType": "ExpressionStatement", + "src": "19751:38:137" + } + ] + }, + "documentation": "@notice Reserve balance for making payments for gas in this StableToken currency.\n@param from The account to reserve balance from\n@param value The amount of balance to reserve\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. After the tx is executed, gas is refunded to the sender and credited to the\nvarious tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\nby `creditGasFees` reflect the *net* gas fee payments for the transaction.", + "id": 44512, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44479, + "modifierName": { + "argumentTypes": null, + "id": 44478, + "name": "onlyVm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "19575:6:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19575:6:137" + }, + { + "arguments": null, + "id": 44481, + "modifierName": { + "argumentTypes": null, + "id": 44480, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "19586:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19586:17:137" + }, + { + "arguments": null, + "id": 44483, + "modifierName": { + "argumentTypes": null, + "id": 44482, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "19608:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19608:21:137" + } + ], + "name": "debitGasFees", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44474, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44512, + "src": "19529:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19529:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44476, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44512, + "src": "19543:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19543:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19528:29:137" + }, + "returnParameters": { + "id": 44484, + "nodeType": "ParameterList", + "parameters": [], + "src": "19632:0:137" + }, + "scope": 44644, + "src": "19507:287:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 44594, + "nodeType": "Block", + "src": "20794:370:137", + "statements": [ + { + "assignments": [ + 44536 + ], + "declarations": [ + { + "constant": false, + "id": 44536, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44594, + "src": "20800:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20800:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44542, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44538, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "20830:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "20830:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44540, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44522, + "src": "20853:6:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44537, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "20816:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20816:44:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20800:60:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44543, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "20866:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44545, + "indexExpression": { + "argumentTypes": null, + "id": 44544, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20875:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20866:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44550, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20902:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44546, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "20883:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44548, + "indexExpression": { + "argumentTypes": null, + "id": 44547, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20892:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20883:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20883:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20883:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20866:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44553, + "nodeType": "ExpressionStatement", + "src": "20866:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44554, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20915:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44558, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20944:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44559, + "name": "communityFund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44520, + "src": "20950:13:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44560, + "name": "baseTxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44528, + "src": "20965:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44557, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "20933:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20933:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44555, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20923:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20923:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20923:53:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20915:61:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44564, + "nodeType": "ExpressionStatement", + "src": "20915:61:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44565, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20982:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44569, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "21011:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44570, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44516, + "src": "21017:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44571, + "name": "tipTxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44524, + "src": "21031:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44568, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "21000:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21000:40:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44566, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20990:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20990:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20990:51:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20982:59:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44575, + "nodeType": "ExpressionStatement", + "src": "20982:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44576, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21047:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44580, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "21076:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44581, + "name": "gatewayFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44518, + "src": "21082:19:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44582, + "name": "gatewayFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44526, + "src": "21103:10:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44579, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "21065:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21065:49:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44577, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21055:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21055:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21055:60:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21047:68:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44586, + "nodeType": "ExpressionStatement", + "src": "21047:68:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44587, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "21121:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44590, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21153:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44588, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "21136:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21136:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21136:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21121:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44593, + "nodeType": "ExpressionStatement", + "src": "21121:38:137" + } + ] + }, + "documentation": "@notice Alternative function to credit balance after making payments\nfor gas in this StableToken currency.\n@param from The account to debit balance from\n@param feeRecipient Coinbase address\n@param gatewayFeeRecipient Gateway address\n@param communityFund Community fund address\n@param tipTxFee Coinbase fee\n@param baseTxFee Community fund fee\n@param gatewayFee Gateway fee\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. Before the tx is executed, gas is debited from the sender via a call to\n`debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\npayments for the transaction.", + "id": 44595, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44531, + "modifierName": { + "argumentTypes": null, + "id": 44530, + "name": "onlyVm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "20769:6:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20769:6:137" + }, + { + "arguments": null, + "id": 44533, + "modifierName": { + "argumentTypes": null, + "id": 44532, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "20776:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20776:17:137" + } + ], + "name": "creditGasFees", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44514, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20568:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20568:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44516, + "name": "feeRecipient", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20586:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44515, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20586:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44518, + "name": "gatewayFeeRecipient", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20612:27:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20612:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44520, + "name": "communityFund", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20645:21:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20645:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44522, + "name": "refund", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20672:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20672:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44524, + "name": "tipTxFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20692:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20692:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44526, + "name": "gatewayFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20714:18:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20714:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44528, + "name": "baseTxFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20738:17:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20738:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20562:197:137" + }, + "returnParameters": { + "id": 44534, + "nodeType": "ParameterList", + "parameters": [], + "src": "20794:0:137" + }, + "scope": 44644, + "src": "20540:624:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 44642, + "nodeType": "Block", + "src": "21256:218:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44606, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21266:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21280:1:137", + "subdenomination": null, + "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": 44607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21272:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21272:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21266:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44614, + "nodeType": "IfStatement", + "src": "21262:45:137", + "trueBody": { + "id": 44613, + "nodeType": "Block", + "src": "21284:23:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21299:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 44605, + "id": 44612, + "nodeType": "Return", + "src": "21292:8:137" + } + ] + } + }, + { + "assignments": [ + 44616 + ], + "declarations": [ + { + "constant": false, + "id": 44616, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44642, + "src": "21312:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21312:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44622, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44618, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "21342:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "21342:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44620, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44601, + "src": "21365:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44617, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "21328:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21328:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21312:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44623, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "21377:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44625, + "indexExpression": { + "argumentTypes": null, + "id": 44624, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21386:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21377:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44630, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44616, + "src": "21409:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44626, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "21392:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44628, + "indexExpression": { + "argumentTypes": null, + "id": 44627, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21401:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21392:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21392:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21392:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21377:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44633, + "nodeType": "ExpressionStatement", + "src": "21377:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44635, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44597, + "src": "21435:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44636, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21441:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44637, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44601, + "src": "21445:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44634, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "21426:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21426:25:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44639, + "nodeType": "EmitStatement", + "src": "21421:30:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44640, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44616, + "src": "21464:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44605, + "id": 44641, + "nodeType": "Return", + "src": "21457:12:137" + } + ] + }, + "documentation": null, + "id": 44643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_creditGas", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44597, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21188:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21188:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44599, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21202:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21202:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44601, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21214:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21214:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21187:41:137" + }, + "returnParameters": { + "id": 44605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44604, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21247:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21247:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21246:9:137" + }, + "scope": 44644, + "src": "21168:306:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 44645, + "src": "695:20782:137" + } + ], + "src": "0:21478:137" + }, + "legacyAST": { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol", + "exportedSymbols": { + "StableToken": [ + 44644 + ] + }, + "id": 44645, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 43270, + "literals": [ + "solidity", + "^", + "0.5", + ".13" + ], + "nodeType": "PragmaDirective", + "src": "0:24:137" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 43271, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46333, + "src": "26:59:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", + "id": 43272, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46451, + "src": "86:63:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 43273, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 46925, + "src": "150:64:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol", + "file": "./interfaces/IStableToken.sol", + "id": 43274, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 45383, + "src": "216:39:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol", + "file": "../common/interfaces/ICeloToken.sol", + "id": 43275, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 9411, + "src": "256:45:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol", + "file": "../common/interfaces/ICeloVersionedContract.sol", + "id": 43276, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 9425, + "src": "302:57:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol", + "file": "../common/CalledByVm.sol", + "id": 43277, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 2801, + "src": "360:34:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol", + "file": "../common/Initializable.sol", + "id": 43278, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 4705, + "src": "395:37:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol", + "file": "../common/FixidityLib.sol", + "id": 43279, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 3611, + "src": "433:35:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol", + "file": "../common/Freezable.sol", + "id": 43280, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 3633, + "src": "469:33:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol", + "file": "../common/UsingRegistry.sol", + "id": 43281, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 8616, + "src": "503:37:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol", + "file": "../common/UsingPrecompiles.sol", + "id": 43282, + "nodeType": "ImportDirective", + "scope": 44645, + "sourceUnit": 8210, + "src": "541:40:137", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43283, + "name": "ICeloVersionedContract", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9424, + "src": "721:22:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloVersionedContract_$9424", + "typeString": "contract ICeloVersionedContract" + } + }, + "id": 43284, + "nodeType": "InheritanceSpecifier", + "src": "721:22:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43285, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46450, + "src": "747:7:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$46450", + "typeString": "contract Ownable" + } + }, + "id": 43286, + "nodeType": "InheritanceSpecifier", + "src": "747:7:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43287, + "name": "Initializable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4704, + "src": "758:13:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$4704", + "typeString": "contract Initializable" + } + }, + "id": 43288, + "nodeType": "InheritanceSpecifier", + "src": "758:13:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43289, + "name": "UsingRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8615, + "src": "775:13:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingRegistry_$8615", + "typeString": "contract UsingRegistry" + } + }, + "id": 43290, + "nodeType": "InheritanceSpecifier", + "src": "775:13:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43291, + "name": "UsingPrecompiles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8209, + "src": "792:16:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UsingPrecompiles_$8209", + "typeString": "contract UsingPrecompiles" + } + }, + "id": 43292, + "nodeType": "InheritanceSpecifier", + "src": "792:16:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43293, + "name": "Freezable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3632, + "src": "812:9:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Freezable_$3632", + "typeString": "contract Freezable" + } + }, + "id": 43294, + "nodeType": "InheritanceSpecifier", + "src": "812:9:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43295, + "name": "CalledByVm", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2800, + "src": "825:10:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CalledByVm_$2800", + "typeString": "contract CalledByVm" + } + }, + "id": 43296, + "nodeType": "InheritanceSpecifier", + "src": "825:10:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43297, + "name": "IStableToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 45382, + "src": "839:12:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IStableToken_$45382", + "typeString": "contract IStableToken" + } + }, + "id": 43298, + "nodeType": "InheritanceSpecifier", + "src": "839:12:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43299, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46924, + "src": "855:6:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$46924", + "typeString": "contract IERC20" + } + }, + "id": 43300, + "nodeType": "InheritanceSpecifier", + "src": "855:6:137" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 43301, + "name": "ICeloToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9410, + "src": "865:10:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICeloToken_$9410", + "typeString": "contract ICeloToken" + } + }, + "id": 43302, + "nodeType": "InheritanceSpecifier", + "src": "865:10:137" + } + ], + "contractDependencies": [ + 2800, + 3632, + 4704, + 8209, + 8615, + 9410, + 9424, + 45382, + 45995, + 46450, + 46924 + ], + "contractKind": "contract", + "documentation": "@title An ERC20 compliant token with adjustable supply.", + "fullyImplemented": true, + "id": 44644, + "linearizedBaseContracts": [ + 44644, + 9410, + 46924, + 45382, + 2800, + 3632, + 8209, + 8615, + 4704, + 46450, + 45995, + 9424 + ], + "name": "StableToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 43305, + "libraryName": { + "contractScope": null, + "id": 43303, + "name": "FixidityLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3610, + "src": "886:11:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FixidityLib_$3610", + "typeString": "library FixidityLib" + } + }, + "nodeType": "UsingForDirective", + "src": "880:43:137", + "typeName": { + "contractScope": null, + "id": 43304, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "902:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + } + }, + { + "id": 43308, + "libraryName": { + "contractScope": null, + "id": 43306, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 46332, + "src": "932:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$46332", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "926:27:137", + "typeName": { + "id": 43307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "945:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 43314, + "name": "InflationFactorUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 43313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43310, + "indexed": false, + "name": "factor", + "nodeType": "VariableDeclaration", + "scope": 43314, + "src": "986:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "986:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43312, + "indexed": false, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43314, + "src": "1002:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1002:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "985:37:137" + }, + "src": "957:66:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43322, + "name": "InflationParametersUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 43321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43316, + "indexed": false, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1060:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1060:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43318, + "indexed": false, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1074:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1074:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43320, + "indexed": false, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43322, + "src": "1096:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1059:57:137" + }, + "src": "1027:90:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43330, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 43329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43324, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1136:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1136:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43326, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1158:18:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1158:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43328, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43330, + "src": "1178:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1178:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:57:137" + }, + "src": "1121:72:137" + }, + { + "anonymous": false, + "documentation": null, + "id": 43334, + "name": "TransferComment", + "nodeType": "EventDefinition", + "parameters": { + "id": 43333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43332, + "indexed": false, + "name": "comment", + "nodeType": "VariableDeclaration", + "scope": 43334, + "src": "1219:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43331, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1219:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1218:16:137" + }, + "src": "1197:38:137" + }, + { + "constant": true, + "id": 43342, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1239:86:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 43335, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1239:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4772616e64614d656e746f", + "id": 43339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1310:13:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868", + "typeString": "literal_string \"GrandaMento\"" + }, + "value": "GrandaMento" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868", + "typeString": "literal_string \"GrandaMento\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 43337, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47575, + "src": "1293:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 43338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1293:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 43340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1293:31:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 43336, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47582, + "src": "1283:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 43341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1283:42:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 43344, + "name": "name_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1330:21:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 43343, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1330:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43346, + "name": "symbol_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1355:23:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 43345, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1355:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43348, + "name": "decimals_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1382:24:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 43347, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1382:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43352, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1474:45:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 43351, + "keyType": { + "id": 43349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1482:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1474:27:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1493:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43354, + "name": "totalSupply_", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1523:29:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1523:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43360, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "1621:64:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 43359, + "keyType": { + "id": 43355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1629:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1621:47:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 43358, + "keyType": { + "id": 43356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1640:27:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1659:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "canonicalName": "StableToken.InflationState", + "id": 43369, + "members": [ + { + "constant": false, + "id": 43362, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2062:25:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43361, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2062:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43364, + "name": "factor", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2093:27:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43363, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2093:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43366, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2126:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2126:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43368, + "name": "factorLastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43369, + "src": "2152:25:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2152:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "InflationState", + "nodeType": "StructDefinition", + "scope": 44644, + "src": "2034:148:137", + "visibility": "public" + }, + { + "constant": false, + "id": 43371, + "name": "inflationState", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "2186:29:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState" + }, + "typeName": { + "contractScope": null, + "id": 43370, + "name": "InflationState", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 43369, + "src": "2186:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage_ptr", + "typeString": "struct StableToken.InflationState" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43373, + "name": "exchangeRegistryId", + "nodeType": "VariableDeclaration", + "scope": 44644, + "src": "2349:26:137", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 43372, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2349:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 43418, + "nodeType": "Block", + "src": "2541:442:137", + "statements": [ + { + "assignments": [ + 43378 + ], + "declarations": [ + { + "constant": false, + "id": 43378, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 43418, + "src": "2547:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 43377, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "2547:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43379, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2547:50:137" + }, + { + "assignments": [ + 43381 + ], + "declarations": [ + { + "constant": false, + "id": 43381, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 43418, + "src": "2603:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43380, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2603:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43382, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2603:19:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 43383, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43378, + "src": "2630:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 43384, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2654:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 43385, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2629:37:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43386, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "2669:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 43387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2669:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "2629:67:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43389, + "nodeType": "ExpressionStatement", + "src": "2629:67:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43390, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2707:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43391, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2722:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2722:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2707:47:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 43416, + "nodeType": "IfStatement", + "src": "2703:269:137", + "trueBody": { + "id": 43415, + "nodeType": "Block", + "src": "2756:216:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 43398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43394, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2764:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43396, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "2764:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43397, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43378, + "src": "2788:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "2764:46:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43399, + "nodeType": "ExpressionStatement", + "src": "2764:46:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43400, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2818:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2818:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43403, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43381, + "src": "2853:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2818:46:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43405, + "nodeType": "ExpressionStatement", + "src": "2818:46:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43407, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2900:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "2900:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "2900:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 43410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2900:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43411, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "2932:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43412, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "2932:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43406, + "name": "InflationFactorUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43314, + "src": "2877:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 43413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2877:88:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43414, + "nodeType": "EmitStatement", + "src": "2872:93:137" + } + ] + } + }, + { + "id": 43417, + "nodeType": "PlaceholderStatement", + "src": "2977:1:137" + } + ] + }, + "documentation": "@notice Recomputes and updates inflation factor if more than `updatePeriod`\nhas passed since last update.", + "id": 43419, + "name": "updateInflationFactor", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 43374, + "nodeType": "ParameterList", + "parameters": [], + "src": "2538:2:137" + }, + "src": "2508:475:137", + "visibility": "internal" + }, + { + "body": { + "id": 43436, + "nodeType": "Block", + "src": "3347:30:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 43430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3361:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "32", + "id": 43431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3364:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 43432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3367:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 43433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3370:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "id": 43434, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3360:12:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_1_by_1_$", + "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 1)" + } + }, + "functionReturnParameters": 43429, + "id": 43435, + "nodeType": "Return", + "src": "3353:19:137" + } + ] + }, + "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.", + "id": 43437, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersionNumber", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43420, + "nodeType": "ParameterList", + "parameters": [], + "src": "3285:2:137" + }, + "returnParameters": { + "id": 43429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43422, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3311:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3311:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43424, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3320:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3320:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43426, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3329:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3329:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43428, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43437, + "src": "3338:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3338:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3310:36:137" + }, + "scope": 44644, + "src": "3260:117:137", + "stateMutability": "pure", + "superFunction": 9423, + "visibility": "external" + }, + { + "body": { + "id": 43445, + "nodeType": "Block", + "src": "3576:2:137", + "statements": [] + }, + "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization", + "id": 43446, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 43442, + "name": "test", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43439, + "src": "3570:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 43443, + "modifierName": { + "argumentTypes": null, + "id": 43441, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4704, + "src": "3556:13:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$", + "typeString": "type(contract Initializable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3556:19:137" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43439, + "name": "test", + "nodeType": "VariableDeclaration", + "scope": 43446, + "src": "3538:9:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43438, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3538:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3537:11:137" + }, + "returnParameters": { + "id": 43444, + "nodeType": "ParameterList", + "parameters": [], + "src": "3576:0:137" + }, + "scope": 44644, + "src": "3526:52:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 43583, + "nodeType": "Block", + "src": "4630:923:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43472, + "name": "inflationRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43456, + "src": "4644:13:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4661:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4644:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e2072617465", + "id": 43475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4664:40:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881", + "typeString": "literal_string \"Must provide a non-zero inflation rate\"" + }, + "value": "Must provide a non-zero inflation rate" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881", + "typeString": "literal_string \"Must provide a non-zero inflation rate\"" + } + ], + "id": 43471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "4636:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4636:69:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43477, + "nodeType": "ExpressionStatement", + "src": "4636:69:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43479, + "name": "inflationFactorUpdatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43458, + "src": "4719:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4749:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4719:31:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e2030", + "id": 43482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4752:41:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0", + "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\"" + }, + "value": "inflationFactorUpdatePeriod must be > 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0", + "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\"" + } + ], + "id": 43478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "4711:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4711:83:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43484, + "nodeType": "ExpressionStatement", + "src": "4711:83:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43486, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "4820:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4820:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 43485, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46449, + "src": "4801:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 43488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4801:30:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43489, + "nodeType": "ExpressionStatement", + "src": "4801:30:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43490, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "4838:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 43491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4853:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4838:16:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43493, + "nodeType": "ExpressionStatement", + "src": "4838:16:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43494, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43344, + "src": "4860:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43495, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43448, + "src": "4868:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "4860:13:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 43497, + "nodeType": "ExpressionStatement", + "src": "4860:13:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43498, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43346, + "src": "4879:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43499, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43450, + "src": "4889:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "4879:17:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 43501, + "nodeType": "ExpressionStatement", + "src": "4879:17:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43502, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "4902:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43503, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43452, + "src": "4914:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4902:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 43505, + "nodeType": "ExpressionStatement", + "src": "4902:21:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43506, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "4930:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43508, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "4930:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43511, + "name": "inflationRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43456, + "src": "4969:13:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43509, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "4952:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "4952:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4952:31:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "4930:53:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43514, + "nodeType": "ExpressionStatement", + "src": "4930:53:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43515, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "4989:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "4989:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 43518, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "5013:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "5013:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5013:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "4989:44:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43522, + "nodeType": "ExpressionStatement", + "src": "4989:44:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43523, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5039:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "5039:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43526, + "name": "inflationFactorUpdatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43458, + "src": "5069:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5039:57:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43528, + "nodeType": "ExpressionStatement", + "src": "5039:57:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43529, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5152:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "5152:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43532, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "5187:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5152:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43534, + "nodeType": "ExpressionStatement", + "src": "5152:38:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43536, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5205:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43538, + "name": "initialBalanceValues", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43464, + "src": "5239:20:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 43539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5239:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5205:61:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4172726179206c656e677468206d69736d61746368", + "id": 43541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5268:23:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea", + "typeString": "literal_string \"Array length mismatch\"" + }, + "value": "Array length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea", + "typeString": "literal_string \"Array length mismatch\"" + } + ], + "id": 43535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5197:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5197:95:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43543, + "nodeType": "ExpressionStatement", + "src": "5197:95:137" + }, + { + "body": { + "id": 43568, + "nodeType": "Block", + "src": "5368:73:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43560, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5382:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43562, + "indexExpression": { + "argumentTypes": null, + "id": 43561, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5406:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5382:26:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43563, + "name": "initialBalanceValues", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43464, + "src": "5410:20:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 43565, + "indexExpression": { + "argumentTypes": null, + "id": 43564, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5431:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5410:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43559, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43878, + "src": "5376:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5376:58:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 43567, + "nodeType": "ExpressionStatement", + "src": "5376:58:137" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43548, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5318:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43549, + "name": "initialBalanceAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43461, + "src": "5322:23:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 43550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5322:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5318:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 43569, + "initializationExpression": { + "assignments": [ + 43545 + ], + "declarations": [ + { + "constant": false, + "id": 43545, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 43569, + "src": "5303:9:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5303:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43547, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 43546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5315:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5303:13:137" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 43557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43552, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5354:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 43555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5364:1:137", + "subdenomination": null, + "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" + } + ], + "expression": { + "argumentTypes": null, + "id": 43553, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43545, + "src": "5358:1:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "5358:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5358:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5354:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43558, + "nodeType": "ExpressionStatement", + "src": "5354:12:137" + }, + "nodeType": "ForStatement", + "src": "5298:143:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43571, + "name": "registryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43454, + "src": "5458:15:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 43570, + "name": "setRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8432, + "src": "5446:11:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 43572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5446:28:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43573, + "nodeType": "ExpressionStatement", + "src": "5446:28:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43574, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "5480:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43578, + "name": "exchangeIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43466, + "src": "5528:18:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 43576, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47575, + "src": "5511:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 43577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5511:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 43579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5511:36:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 43575, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47582, + "src": "5501:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 43580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5501:47:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5480:68:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 43582, + "nodeType": "ExpressionStatement", + "src": "5480:68:137" + } + ] + }, + "documentation": "@param _name The name of the stable token (English)\n@param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n@param _decimals Tokens are divisible to this many decimal places.\n@param registryAddress Address of the Registry contract.\n@param inflationRate Weekly inflation rate.\n@param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n@param initialBalanceAddresses Array of addresses with an initial balance.\n@param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n@param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)", + "id": 43584, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43469, + "modifierName": { + "argumentTypes": null, + "id": 43468, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4703, + "src": "4618:11:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4618:11:137" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43448, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4303:21:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43447, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4303:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43450, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4330:23:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43449, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4330:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43452, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4359:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 43451, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4359:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43454, + "name": "registryAddress", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4380:23:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4380:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43456, + "name": "inflationRate", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4409:21:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4409:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43458, + "name": "inflationFactorUpdatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4436:35:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4436:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43461, + "name": "initialBalanceAddresses", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4477:42:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 43459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4477:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 43460, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4477:9:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43464, + "name": "initialBalanceValues", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4525:39:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 43462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4525:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43463, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4525:9:137", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43466, + "name": "exchangeIdentifier", + "nodeType": "VariableDeclaration", + "scope": 43584, + "src": "4570:34:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43465, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4570:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4297:311:137" + }, + "returnParameters": { + "id": 43470, + "nodeType": "ParameterList", + "parameters": [], + "src": "4630:0:137" + }, + "scope": 44644, + "src": "4278:1275:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43630, + "nodeType": "Block", + "src": "5825:368:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43596, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "5839:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5847:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5839:9:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e", + "id": 43599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5850:41:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c", + "typeString": "literal_string \"Must provide a non-zero inflation rate.\"" + }, + "value": "Must provide a non-zero inflation rate." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c", + "typeString": "literal_string \"Must provide a non-zero inflation rate.\"" + } + ], + "id": 43595, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5831:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5831:61:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43601, + "nodeType": "ExpressionStatement", + "src": "5831:61:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43603, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "5906:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5921:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5906:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "757064617465506572696f64206d757374206265203e2030", + "id": 43606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5924:26:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037", + "typeString": "literal_string \"updatePeriod must be > 0\"" + }, + "value": "updatePeriod must be > 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037", + "typeString": "literal_string \"updatePeriod must be > 0\"" + } + ], + "id": 43602, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "5898:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5898:53:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43608, + "nodeType": "ExpressionStatement", + "src": "5898:53:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43609, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "5957:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43611, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "5957:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43614, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "5996:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43612, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "5979:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 43613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "5979:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 43615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5979:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "src": "5957:44:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 43617, + "nodeType": "ExpressionStatement", + "src": "5957:44:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43618, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "6007:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43620, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "6007:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43621, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "6037:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6007:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43623, + "nodeType": "ExpressionStatement", + "src": "6007:42:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43625, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43586, + "src": "6095:4:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 43626, + "name": "updatePeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43588, + "src": "6107:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 43627, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "6179:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43624, + "name": "InflationParametersUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43322, + "src": "6061:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256)" + } + }, + "id": 43628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6061:127:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43629, + "nodeType": "EmitStatement", + "src": "6056:132:137" + } + ] + }, + "documentation": "@notice Updates Inflation Parameters.\n@param rate New rate.\n@param updatePeriod How often inflationFactor is updated.", + "id": 43631, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43591, + "modifierName": { + "argumentTypes": null, + "id": 43590, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46383, + "src": "5787:9:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5787:9:137" + }, + { + "arguments": null, + "id": 43593, + "modifierName": { + "argumentTypes": null, + "id": 43592, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "5801:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5801:21:137" + } + ], + "name": "setInflationParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43586, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 43631, + "src": "5734:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5734:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43588, + "name": "updatePeriod", + "nodeType": "VariableDeclaration", + "scope": 43631, + "src": "5748:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5748:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5733:36:137" + }, + "returnParameters": { + "id": 43594, + "nodeType": "ParameterList", + "parameters": [], + "src": "5825:0:137" + }, + "scope": 44644, + "src": "5702:491:137", + "stateMutability": "nonpayable", + "superFunction": 45349, + "visibility": "external" + }, + { + "body": { + "id": 43685, + "nodeType": "Block", + "src": "6592:296:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43643, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6606:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6625:1:137", + "subdenomination": null, + "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": 43644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6617:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6617:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6606:21:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365", + "id": 43648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6629:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + }, + "value": "reserved address 0x0 cannot have allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + } + ], + "id": 43642, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "6598:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6598:76:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43650, + "nodeType": "ExpressionStatement", + "src": "6598:76:137" + }, + { + "assignments": [ + 43652 + ], + "declarations": [ + { + "constant": false, + "id": 43652, + "name": "oldValue", + "nodeType": "VariableDeclaration", + "scope": 43685, + "src": "6680:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6680:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43659, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43653, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "6699:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43656, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43654, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6707:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6707:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6699:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43658, + "indexExpression": { + "argumentTypes": null, + "id": 43657, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6719:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6699:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6680:47:137" + }, + { + "assignments": [ + 43661 + ], + "declarations": [ + { + "constant": false, + "id": 43661, + "name": "newValue", + "nodeType": "VariableDeclaration", + "scope": 43685, + "src": "6733:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6733:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43666, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43664, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43635, + "src": "6765:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43662, + "name": "oldValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43652, + "src": "6752:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "6752:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6752:19:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6733:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43667, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "6777:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43671, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43668, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6785:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6785:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6777:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43672, + "indexExpression": { + "argumentTypes": null, + "id": 43670, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6797:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6777:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43673, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43661, + "src": "6808:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6777:39:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43675, + "nodeType": "ExpressionStatement", + "src": "6777:39:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43677, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "6836:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6836:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43679, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43633, + "src": "6848:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43680, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43661, + "src": "6857:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43676, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "6827:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6827:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43682, + "nodeType": "EmitStatement", + "src": "6822:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6879:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43641, + "id": 43684, + "nodeType": "Return", + "src": "6872:11:137" + } + ] + }, + "documentation": "@notice Increase the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The increment of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43686, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43638, + "modifierName": { + "argumentTypes": null, + "id": 43637, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "6549:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6549:21:137" + } + ], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43633, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6500:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6500:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43635, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6517:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6517:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6499:32:137" + }, + "returnParameters": { + "id": 43641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43686, + "src": "6584:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6584:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6583:6:137" + }, + "scope": 44644, + "src": "6473:415:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43731, + "nodeType": "Block", + "src": "7287:214:137", + "statements": [ + { + "assignments": [ + 43698 + ], + "declarations": [ + { + "constant": false, + "id": 43698, + "name": "oldValue", + "nodeType": "VariableDeclaration", + "scope": 43731, + "src": "7293:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7293:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43705, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43699, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7312:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43702, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43700, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7320:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7320:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7312:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43704, + "indexExpression": { + "argumentTypes": null, + "id": 43703, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7332:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7312:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7293:47:137" + }, + { + "assignments": [ + 43707 + ], + "declarations": [ + { + "constant": false, + "id": 43707, + "name": "newValue", + "nodeType": "VariableDeclaration", + "scope": 43731, + "src": "7346:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7346:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43712, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43710, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43690, + "src": "7378:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43708, + "name": "oldValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43698, + "src": "7365:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "7365:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7365:19:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7346:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43713, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7390:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43717, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43714, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7398:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7398:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7390:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43718, + "indexExpression": { + "argumentTypes": null, + "id": 43716, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7410:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7390:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43719, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43707, + "src": "7421:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7390:39:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43721, + "nodeType": "ExpressionStatement", + "src": "7390:39:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43723, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7449:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7449:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43725, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43688, + "src": "7461:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43726, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43707, + "src": "7470:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43722, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "7440:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7440:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43728, + "nodeType": "EmitStatement", + "src": "7435:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7492:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43696, + "id": 43730, + "nodeType": "Return", + "src": "7485:11:137" + } + ] + }, + "documentation": "@notice Decrease the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The decrement of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43732, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43693, + "modifierName": { + "argumentTypes": null, + "id": 43692, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "7244:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7244:21:137" + } + ], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43688, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7195:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7195:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43690, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7212:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7212:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7194:32:137" + }, + "returnParameters": { + "id": 43696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43695, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43732, + "src": "7279:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43694, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7279:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7278:6:137" + }, + "scope": 44644, + "src": "7168:333:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 43770, + "nodeType": "Block", + "src": "7885:193:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43744, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "7899:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7918:1:137", + "subdenomination": null, + "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": 43745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7910:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7910:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7899:21:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365", + "id": 43749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7922:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + }, + "value": "reserved address 0x0 cannot have allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853", + "typeString": "literal_string \"reserved address 0x0 cannot have allowance\"" + } + ], + "id": 43743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "7891:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7891:76:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43751, + "nodeType": "ExpressionStatement", + "src": "7891:76:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43752, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "7973:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 43756, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43753, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "7981:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7981:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7973:19:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43757, + "indexExpression": { + "argumentTypes": null, + "id": 43755, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "7993:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7973:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 43758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43736, + "src": "8004:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7973:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43760, + "nodeType": "ExpressionStatement", + "src": "7973:36:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8029:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8029:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43764, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43734, + "src": "8041:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43765, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43736, + "src": "8050:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43761, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46923, + "src": "8020:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8020:36:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43767, + "nodeType": "EmitStatement", + "src": "8015:41:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8069:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43742, + "id": 43769, + "nodeType": "Return", + "src": "8062:11:137" + } + ] + }, + "documentation": "@notice Approve a user to transfer StableToken on behalf of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The amount of StableToken approved to the spender.\n@return True if the transaction succeeds.", + "id": 43771, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43739, + "modifierName": { + "argumentTypes": null, + "id": 43738, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "7848:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7848:21:137" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43734, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7807:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7807:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43736, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7824:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7824:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7806:32:137" + }, + "returnParameters": { + "id": 43742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43741, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43771, + "src": "7879:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43740, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7879:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7878:6:137" + }, + "scope": 44644, + "src": "7790:288:137", + "stateMutability": "nonpayable", + "superFunction": 46896, + "visibility": "external" + }, + { + "body": { + "id": 43815, + "nodeType": "Block", + "src": "8344:312:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8365:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8365:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43787, + "name": "getExchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44219, + "src": "8407:21:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 43788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8407:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43785, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8379:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9566, + "src": "8379:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8379:52:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8365:66:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43791, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8443:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43795, + "name": "VALIDATORS_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8369, + "src": "8480:22:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43793, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8457:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "8457:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8457:46:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8443:60:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8365:138:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43799, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "8515:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8515:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43803, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43342, + "src": "8552:24:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43801, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "8529:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "8529:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8529:48:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8515:62:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8365:212:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206d696e74", + "id": 43807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8585:31:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa", + "typeString": "literal_string \"Sender not authorized to mint\"" + }, + "value": "Sender not authorized to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa", + "typeString": "literal_string \"Sender not authorized to mint\"" + } + ], + "id": 43782, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "8350:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8350:272:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43809, + "nodeType": "ExpressionStatement", + "src": "8350:272:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43811, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43773, + "src": "8641:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43812, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43775, + "src": "8645:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43810, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43878, + "src": "8635:5:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8635:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 43781, + "id": 43814, + "nodeType": "Return", + "src": "8628:23:137" + } + ] + }, + "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.", + "id": 43816, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43778, + "modifierName": { + "argumentTypes": null, + "id": 43777, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "8307:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8307:21:137" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43773, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8271:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8271:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43775, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8283:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8283:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8270:27:137" + }, + "returnParameters": { + "id": 43781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43780, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43816, + "src": "8338:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43779, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8338:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8337:6:137" + }, + "scope": 44644, + "src": "8257:399:137", + "stateMutability": "nonpayable", + "superFunction": 45335, + "visibility": "external" + }, + { + "body": { + "id": 43877, + "nodeType": "Block", + "src": "8900:323:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43826, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "8914:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8928:1:137", + "subdenomination": null, + "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": 43827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8920:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8920:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8914:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "3020697320612072657365727665642061646472657373", + "id": 43831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8932:25:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a", + "typeString": "literal_string \"0 is a reserved address\"" + }, + "value": "0 is a reserved address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a", + "typeString": "literal_string \"0 is a reserved address\"" + } + ], + "id": 43825, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "8906:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8906:52:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43833, + "nodeType": "ExpressionStatement", + "src": "8906:52:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43834, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "8968:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 43835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8977:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8968:10:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 43840, + "nodeType": "IfStatement", + "src": "8964:42:137", + "trueBody": { + "id": 43839, + "nodeType": "Block", + "src": "8980:26:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8995:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43824, + "id": 43838, + "nodeType": "Return", + "src": "8988:11:137" + } + ] + } + }, + { + "assignments": [ + 43842 + ], + "declarations": [ + { + "constant": false, + "id": 43842, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 43877, + "src": "9012:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9012:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43848, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43844, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "9042:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "9042:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 43846, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "9065:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43843, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "9028:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 43847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9028:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9012:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43849, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "9077:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43852, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43842, + "src": "9109:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43850, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "9092:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "9092:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9092:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9077:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43855, + "nodeType": "ExpressionStatement", + "src": "9077:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43856, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "9121:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43858, + "indexExpression": { + "argumentTypes": null, + "id": 43857, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9130:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9121:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43863, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43842, + "src": "9153:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43859, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "9136:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43861, + "indexExpression": { + "argumentTypes": null, + "id": 43860, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9145:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9136:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "9136:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9136:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9121:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43866, + "nodeType": "ExpressionStatement", + "src": "9121:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9187:1:137", + "subdenomination": null, + "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": 43868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9179:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9179:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43871, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43818, + "src": "9191:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43872, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43820, + "src": "9195:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43867, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "9170:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9170:31:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43874, + "nodeType": "EmitStatement", + "src": "9165:36:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9214:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43824, + "id": 43876, + "nodeType": "Return", + "src": "9207:11:137" + } + ] + }, + "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.", + "id": 43878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43818, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8850:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8850:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43820, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8862:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8862:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8849:27:137" + }, + "returnParameters": { + "id": 43824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43823, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43878, + "src": "8894:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43822, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8894:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8893:6:137" + }, + "scope": 44644, + "src": "8835:388:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 43906, + "nodeType": "Block", + "src": "9634:104:137", + "statements": [ + { + "assignments": [ + 43894 + ], + "declarations": [ + { + "constant": false, + "id": 43894, + "name": "succeeded", + "nodeType": "VariableDeclaration", + "scope": 43906, + "src": "9640:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43893, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9640:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43899, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43896, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43880, + "src": "9666:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 43897, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43882, + "src": "9670:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43895, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44402, + "src": "9657:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 43898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9657:19:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9640:36:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43901, + "name": "comment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43884, + "src": "9703:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 43900, + "name": "TransferComment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43334, + "src": "9687:15:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 43902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9687:24:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43903, + "nodeType": "EmitStatement", + "src": "9682:29:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43904, + "name": "succeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43894, + "src": "9724:9:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 43892, + "id": 43905, + "nodeType": "Return", + "src": "9717:16:137" + } + ] + }, + "documentation": "@notice Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.\n@param comment The transfer comment.\n@return True if the transaction succeeds.", + "id": 43907, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43887, + "modifierName": { + "argumentTypes": null, + "id": 43886, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "9569:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9569:21:137" + }, + { + "arguments": null, + "id": 43889, + "modifierName": { + "argumentTypes": null, + "id": 43888, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "9595:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9595:17:137" + } + ], + "name": "transferWithComment", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43880, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9500:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9500:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43882, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9512:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9512:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43884, + "name": "comment", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9527:23:137", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 43883, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9527:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9499:52:137" + }, + "returnParameters": { + "id": 43892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43891, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43907, + "src": "9626:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43890, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9626:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9625:6:137" + }, + "scope": 44644, + "src": "9471:267:137", + "stateMutability": "nonpayable", + "superFunction": 9394, + "visibility": "external" + }, + { + "body": { + "id": 43985, + "nodeType": "Block", + "src": "9945:527:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 43932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43917, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "9966:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9966:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 43921, + "name": "getExchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44219, + "src": "10008:21:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 43922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10008:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43919, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "9980:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressForOrDie", + "nodeType": "MemberAccess", + "referencedDeclaration": 9566, + "src": "9980:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9980:52:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9966:66:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 43931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43925, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10044:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10044:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43929, + "name": "GRANDA_MENTO_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43342, + "src": "10081:24:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 43927, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "10058:8:137", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRegistry_$9598", + "typeString": "contract IRegistry" + } + }, + "id": 43928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAddressFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9573, + "src": "10058:22:137", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 43930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10058:48:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10044:62:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9966:140:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206275726e", + "id": 43933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10114:31:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d", + "typeString": "literal_string \"Sender not authorized to burn\"" + }, + "value": "Sender not authorized to burn" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d", + "typeString": "literal_string \"Sender not authorized to burn\"" + } + ], + "id": 43916, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "9951:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9951:200:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43935, + "nodeType": "ExpressionStatement", + "src": "9951:200:137" + }, + { + "assignments": [ + 43937 + ], + "declarations": [ + { + "constant": false, + "id": 43937, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 43985, + "src": "10157:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10157:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 43943, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43939, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "10187:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 43940, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "10187:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 43941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43909, + "src": "10210:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43938, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "10173:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 43942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10173:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10157:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 43945, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10230:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43946, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10239:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43949, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43947, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10248:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10248:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10239:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10230:29:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "76616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 43951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10261:34:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c", + "typeString": "literal_string \"value exceeded balance of sender\"" + }, + "value": "value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c", + "typeString": "literal_string \"value exceeded balance of sender\"" + } + ], + "id": 43944, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "10222:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 43952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10222:74:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43953, + "nodeType": "ExpressionStatement", + "src": "10222:74:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 43954, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "10302:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43957, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10334:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 43955, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "10317:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "10317:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10317:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10302:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43960, + "nodeType": "ExpressionStatement", + "src": "10302:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 43972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43961, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10346:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43964, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43962, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10355:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10355:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10346:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 43970, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10394:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 43965, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "10369:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 43968, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43966, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10378:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10378:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10369:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "10369:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 43971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10369:31:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10346:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43973, + "nodeType": "ExpressionStatement", + "src": "10346:54:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 43975, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "10420:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 43976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10420:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 43978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10440:1:137", + "subdenomination": null, + "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": 43977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10432:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 43979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10432:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 43980, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43937, + "src": "10444:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 43974, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "10411:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 43981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10411:39:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43982, + "nodeType": "EmitStatement", + "src": "10406:44:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 43983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10463:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 43915, + "id": 43984, + "nodeType": "Return", + "src": "10456:11:137" + } + ] + }, + "documentation": "@notice Burns StableToken from the balance of msg.sender.\n@param value The amount of StableToken to burn.", + "id": 43986, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43912, + "modifierName": { + "argumentTypes": null, + "id": 43911, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "9908:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9908:21:137" + } + ], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43909, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 43986, + "src": "9884:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9884:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9883:15:137" + }, + "returnParameters": { + "id": 43915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43914, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 43986, + "src": "9939:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43913, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9939:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9938:6:137" + }, + "scope": 44644, + "src": "9870:602:137", + "stateMutability": "nonpayable", + "superFunction": 45342, + "visibility": "external" + }, + { + "body": { + "id": 44086, + "nodeType": "Block", + "src": "10935:573:137", + "statements": [ + { + "assignments": [ + 44002 + ], + "declarations": [ + { + "constant": false, + "id": 44002, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44086, + "src": "10941:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10941:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44008, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44004, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "10971:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44005, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "10971:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44006, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "10994:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44003, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "10957:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10957:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10941:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11014:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11028:1:137", + "subdenomination": null, + "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": 44011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11020:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11020:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11014:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830", + "id": 44015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11032:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + }, + "value": "transfer attempted to reserved address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + } + ], + "id": 44009, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11006:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11006:71:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44017, + "nodeType": "ExpressionStatement", + "src": "11006:71:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44019, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11091:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44020, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11100:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44022, + "indexExpression": { + "argumentTypes": null, + "id": 44021, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11109:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11100:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11091:23:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 44024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11116:43:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + }, + "value": "transfer value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + } + ], + "id": 44018, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11083:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11083:77:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44026, + "nodeType": "ExpressionStatement", + "src": "11083:77:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11181:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44029, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11190:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44031, + "indexExpression": { + "argumentTypes": null, + "id": 44030, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11198:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11190:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44034, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44032, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11204:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11204:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11190:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11181:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e74", + "id": 44036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11223:58:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5", + "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\"" + }, + "value": "transfer value exceeded sender's allowance for recipient" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5", + "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\"" + } + ], + "id": 44027, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "11166:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11166:121:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44038, + "nodeType": "ExpressionStatement", + "src": "11166:121:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44039, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11294:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44041, + "indexExpression": { + "argumentTypes": null, + "id": 44040, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11303:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11294:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44046, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11326:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44042, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11309:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44044, + "indexExpression": { + "argumentTypes": null, + "id": 44043, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11318:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11309:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "11309:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11309:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11294:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44049, + "nodeType": "ExpressionStatement", + "src": "11294:38:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44050, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11338:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44052, + "indexExpression": { + "argumentTypes": null, + "id": 44051, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11347:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11338:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44057, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44002, + "src": "11374:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44053, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "11355:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44055, + "indexExpression": { + "argumentTypes": null, + "id": 44054, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11364:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11355:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "11355:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11355:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11338:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44060, + "nodeType": "ExpressionStatement", + "src": "11338:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44061, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11386:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44065, + "indexExpression": { + "argumentTypes": null, + "id": 44062, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11394:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11386:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44066, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44063, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11400:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11400:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11386:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44074, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11444:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44067, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "11414:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44069, + "indexExpression": { + "argumentTypes": null, + "id": 44068, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11422:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11414:13:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44072, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44070, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "11428:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11428:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11414:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "11414:29:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11414:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11386:64:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44077, + "nodeType": "ExpressionStatement", + "src": "11386:64:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44079, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43988, + "src": "11470:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44080, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43990, + "src": "11476:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44081, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43992, + "src": "11480:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44078, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "11461:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11461:25:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44083, + "nodeType": "EmitStatement", + "src": "11456:30:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 44084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11499:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 44000, + "id": 44085, + "nodeType": "Return", + "src": "11492:11:137" + } + ] + }, + "documentation": "@notice Transfers StableToken from one address to another on behalf of a user.\n@param from The address to transfer StableToken from.\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to transfer.\n@return True if the transaction succeeds.", + "id": 44087, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 43995, + "modifierName": { + "argumentTypes": null, + "id": 43994, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "10870:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10870:21:137" + }, + { + "arguments": null, + "id": 43997, + "modifierName": { + "argumentTypes": null, + "id": 43996, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "10896:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "10896:17:137" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43988, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10812:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10812:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43990, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10826:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10826:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43992, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10838:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43991, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10838:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10811:41:137" + }, + "returnParameters": { + "id": 44000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43999, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44087, + "src": "10927:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 43998, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10927:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10926:6:137" + }, + "scope": 44644, + "src": "10790:718:137", + "stateMutability": "nonpayable", + "superFunction": 46907, + "visibility": "external" + }, + { + "body": { + "id": 44094, + "nodeType": "Block", + "src": "11621:23:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44092, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43344, + "src": "11634:5:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 44091, + "id": 44093, + "nodeType": "Return", + "src": "11627:12:137" + } + ] + }, + "documentation": "@return The name of the stable token.", + "id": 44095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44088, + "nodeType": "ParameterList", + "parameters": [], + "src": "11580:2:137" + }, + "returnParameters": { + "id": 44091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44090, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44095, + "src": "11606:13:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 44089, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11606:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11605:15:137" + }, + "scope": 44644, + "src": "11567:77:137", + "stateMutability": "view", + "superFunction": 9399, + "visibility": "external" + }, + { + "body": { + "id": 44102, + "nodeType": "Block", + "src": "11761:25:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44100, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43346, + "src": "11774:7:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 44099, + "id": 44101, + "nodeType": "Return", + "src": "11767:14:137" + } + ] + }, + "documentation": "@return The symbol of the stable token.", + "id": 44103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44096, + "nodeType": "ParameterList", + "parameters": [], + "src": "11720:2:137" + }, + "returnParameters": { + "id": 44099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44098, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44103, + "src": "11746:13:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 44097, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11746:6:137", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11745:15:137" + }, + "scope": 44644, + "src": "11705:81:137", + "stateMutability": "view", + "superFunction": 9404, + "visibility": "external" + }, + { + "body": { + "id": 44110, + "nodeType": "Block", + "src": "11929:27:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44108, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "11942:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 44107, + "id": 44109, + "nodeType": "Return", + "src": "11935:16:137" + } + ] + }, + "documentation": "@return The number of decimal places to which StableToken is divisible.", + "id": 44111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44104, + "nodeType": "ParameterList", + "parameters": [], + "src": "11896:2:137" + }, + "returnParameters": { + "id": 44107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44106, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44111, + "src": "11922:5:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 44105, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11922:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11921:7:137" + }, + "scope": 44644, + "src": "11879:77:137", + "stateMutability": "view", + "superFunction": 9409, + "visibility": "external" + }, + { + "body": { + "id": 44126, + "nodeType": "Block", + "src": "12328:48:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44120, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43360, + "src": "12341:7:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 44122, + "indexExpression": { + "argumentTypes": null, + "id": 44121, + "name": "accountOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44113, + "src": "12349:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12341:21:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44124, + "indexExpression": { + "argumentTypes": null, + "id": 44123, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44115, + "src": "12363:7:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12341:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44119, + "id": 44125, + "nodeType": "Return", + "src": "12334:37:137" + } + ] + }, + "documentation": "@notice Gets the amount of owner's StableToken allowed to be spent by spender.\n@param accountOwner The owner of the StableToken.\n@param spender The spender of the StableToken.\n@return The amount of StableToken owner is allowing spender to spend.", + "id": 44127, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44113, + "name": "accountOwner", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12257:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12257:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44115, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12279:15:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12279:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12256:39:137" + }, + "returnParameters": { + "id": 44119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44118, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44127, + "src": "12319:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12319:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12318:9:137" + }, + "scope": 44644, + "src": "12238:138:137", + "stateMutability": "view", + "superFunction": 46887, + "visibility": "external" + }, + { + "body": { + "id": 44140, + "nodeType": "Block", + "src": "12678:54:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44135, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "12704:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44137, + "indexExpression": { + "argumentTypes": null, + "id": 44136, + "name": "accountOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44129, + "src": "12713:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12704:22:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44134, + "name": "unitsToValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44248, + "src": "12691:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12691:36:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44133, + "id": 44139, + "nodeType": "Return", + "src": "12684:43:137" + } + ] + }, + "documentation": "@notice Gets the balance of the specified address using the presently stored inflation factor.\n@param accountOwner The address to query the balance of.\n@return The balance of the specified address.", + "id": 44141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44129, + "name": "accountOwner", + "nodeType": "VariableDeclaration", + "scope": 44141, + "src": "12624:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12624:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12623:22:137" + }, + "returnParameters": { + "id": 44133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44132, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44141, + "src": "12669:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12669:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12668:9:137" + }, + "scope": 44644, + "src": "12605:127:137", + "stateMutability": "view", + "superFunction": 46869, + "visibility": "external" + }, + { + "body": { + "id": 44150, + "nodeType": "Block", + "src": "12930:44:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44147, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "12956:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44146, + "name": "unitsToValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44248, + "src": "12943:12:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 44148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:26:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44145, + "id": 44149, + "nodeType": "Return", + "src": "12936:33:137" + } + ] + }, + "documentation": "@return The total value of StableToken in existence\n@dev Though totalSupply_ is stored in units, this returns value.", + "id": 44151, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44142, + "nodeType": "ParameterList", + "parameters": [], + "src": "12895:2:137" + }, + "returnParameters": { + "id": 44145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44151, + "src": "12921:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12921:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12920:9:137" + }, + "scope": 44644, + "src": "12875:99:137", + "stateMutability": "view", + "superFunction": 46862, + "visibility": "external" + }, + { + "body": { + "id": 44176, + "nodeType": "Block", + "src": "13218:173:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44162, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13239:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "13239:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "13239:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13239:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44166, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13275:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44167, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "13275:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "13275:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13275:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44170, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13313:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "13313:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44172, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "13348:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "13348:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44174, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13231:155:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 44161, + "id": 44175, + "nodeType": "Return", + "src": "13224:162:137" + } + ] + }, + "documentation": "@notice gets inflation parameters.\n@return rate\n@return factor\n@return updatePeriod\n@return factorLastUpdated", + "id": 44177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getInflationParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44152, + "nodeType": "ParameterList", + "parameters": [], + "src": "13156:2:137" + }, + "returnParameters": { + "id": 44161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44154, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13182:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13182:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44156, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13191:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13191:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44158, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13200:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13200:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44160, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44177, + "src": "13209:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13209:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13181:36:137" + }, + "scope": 44644, + "src": "13125:266:137", + "stateMutability": "view", + "superFunction": 45374, + "visibility": "external" + }, + { + "body": { + "id": 44200, + "nodeType": "Block", + "src": "13843:181:137", + "statements": [ + { + "assignments": [ + 44187 + ], + "declarations": [ + { + "constant": false, + "id": 44187, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44200, + "src": "13849:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44186, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "13849:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44188, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13849:50:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44189, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44187, + "src": "13907:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + null + ], + "id": 44190, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13906:26:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$", + "typeString": "tuple(struct FixidityLib.Fraction memory,)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44191, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "13935:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 44192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13935:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "13906:56:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44194, + "nodeType": "ExpressionStatement", + "src": "13906:56:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44196, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44187, + "src": "13989:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 44197, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44179, + "src": "14013:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44195, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "13975:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13975:44:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44183, + "id": 44199, + "nodeType": "Return", + "src": "13968:51:137" + } + ] + }, + "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We don't compute the updated inflationFactor here because\nwe assume any function calling this will have updated the inflation factor.", + "id": 44201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "valueToUnits", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44179, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44201, + "src": "13796:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13796:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13795:15:137" + }, + "returnParameters": { + "id": 44183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44182, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44201, + "src": "13834:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13834:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13833:9:137" + }, + "scope": 44644, + "src": "13774:250:137", + "stateMutability": "view", + "superFunction": 45356, + "visibility": "external" + }, + { + "body": { + "id": 44218, + "nodeType": "Block", + "src": "14673:136:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 44210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44206, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "14683:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14713:1:137", + "subdenomination": null, + "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": 44207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14705:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": "bytes32" + }, + "id": 44209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14705:10:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14683:32:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 44216, + "nodeType": "Block", + "src": "14765:40:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44214, + "name": "exchangeRegistryId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43373, + "src": "14780:18:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 44205, + "id": 44215, + "nodeType": "Return", + "src": "14773:25:137" + } + ] + }, + "id": 44217, + "nodeType": "IfStatement", + "src": "14679:126:137", + "trueBody": { + "id": 44213, + "nodeType": "Block", + "src": "14717:42:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 44211, + "name": "EXCHANGE_REGISTRY_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8281, + "src": "14732:20:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 44205, + "id": 44212, + "nodeType": "Return", + "src": "14725:27:137" + } + ] + } + } + ] + }, + "documentation": "@notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n@dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\nexchangeRegistryId was introduced after the initial release of cUSD's StableToken,\nso exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\nexchangeRegistryId were to be correctly initialized, this function could be deprecated\nin favor of using exchangeRegistryId directly.\n@return Registry id for the corresponding exchange.", + "id": 44219, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getExchangeRegistryId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44202, + "nodeType": "ParameterList", + "parameters": [], + "src": "14640:2:137" + }, + "returnParameters": { + "id": 44205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44204, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44219, + "src": "14664:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 44203, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14664:7:137", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14663:9:137" + }, + "scope": 44644, + "src": "14610:199:137", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 44247, + "nodeType": "Block", + "src": "15119:596:137", + "statements": [ + { + "assignments": [ + 44229 + ], + "declarations": [ + { + "constant": false, + "id": 44229, + "name": "updatedInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44247, + "src": "15125:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44228, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "15125:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44230, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "15125:50:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44231, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44229, + "src": "15183:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + null + ], + "id": 44232, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "15182:26:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$", + "typeString": "tuple(struct FixidityLib.Fraction memory,)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44233, + "name": "getUpdatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44383, + "src": "15211:25:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)" + } + }, + "id": 44234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15211:27:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "src": "15182:56:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44236, + "nodeType": "ExpressionStatement", + "src": "15182:56:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44242, + "name": "updatedInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44229, + "src": "15675:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44239, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44221, + "src": "15661:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44237, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "15640:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3093, + "src": "15640:20:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44241, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "divide", + "nodeType": "MemberAccess", + "referencedDeclaration": 3515, + "src": "15640:34:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:58:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fromFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3106, + "src": "15640:68:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15640:70:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44225, + "id": 44246, + "nodeType": "Return", + "src": "15633:77:137" + } + ] + }, + "documentation": "@notice Returns the value of a given number of units given the current inflation factor.\n@param units The units to convert to value.\n@return The value corresponding to `units` given the current inflation factor.", + "id": 44248, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unitsToValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44221, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44248, + "src": "15074:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15074:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15073:15:137" + }, + "returnParameters": { + "id": 44225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44224, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44248, + "src": "15110:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15110:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15109:9:137" + }, + "scope": 44644, + "src": "15052:663:137", + "stateMutability": "view", + "superFunction": 45363, + "visibility": "public" + }, + { + "body": { + "id": 44267, + "nodeType": "Block", + "src": "16221:83:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44252, + "src": "16280:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44259, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "16259:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "newFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3093, + "src": "16259:20:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16259:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 44257, + "name": "inflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44250, + "src": "16234:15:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44258, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "multiply", + "nodeType": "MemberAccess", + "referencedDeclaration": 3447, + "src": "16234:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16234:53:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "fromFixed", + "nodeType": "MemberAccess", + "referencedDeclaration": 3106, + "src": "16234:63:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16234:65:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44256, + "id": 44266, + "nodeType": "Return", + "src": "16227:72:137" + } + ] + }, + "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param inflationFactor The current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We assume any function calling this will have updated the inflation factor.", + "id": 44268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_valueToUnits", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44250, + "name": "inflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16116:43:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44249, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "16116:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44252, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16161:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16161:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16115:60:137" + }, + "returnParameters": { + "id": 44256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44255, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44268, + "src": "16210:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16210:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16209:9:137" + }, + "scope": 44644, + "src": "16093:211:137", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 44382, + "nodeType": "Block", + "src": "16582:1310:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44275, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "16635:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44279, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16678:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44280, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "16678:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44276, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16641:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44277, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16641:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "16641:36:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16641:65:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16635:71:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44290, + "nodeType": "IfStatement", + "src": "16631:156:137", + "trueBody": { + "id": 44289, + "nodeType": "Block", + "src": "16708:79:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44283, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16724:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "16724:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44285, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16747:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16747:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44287, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16723:57:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44288, + "nodeType": "Return", + "src": "16716:64:137" + } + ] + } + }, + { + "assignments": [ + 44292 + ], + "declarations": [ + { + "constant": false, + "id": 44292, + "name": "numerator", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16793:17:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16793:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44293, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "16793:17:137" + }, + { + "assignments": [ + 44295 + ], + "declarations": [ + { + "constant": false, + "id": 44295, + "name": "denominator", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16816:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16816:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44296, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "16816:19:137" + }, + { + "assignments": [ + 44298 + ], + "declarations": [ + { + "constant": false, + "id": 44298, + "name": "timesToApplyInflation", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "16914:29:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16914:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44308, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44305, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16999:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "16999:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44301, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "16954:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44302, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "16954:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44299, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47590, + "src": "16946:3:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "16946:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16946:41:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 46265, + "src": "16946:45:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16946:86:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16914:118:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44309, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17040:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44310, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17051:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44311, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "17039:24:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44313, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17088:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44314, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "17088:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44315, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17088:28:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17088:30:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 44317, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17126:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "17126:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17126:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17126:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17126:29:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44322, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17163:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44323, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "rate", + "nodeType": "MemberAccess", + "referencedDeclaration": 43362, + "src": "17163:19:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + "id": 44324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17163:26:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17163:28:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 44326, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17199:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "fixed1", + "nodeType": "MemberAccess", + "referencedDeclaration": 3032, + "src": "17199:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function () pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17199:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "unwrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3055, + "src": "17199:27:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)" + } + }, + "id": 44330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17199:29:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44331, + "name": "timesToApplyInflation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44298, + "src": "17236:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 44332, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43348, + "src": "17265:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 44312, + "name": "fractionMulExp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7713, + "src": "17066:14:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 44333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17066:214:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "17039:241:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44335, + "nodeType": "ExpressionStatement", + "src": "17039:241:137" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 44342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44336, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17411:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17424:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17411:14:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44339, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17429:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17444:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17429:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "17411:34:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44350, + "nodeType": "IfStatement", + "src": "17407:119:137", + "trueBody": { + "id": 44349, + "nodeType": "Block", + "src": "17447:79:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44343, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17463:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44344, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "17463:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44345, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17486:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "17486:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44347, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17462:57:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44348, + "nodeType": "Return", + "src": "17455:64:137" + } + ] + } + }, + { + "assignments": [ + 44354 + ], + "declarations": [ + { + "constant": false, + "id": 44354, + "name": "currentInflationFactor", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "17532:50:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44353, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "17532:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44365, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44362, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44295, + "src": "17644:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44360, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17627:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "17627:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17627:29:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44357, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44292, + "src": "17602:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44355, + "name": "FixidityLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "17585:11:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$", + "typeString": "type(library FixidityLib)" + } + }, + "id": 44356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "wrap", + "nodeType": "MemberAccess", + "referencedDeclaration": 3044, + "src": "17585:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17585:27:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "id": 44359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "divide", + "nodeType": "MemberAccess", + "referencedDeclaration": 3515, + "src": "17585:34:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$", + "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)" + } + }, + "id": 44364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17585:77:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17532:130:137" + }, + { + "assignments": [ + 44367 + ], + "declarations": [ + { + "constant": false, + "id": 44367, + "name": "lastUpdated", + "nodeType": "VariableDeclaration", + "scope": 44382, + "src": "17668:19:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17668:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44377, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44374, + "name": "timesToApplyInflation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44298, + "src": "17766:21:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44371, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17734:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "updatePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 43366, + "src": "17734:27:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 46249, + "src": "17734:31:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17734:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44368, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "17690:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44369, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factorLastUpdated", + "nodeType": "MemberAccess", + "referencedDeclaration": 43368, + "src": "17690:32:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "17690:36:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17690:104:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17668:126:137" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 44378, + "name": "currentInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44354, + "src": "17809:22:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction memory" + } + }, + { + "argumentTypes": null, + "id": 44379, + "name": "lastUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44367, + "src": "17833:11:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 44380, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17808:37:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)" + } + }, + "functionReturnParameters": 44274, + "id": 44381, + "nodeType": "Return", + "src": "17801:44:137" + } + ] + }, + "documentation": "@notice Computes the up-to-date inflation factor.\n@return Current inflation factor.\n@return Last time when the returned inflation factor was updated.", + "id": 44383, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUpdatedInflationFactor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44269, + "nodeType": "ParameterList", + "parameters": [], + "src": "16519:2:137" + }, + "returnParameters": { + "id": 44274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "16544:27:137", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr", + "typeString": "struct FixidityLib.Fraction" + }, + "typeName": { + "contractScope": null, + "id": 44270, + "name": "FixidityLib.Fraction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3011, + "src": "16544:20:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr", + "typeString": "struct FixidityLib.Fraction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44273, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44383, + "src": "16573:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44272, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16573:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16543:38:137" + }, + "scope": 44644, + "src": "16485:1407:137", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 44401, + "nodeType": "Block", + "src": "18238:38:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44397, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44385, + "src": "18261:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44398, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44387, + "src": "18265:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44396, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44472, + "src": "18251:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 44399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18251:20:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 44395, + "id": 44400, + "nodeType": "Return", + "src": "18244:27:137" + } + ] + }, + "documentation": "@notice Transfers `value` from `msg.sender` to `to`\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 44402, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44390, + "modifierName": { + "argumentTypes": null, + "id": 44389, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "18173:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18173:21:137" + }, + { + "arguments": null, + "id": 44392, + "modifierName": { + "argumentTypes": null, + "id": 44391, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "18199:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "18199:17:137" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44385, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18131:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18131:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44387, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18143:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18143:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18130:27:137" + }, + "returnParameters": { + "id": 44395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44394, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44402, + "src": "18230:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44393, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18230:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18229:6:137" + }, + "scope": 44644, + "src": "18113:163:137", + "stateMutability": "nonpayable", + "superFunction": 46878, + "visibility": "public" + }, + { + "body": { + "id": 44471, + "nodeType": "Block", + "src": "18543:399:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44412, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18557:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18571:1:137", + "subdenomination": null, + "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": 44413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18563:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18563:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "18557:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830", + "id": 44417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18575:44:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + }, + "value": "transfer attempted to reserved address 0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8", + "typeString": "literal_string \"transfer attempted to reserved address 0x0\"" + } + ], + "id": 44411, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "18549:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18549:71:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44419, + "nodeType": "ExpressionStatement", + "src": "18549:71:137" + }, + { + "assignments": [ + 44421 + ], + "declarations": [ + { + "constant": false, + "id": 44421, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44471, + "src": "18626:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18626:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44427, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44423, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "18656:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44424, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "18656:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44425, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44406, + "src": "18679:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44422, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "18642:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18642:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18626:59:137" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44429, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18699:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44432, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44430, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18708:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18708:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18699:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 44433, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18723:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18699:29:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572", + "id": 44435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18730:43:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + }, + "value": "transfer value exceeded balance of sender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158", + "typeString": "literal_string \"transfer value exceeded balance of sender\"" + } + ], + "id": 44428, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 47591, + 47592 + ], + "referencedDeclaration": 47592, + "src": "18691:7:137", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 44436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18691:83:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44437, + "nodeType": "ExpressionStatement", + "src": "18691:83:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44438, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18780:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44441, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44439, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18789:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18789:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18780:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44447, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18828:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44442, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18803:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44445, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44443, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18812:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18812:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18803:20:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "18803:24:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18803:31:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18780:54:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44450, + "nodeType": "ExpressionStatement", + "src": "18780:54:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44451, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18840:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44453, + "indexExpression": { + "argumentTypes": null, + "id": 44452, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18849:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18840:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44458, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44421, + "src": "18872:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44454, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "18855:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44456, + "indexExpression": { + "argumentTypes": null, + "id": 44455, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18864:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18855:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "18855:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18855:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18840:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44461, + "nodeType": "ExpressionStatement", + "src": "18840:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44463, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47588, + "src": "18898:3:137", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 44464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18898:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 44465, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44404, + "src": "18910:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44466, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44406, + "src": "18914:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44462, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "18889:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18889:31:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44468, + "nodeType": "EmitStatement", + "src": "18884:36:137" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 44469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18933:4:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 44410, + "id": 44470, + "nodeType": "Return", + "src": "18926:11:137" + } + ] + }, + "documentation": "@notice Transfers StableToken from one address to another\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to be transferred.", + "id": 44472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44404, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18492:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18492:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44406, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18504:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18504:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18491:27:137" + }, + "returnParameters": { + "id": 44410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44409, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44472, + "src": "18537:4:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18537:4:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18536:6:137" + }, + "scope": 44644, + "src": "18473:469:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 44511, + "nodeType": "Block", + "src": "19632:162:137", + "statements": [ + { + "assignments": [ + 44486 + ], + "declarations": [ + { + "constant": false, + "id": 44486, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44511, + "src": "19638:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19638:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44492, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44488, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "19668:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44489, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "19668:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44490, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44476, + "src": "19691:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44487, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "19654:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19654:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19638:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44493, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "19703:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44495, + "indexExpression": { + "argumentTypes": null, + "id": 44494, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44474, + "src": "19712:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "19703:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44500, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44486, + "src": "19739:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44496, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "19720:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44498, + "indexExpression": { + "argumentTypes": null, + "id": 44497, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44474, + "src": "19729:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19720:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "19720:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19720:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19703:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44503, + "nodeType": "ExpressionStatement", + "src": "19703:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44504, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "19751:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44507, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44486, + "src": "19783:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44505, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "19766:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 46188, + "src": "19766:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19766:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19751:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44510, + "nodeType": "ExpressionStatement", + "src": "19751:38:137" + } + ] + }, + "documentation": "@notice Reserve balance for making payments for gas in this StableToken currency.\n@param from The account to reserve balance from\n@param value The amount of balance to reserve\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. After the tx is executed, gas is refunded to the sender and credited to the\nvarious tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\nby `creditGasFees` reflect the *net* gas fee payments for the transaction.", + "id": 44512, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44479, + "modifierName": { + "argumentTypes": null, + "id": 44478, + "name": "onlyVm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "19575:6:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19575:6:137" + }, + { + "arguments": null, + "id": 44481, + "modifierName": { + "argumentTypes": null, + "id": 44480, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "19586:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19586:17:137" + }, + { + "arguments": null, + "id": 44483, + "modifierName": { + "argumentTypes": null, + "id": 44482, + "name": "updateInflationFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43419, + "src": "19608:21:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "19608:21:137" + } + ], + "name": "debitGasFees", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44474, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44512, + "src": "19529:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19529:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44476, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44512, + "src": "19543:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19543:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19528:29:137" + }, + "returnParameters": { + "id": 44484, + "nodeType": "ParameterList", + "parameters": [], + "src": "19632:0:137" + }, + "scope": 44644, + "src": "19507:287:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 44594, + "nodeType": "Block", + "src": "20794:370:137", + "statements": [ + { + "assignments": [ + 44536 + ], + "declarations": [ + { + "constant": false, + "id": 44536, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44594, + "src": "20800:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20800:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44542, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44538, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "20830:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "20830:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44540, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44522, + "src": "20853:6:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44537, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "20816:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20816:44:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20800:60:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44543, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "20866:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44545, + "indexExpression": { + "argumentTypes": null, + "id": 44544, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20875:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20866:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44550, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20902:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44546, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "20883:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44548, + "indexExpression": { + "argumentTypes": null, + "id": 44547, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20892:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20883:14:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20883:18:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20883:25:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20866:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44553, + "nodeType": "ExpressionStatement", + "src": "20866:42:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44554, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20915:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44558, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "20944:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44559, + "name": "communityFund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44520, + "src": "20950:13:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44560, + "name": "baseTxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44528, + "src": "20965:9:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44557, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "20933:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20933:42:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44555, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20923:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20923:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20923:53:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20915:61:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44564, + "nodeType": "ExpressionStatement", + "src": "20915:61:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44565, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20982:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44569, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "21011:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44570, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44516, + "src": "21017:12:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44571, + "name": "tipTxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44524, + "src": "21031:8:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44568, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "21000:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21000:40:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44566, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "20990:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "20990:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20990:51:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20982:59:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44575, + "nodeType": "ExpressionStatement", + "src": "20982:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44576, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21047:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44580, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44514, + "src": "21076:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44581, + "name": "gatewayFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44518, + "src": "21082:19:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44582, + "name": "gatewayFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44526, + "src": "21103:10:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44579, + "name": "_creditGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44643, + "src": "21065:10:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 44583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21065:49:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44577, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21055:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21055:9:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21055:60:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21047:68:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44586, + "nodeType": "ExpressionStatement", + "src": "21047:68:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44587, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "21121:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44590, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44536, + "src": "21153:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 44588, + "name": "totalSupply_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43354, + "src": "21136:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21136:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21136:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21121:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44593, + "nodeType": "ExpressionStatement", + "src": "21121:38:137" + } + ] + }, + "documentation": "@notice Alternative function to credit balance after making payments\nfor gas in this StableToken currency.\n@param from The account to debit balance from\n@param feeRecipient Coinbase address\n@param gatewayFeeRecipient Gateway address\n@param communityFund Community fund address\n@param tipTxFee Coinbase fee\n@param baseTxFee Community fund fee\n@param gatewayFee Gateway fee\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. Before the tx is executed, gas is debited from the sender via a call to\n`debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\npayments for the transaction.", + "id": 44595, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 44531, + "modifierName": { + "argumentTypes": null, + "id": 44530, + "name": "onlyVm", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "20769:6:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20769:6:137" + }, + { + "arguments": null, + "id": 44533, + "modifierName": { + "argumentTypes": null, + "id": 44532, + "name": "onlyWhenNotFrozen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "20776:17:137", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "20776:17:137" + } + ], + "name": "creditGasFees", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44514, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20568:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20568:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44516, + "name": "feeRecipient", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20586:20:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44515, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20586:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44518, + "name": "gatewayFeeRecipient", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20612:27:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20612:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44520, + "name": "communityFund", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20645:21:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20645:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44522, + "name": "refund", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20672:14:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20672:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44524, + "name": "tipTxFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20692:16:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20692:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44526, + "name": "gatewayFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20714:18:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20714:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44528, + "name": "baseTxFee", + "nodeType": "VariableDeclaration", + "scope": 44595, + "src": "20738:17:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20738:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20562:197:137" + }, + "returnParameters": { + "id": 44534, + "nodeType": "ParameterList", + "parameters": [], + "src": "20794:0:137" + }, + "scope": 44644, + "src": "20540:624:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 44642, + "nodeType": "Block", + "src": "21256:218:137", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 44610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44606, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21266:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21280:1:137", + "subdenomination": null, + "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": 44607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21272:7:137", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 44609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21272:10:137", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21266:16:137", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 44614, + "nodeType": "IfStatement", + "src": "21262:45:137", + "trueBody": { + "id": 44613, + "nodeType": "Block", + "src": "21284:23:137", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 44611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21299:1:137", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 44605, + "id": 44612, + "nodeType": "Return", + "src": "21292:8:137" + } + ] + } + }, + { + "assignments": [ + 44616 + ], + "declarations": [ + { + "constant": false, + "id": 44616, + "name": "units", + "nodeType": "VariableDeclaration", + "scope": 44642, + "src": "21312:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21312:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 44622, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 44618, + "name": "inflationState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43371, + "src": "21342:14:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InflationState_$43369_storage", + "typeString": "struct StableToken.InflationState storage ref" + } + }, + "id": 44619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "factor", + "nodeType": "MemberAccess", + "referencedDeclaration": 43364, + "src": "21342:21:137", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + } + }, + { + "argumentTypes": null, + "id": 44620, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44601, + "src": "21365:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Fraction_$3011_storage", + "typeString": "struct FixidityLib.Fraction storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44617, + "name": "_valueToUnits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44268, + "src": "21328:13:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)" + } + }, + "id": 44621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21328:43:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21312:59:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44623, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "21377:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44625, + "indexExpression": { + "argumentTypes": null, + "id": 44624, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21386:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21377:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44630, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44616, + "src": "21409:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 44626, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43352, + "src": "21392:8:137", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 44628, + "indexExpression": { + "argumentTypes": null, + "id": 44627, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21401:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21392:12:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 46172, + "src": "21392:16:137", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 44631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21392:23:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21377:38:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 44633, + "nodeType": "ExpressionStatement", + "src": "21377:38:137" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 44635, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44597, + "src": "21435:4:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44636, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44599, + "src": "21441:2:137", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 44637, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44601, + "src": "21445:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 44634, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 43330 + ], + "referencedDeclaration": 43330, + "src": "21426:8:137", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 44638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21426:25:137", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 44639, + "nodeType": "EmitStatement", + "src": "21421:30:137" + }, + { + "expression": { + "argumentTypes": null, + "id": 44640, + "name": "units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44616, + "src": "21464:5:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 44605, + "id": 44641, + "nodeType": "Return", + "src": "21457:12:137" + } + ] + }, + "documentation": null, + "id": 44643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_creditGas", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 44602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44597, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21188:12:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21188:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44599, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21202:10:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21202:7:137", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44601, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21214:13:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21214:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21187:41:137" + }, + "returnParameters": { + "id": 44605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44604, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 44643, + "src": "21247:7:137", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21247:7:137", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21246:9:137" + }, + "scope": 44644, + "src": "21168:306:137", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 44645, + "src": "695:20782:137" + } + ], + "src": "0:21478:137" + }, + "compiler": { + "name": "solc", + "version": "0.5.13+commit.5b0b510c.Emscripten.clang" + }, + "networks": { + "1101": { + "events": { + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { + "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" + }, + "0x08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "factor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastUpdated", + "type": "uint256" + } + ], + "name": "InflationFactorUpdated", + "type": "event" + }, + "0xa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "updatePeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastUpdated", + "type": "uint256" + } + ], + "name": "InflationParametersUpdated", + "type": "event" + }, + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + "0x27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "RegistrySet", + "type": "event" + }, + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { + "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" + }, + "0xe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "comment", + "type": "string" + } + ], + "name": "TransferComment", + "type": "event" + } + }, + "links": {}, + "address": "0xb125995F5a4766C451cD8C34C4F5CAC89b724571", + "transactionHash": "0x4c63df2a02900cd5517b256fb6219bdfe96ccf8aeb08665411596429a082bd7e" + } + }, + "schemaVersion": "3.0.23", + "updatedAt": "2022-10-07T12:39:12.457Z", + "networkType": "ethereum", + "devdoc": { + "methods": { + "allowance(address,address)": { + "params": { + "accountOwner": "The owner of the StableToken.", + "spender": "The spender of the StableToken." + }, + "return": "The amount of StableToken owner is allowing spender to spend." + }, + "approve(address,uint256)": { + "params": { + "spender": "The address which is being approved to spend StableToken.", + "value": "The amount of StableToken approved to the spender." + }, + "return": "True if the transaction succeeds." + }, + "balanceOf(address)": { + "params": { + "accountOwner": "The address to query the balance of." + }, + "return": "The balance of the specified address." + }, + "burn(uint256)": { + "params": { + "value": "The amount of StableToken to burn." + } + }, + "checkProofOfPossession(address,bytes,bytes)": { + "params": { + "blsKey": "The BLS public key that the validator is using for consensus, should pass proof of possession. 48 bytes.", + "blsPop": "The BLS public key proof-of-possession, which consists of a signature on the account address. 96 bytes.", + "sender": "The address signed by the BLS key to generate the proof of possession." + }, + "return": "True upon success." + }, + "constructor": { + "params": { + "test": "Set to true to skip implementation initialization" + } + }, + "creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)": { + "details": "Note that this function is called by the protocol when paying for tx fees in this currency. Before the tx is executed, gas is debited from the sender via a call to `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.", + "params": { + "baseTxFee": "Community fund fee", + "communityFund": "Community fund address", + "feeRecipient": "Coinbase address", + "from": "The account to debit balance from", + "gatewayFee": "Gateway fee", + "gatewayFeeRecipient": "Gateway address", + "tipTxFee": "Coinbase fee" + } + }, + "debitGasFees(address,uint256)": { + "details": "Note that this function is called by the protocol when paying for tx fees in this currency. After the tx is executed, gas is refunded to the sender and credited to the various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.", + "params": { + "from": "The account to reserve balance from", + "value": "The amount of balance to reserve" + } + }, + "decimals()": { + "return": "The number of decimal places to which StableToken is divisible." + }, + "decreaseAllowance(address,uint256)": { + "params": { + "spender": "The address which is being approved to spend StableToken.", + "value": "The decrement of the amount of StableToken approved to the spender." + }, + "return": "True if the transaction succeeds." + }, + "fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)": { + "params": { + "_decimals": "precision", + "aDenominator": "Denominator of first fraction", + "aNumerator": "Numerator of first fraction", + "bDenominator": "Denominator of exponentiated fraction", + "bNumerator": "Numerator of exponentiated fraction", + "exponent": "exponent to raise b to" + }, + "return": "Numerator of the computed quantity (not reduced).Denominator of the computed quantity (not reduced)." + }, + "getBlockNumberFromHeader(bytes)": { + "params": { + "header": "RLP encoded header" + }, + "return": "Block number." + }, + "getEpochNumber()": { + "return": "Current epoch number." + }, + "getEpochNumberOfBlock(uint256)": { + "params": { + "blockNumber": "Block number where epoch number is calculated." + }, + "return": "Epoch number." + }, + "getEpochSize()": { + "return": "The current epoch size in blocks." + }, + "getExchangeRegistryId()": { + "details": "When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID. exchangeRegistryId was introduced after the initial release of cUSD's StableToken, so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken exchangeRegistryId were to be correctly initialized, this function could be deprecated in favor of using exchangeRegistryId directly.", + "return": "Registry id for the corresponding exchange." + }, + "getInflationParameters()": { + "return": "ratefactorupdatePeriodfactorLastUpdated" + }, + "getParentSealBitmap(uint256)": { + "params": { + "blockNumber": "Block number to retrieve. Must be within 4 epochs of the current number." + }, + "return": "Bitmap parent seal with set bits at indices corresponding to signing validators." + }, + "getVerifiedSealBitmapFromHeader(bytes)": { + "params": { + "header": "RLP encoded header" + }, + "return": "Bitmap parent seal with set bits at indices correspoinding to signing validators." + }, + "getVersionNumber()": { + "return": "Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract." + }, + "hashHeader(bytes)": { + "params": { + "header": "RLP encoded header" + }, + "return": "Header hash." + }, + "increaseAllowance(address,uint256)": { + "params": { + "spender": "The address which is being approved to spend StableToken.", + "value": "The increment of the amount of StableToken approved to the spender." + }, + "return": "True if the transaction succeeds." + }, + "initialize(string,string,uint8,address,uint256,uint256,address[],uint256[],string)": { + "params": { + "_decimals": "Tokens are divisible to this many decimal places.", + "_name": "The name of the stable token (English)", + "_symbol": "A short symbol identifying the token (e.g. \"cUSD\")", + "exchangeIdentifier": "String identifier of exchange in registry (for specific fiat pairs)", + "inflationFactorUpdatePeriod": "How often the inflation factor is updated, in seconds.", + "inflationRate": "Weekly inflation rate.", + "initialBalanceAddresses": "Array of addresses with an initial balance.", + "initialBalanceValues": "Array of balance values corresponding to initialBalanceAddresses.", + "registryAddress": "Address of the Registry contract." + } + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "minQuorumSize(uint256)": { + "details": "Computed in celo-blockchain as int(math.Ceil(float64(2*valSet.Size()) / 3))" + }, + "minQuorumSizeInCurrentSet()": { + "return": "Byzantine quorum of validators." + }, + "mint(address,uint256)": { + "params": { + "to": "The account for which to mint tokens.", + "value": "The amount of StableToken to mint." + } + }, + "name()": { + "return": "The name of the stable token." + }, + "numberValidatorsInCurrentSet()": { + "return": "Size of the current elected validator set." + }, + "numberValidatorsInSet(uint256)": { + "params": { + "blockNumber": "Block number to retrieve the validator set from." + }, + "return": "Size of the validator set." + }, + "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 anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "setInflationParameters(uint256,uint256)": { + "params": { + "rate": "New rate.", + "updatePeriod": "How often inflationFactor is updated." + } + }, + "setRegistry(address)": { + "params": { + "registryAddress": "The address of a registry contract for routing to other contracts." + } + }, + "symbol()": { + "return": "The symbol of the stable token." + }, + "totalSupply()": { + "details": "Though totalSupply_ is stored in units, this returns value.", + "return": "The total value of StableToken in existence" + }, + "transfer(address,uint256)": { + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "params": { + "from": "The address to transfer StableToken from.", + "to": "The address to transfer StableToken to.", + "value": "The amount of StableToken to transfer." + }, + "return": "True if the transaction succeeds." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "transferWithComment(address,uint256,string)": { + "params": { + "comment": "The transfer comment.", + "to": "The address to transfer to.", + "value": "The amount to be transferred." + }, + "return": "True if the transaction succeeds." + }, + "unitsToValue(uint256)": { + "params": { + "units": "The units to convert to value." + }, + "return": "The value corresponding to `units` given the current inflation factor." + }, + "validatorSignerAddressFromCurrentSet(uint256)": { + "params": { + "index": "Index of requested validator in the validator set." + }, + "return": "Address of validator at the requested index." + }, + "validatorSignerAddressFromSet(uint256,uint256)": { + "params": { + "blockNumber": "Block number to retrieve the validator set from.", + "index": "Index of requested validator in the validator set." + }, + "return": "Address of validator at the requested index." + }, + "valueToUnits(uint256)": { + "details": "We don't compute the updated inflationFactor here because we assume any function calling this will have updated the inflation factor.", + "params": { + "value": "The value to convert to units." + }, + "return": "The units corresponding to `value` given the current inflation factor." + } + }, + "title": "An ERC20 compliant token with adjustable supply." + }, + "userdoc": { + "methods": { + "allowance(address,address)": { + "notice": "Gets the amount of owner's StableToken allowed to be spent by spender." + }, + "approve(address,uint256)": { + "notice": "Approve a user to transfer StableToken on behalf of another user." + }, + "balanceOf(address)": { + "notice": "Gets the balance of the specified address using the presently stored inflation factor." + }, + "burn(uint256)": { + "notice": "Burns StableToken from the balance of msg.sender." + }, + "checkProofOfPossession(address,bytes,bytes)": { + "notice": "Checks a BLS proof of possession." + }, + "constructor": "Sets initialized == true on implementation contracts", + "creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)": { + "notice": "Alternative function to credit balance after making payments for gas in this StableToken currency." + }, + "debitGasFees(address,uint256)": { + "notice": "Reserve balance for making payments for gas in this StableToken currency." + }, + "decreaseAllowance(address,uint256)": { + "notice": "Decrease the allowance of another user." + }, + "fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)": { + "notice": "calculate a * b^x for fractions a, b to `decimals` precision" + }, + "getBlockNumberFromHeader(bytes)": { + "notice": "Parses block number out of header." + }, + "getEpochNumber()": { + "notice": "Returns the epoch number at a block." + }, + "getEpochNumberOfBlock(uint256)": { + "notice": "Returns the epoch number at a block." + }, + "getEpochSize()": { + "notice": "Returns the current epoch size in blocks." + }, + "getExchangeRegistryId()": { + "notice": "Returns the exchange id in the registry of the corresponding fiat pair exchange." + }, + "getInflationParameters()": { + "notice": "gets inflation parameters." + }, + "getParentSealBitmap(uint256)": { + "notice": "Gets the parent seal bitmap from the header at the given block number." + }, + "getVerifiedSealBitmapFromHeader(bytes)": { + "notice": "Verifies the BLS signature on the header and returns the seal bitmap. The validator set used for verification is retrieved based on the parent hash field of the header. If the parent hash is not in the blockchain, verification fails." + }, + "getVersionNumber()": { + "notice": "Returns the storage, major, minor, and patch version of the contract." + }, + "hashHeader(bytes)": { + "notice": "Computes hash of header." + }, + "increaseAllowance(address,uint256)": { + "notice": "Increase the allowance of another user." + }, + "minQuorumSize(uint256)": { + "notice": "Returns the minimum number of required signers for a given block number." + }, + "minQuorumSizeInCurrentSet()": { + "notice": "Computes byzantine quorum from current validator set size" + }, + "mint(address,uint256)": { + "notice": "Mints new StableToken and gives it to 'to'." + }, + "numberValidatorsInCurrentSet()": { + "notice": "Gets the size of the current elected validator set." + }, + "numberValidatorsInSet(uint256)": { + "notice": "Gets the size of the validator set that must sign the given block number." + }, + "setInflationParameters(uint256,uint256)": { + "notice": "Updates Inflation Parameters." + }, + "setRegistry(address)": { + "notice": "Updates the address pointing to a Registry contract." + }, + "transfer(address,uint256)": { + "notice": "Transfers `value` from `msg.sender` to `to`" + }, + "transferFrom(address,address,uint256)": { + "notice": "Transfers StableToken from one address to another on behalf of a user." + }, + "transferWithComment(address,uint256,string)": { + "notice": "Transfer token for a specified address" + }, + "unitsToValue(uint256)": { + "notice": "Returns the value of a given number of units given the current inflation factor." + }, + "validatorSignerAddressFromCurrentSet(uint256)": { + "notice": "Gets a validator address from the current validator set." + }, + "validatorSignerAddressFromSet(uint256,uint256)": { + "notice": "Gets a validator address from the validator set at the given block number." + }, + "valueToUnits(uint256)": { + "notice": "Returns the units for a given value given the current inflation factor." + } + } + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/components/Footer.tsx b/celo-social-connect-dapp/packages/react-app/components/Footer.tsx new file mode 100644 index 00000000..3047a963 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/components/Footer.tsx @@ -0,0 +1,49 @@ + +type Props = { + className?: string +} + +const navigation = [ + { + name: 'Twitter', + href: 'https://twitter.com/CeloDevs', + icon: (props: Props) => ( + + + + ), + }, + { + name: 'GitHub', + href: 'https://github.com/celo-org/celo-composer', + icon: (props: Props) => ( + + + + ), + } + ] + + export default function Footer() { + return ( +
+
+
+ {navigation.map((item) => ( + + {item.name} + + ))} +
+
+

© {new Date().getFullYear()} Developed with 🖤 by the Celo DevRel team.

+
+
+
+ ) + } \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/components/Header.tsx b/celo-social-connect-dapp/packages/react-app/components/Header.tsx new file mode 100644 index 00000000..b4c7218b --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/components/Header.tsx @@ -0,0 +1,60 @@ +import { Disclosure } from "@headlessui/react"; +import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/outline"; +import { ConnectButton } from "@rainbow-me/rainbowkit"; +import Image from "next/image"; + +export default function Header() { + return ( + + {({ open }) => ( + <> +
+
+
+ {/* Mobile menu button */} + + Open main menu + {open ? ( + +
+
+
+ Celo Logo +
+ +
+
+ +
+
+
+ + +
+ + Home + + {/* Add here your custom menu elements */} +
+
+ + )} +
+ ) + } \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/components/Layout.tsx b/celo-social-connect-dapp/packages/react-app/components/Layout.tsx new file mode 100644 index 00000000..a2ff114a --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/components/Layout.tsx @@ -0,0 +1,22 @@ +import { FC, ReactNode } from "react"; +import Footer from "./Footer"; +import Header from "./Header"; + +interface Props { + children: ReactNode +} +const Layout: FC = ({children}) => { + return ( + <> +
+
+
+ {children} +
+
+
+ + ) +} + +export default Layout; \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/next.config.js b/celo-social-connect-dapp/packages/react-app/next.config.js new file mode 100644 index 00000000..da02536a --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/next.config.js @@ -0,0 +1,16 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + swcMinify: true, + webpack: (config) => { + config.resolve.fallback = { + fs: false + } + return config + }, + images: { + domains: ["pbs.twimg.com"], + }, +} + +module.exports = nextConfig diff --git a/celo-social-connect-dapp/packages/react-app/package.json b/celo-social-connect-dapp/packages/react-app/package.json new file mode 100644 index 00000000..e207fb3e --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/package.json @@ -0,0 +1,43 @@ +{ + "name": "@celo-social-connect-dapp/react-app", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@celo/identity": "^4.1.0", + "@celo/rainbowkit-celo": "^1.0.0", + "@headlessui/react": "^1.7.14", + "@heroicons/react": "^2.0.18", + "@rainbow-me/rainbowkit": "^1.0.0", + "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#3d1013af", + "ethers": "^5.7.2", + "next": "^13.4.2", + "next-auth": "^4.22.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-icons": "^4.8.0", + "viem": "^0.3.30", + "wagmi": "^1.0.5" + }, + "devDependencies": { + "@types/node": "^20.2.1", + "@types/react": "^18.2.6", + "@types/react-dom": "^18.2.4", + "autoprefixer": "^10.4.14", + "eslint": "^8.40.0", + "eslint-config-next": "^13.4.2", + "postcss": "^8.4.23", + "tailwindcss": "^3.3.2", + "typescript": "^5.0.4" + }, + "browser": { + "@celo/poprf": false, + "source-map-support": false, + "net": false + } +} diff --git a/celo-social-connect-dapp/packages/react-app/pages/_app.tsx b/celo-social-connect-dapp/packages/react-app/pages/_app.tsx new file mode 100644 index 00000000..01c7d986 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/pages/_app.tsx @@ -0,0 +1,41 @@ +import type { AppProps } from "next/app"; +import { RainbowKitProvider } from "@rainbow-me/rainbowkit"; +import { configureChains, createConfig, WagmiConfig } from "wagmi"; +import { jsonRpcProvider } from "wagmi/providers/jsonRpc"; +import celoGroups from "@celo/rainbowkit-celo/lists"; +import { Alfajores, Celo } from "@celo/rainbowkit-celo/chains"; +import { SessionProvider } from "next-auth/react"; +import Layout from "../components/Layout"; +import "../styles/globals.css"; +import "@rainbow-me/rainbowkit/styles.css"; + +const projectId = "celo-composer-project-id" // get one at https://cloud.walletconnect.com/app + +const { chains, publicClient } = configureChains( + [Alfajores, Celo], + [jsonRpcProvider({ rpc: (chain) => ({ http: chain.rpcUrls.default.http[0] }) })] +); + +const connectors = celoGroups({chains, projectId, appName: typeof document === "object" && document.title || "Your App Name"}) + +const wagmiConfig = createConfig({ + autoConnect: true, + connectors, + publicClient: publicClient, +}); + +function App({ Component, pageProps }: AppProps) { + return ( + + + + + + + + + + ) +} + +export default App; \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/pages/index.tsx b/celo-social-connect-dapp/packages/react-app/pages/index.tsx new file mode 100644 index 00000000..9a86a455 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/pages/index.tsx @@ -0,0 +1,262 @@ +import { + ALFAJORES_CUSD_ADDRESS, + ALFAJORES_RPC, + FA_CONTRACT, + FA_PROXY_ADDRESS, + ODIS_PAYMENTS_CONTRACT, + ODIS_PAYMENTS_PROXY_ADDRESS, + STABLE_TOKEN_CONTRACT, + ISSUER_PRIVATE_KEY, + DEK_PRIVATE_KEY +} from "../utils/constants"; +import { OdisUtils } from "@celo/identity"; +import { AuthenticationMethod, AuthSigner, OdisContextName } from "@celo/identity/lib/odis/query"; +import { ethers, Wallet } from "ethers"; +import { WebBlsBlindingClient } from "../utils/webBlindingClient"; +import { parseEther } from "viem"; +import { useSession, signIn, signOut } from "next-auth/react"; +import { LockOpenIcon, LockClosedIcon } from "@heroicons/react/24/outline"; +import { useAccount, useSendTransaction } from "wagmi"; +import { ISocialConnect } from "@/utils/ISocialConnect"; + +import { useEffect, useState } from "react"; + + +export default function Home() { + + let [sc, setSc] = useState(); + let [phone, setPhone] = useState('') + const [amount, setAmount] = useState(''); + + // step no. 1 + let { address } = useAccount(); + + // step no. 2 + let { data: session } = useSession(); + let [socialIdentifier, setSocialIdentifier] = useState(""); + + // step no. 3 + // let [identifierToSend, setIdentifierToSend] = useState(""); + let [addressToSend, setAddressToSend] = useState(""); + + useEffect(() => { + + let provider = new ethers.providers.JsonRpcProvider(ALFAJORES_RPC); + let issuer = new Wallet(ISSUER_PRIVATE_KEY!, provider); + let serviceContext = OdisUtils.Query.getServiceContext(OdisContextName.ALFAJORES); + let blindingClient = new WebBlsBlindingClient(serviceContext.odisPubKey); + let quotaFee = ethers.utils.parseEther("0.01"); + let authSigner: AuthSigner = { + authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, + rawKey: DEK_PRIVATE_KEY! + }; + let federatedAttestationsContract = new ethers.Contract( + FA_PROXY_ADDRESS!, + FA_CONTRACT.abi, + issuer + ); + let odisPaymentsContract = new ethers.Contract( + ODIS_PAYMENTS_PROXY_ADDRESS!, + ODIS_PAYMENTS_CONTRACT.abi, + issuer + ); + let stableTokenContract = new ethers.Contract( + ALFAJORES_CUSD_ADDRESS!, + STABLE_TOKEN_CONTRACT.abi, + issuer + ); + let sCVars : ISocialConnect = { + issuerAddress: issuer.address, + federatedAttestationsContract, + odisPaymentsContract, + stableTokenContract, + authSigner, + serviceContext, + quotaFee, + blindingClient + }; + setSc(sCVars); + }, []); + + // const bigintAmount: bigint = BigInt(amount.toString()); + let { sendTransaction } = useSendTransaction({ + to: addressToSend, + value: parseEther("1", "wei") + // value: ethers.utils.parseUnits(amount, 18) + // value: ethers.utils.parseEther(amount) + }); + + async function checkAndTopUpODISQuota() { + const { remainingQuota } = await OdisUtils.Quota.getPnpQuotaStatus( + sc!.issuerAddress, + sc!.authSigner, + sc!.serviceContext + ); + if (remainingQuota < 1) { + let currentAllowance = await sc!.stableTokenContract.allowance( + sc!.issuerAddress, + sc!.odisPaymentsContract.address + ); + let enoughAllowance = false; + if (sc!.quotaFee.gt(currentAllowance)) { + let approvalTxReceipt = await sc!.stableTokenContract + .increaseAllowance( + sc!.odisPaymentsContract.address, + sc!.quotaFee + ); + enoughAllowance = approvalTxReceipt.status; + } else { + enoughAllowance = true; + } + if (enoughAllowance) { + let odisPayment = await sc!.odisPaymentsContract + .payInCUSD( + sc!.issuerAddress, + sc!.quotaFee + ); + } else { + throw "ODIS => cUSD approval failed"; + } + } + } + + async function getObfuscatedIdentifier(identifier: string) { + let obfuscatedIdentifier = ( + await OdisUtils.Identifier.getObfuscatedIdentifier( + identifier, + OdisUtils.Identifier.IdentifierPrefix.PHONE_NUMBER, + sc!.issuerAddress, + sc!.authSigner, + sc!.serviceContext, + undefined, + undefined, + sc!.blindingClient + ) + ).obfuscatedIdentifier; + return obfuscatedIdentifier; + } + + async function registerAttestation(identifier: string, account: string) { + // check and top up ODIS quota + await checkAndTopUpODISQuota(); + let nowTimestamp = Math.floor(new Date().getTime() / 1000); + let obfuscatedIdentifier = getObfuscatedIdentifier(identifier); + await sc!.federatedAttestationsContract.registerAttestationAsIssuer( + obfuscatedIdentifier, + account, + nowTimestamp + ); + alert("Address mapped."); + } + + async function lookupAddress() { + let obfuscatedIdentifier = getObfuscatedIdentifier(socialIdentifier); + let attestations = await sc!.federatedAttestationsContract.lookupAttestations( + obfuscatedIdentifier, + [sc!.issuerAddress] + ); + let [latestAddress] = attestations.accounts; + setAddressToSend(latestAddress); + } + + async function deregisterIdentifier(identifier: string) { + try { + let obfuscatedIdentifier = getObfuscatedIdentifier(identifier); + await sc!.federatedAttestationsContract + .revokeAttestation(obfuscatedIdentifier, sc!.issuerAddress, address); + alert("Address de-registered."); + } catch (error) { + + } + } + + + return ( +
+
+
+
+
+

TUSH-TIP PROTOCOL

+

You can now send celo to your friends and family using their phones numbers. + Tush-Tip Protocol helps us achieve this. All you need to do is register and share + our product with your loved ones so they can register and get connected to seamless + transactions. +

+
+
+ +
+
+ {/* registration part */} +
+

Registration

+

(Skip if already registered)

+
{ + e.preventDefault(); + registerAttestation( + phone, address! + ) + } + } + className=" flex gap-10" + > + setPhone(e.target.value)} + placeholder="Enter phone number" + className=" border-red-300 border-2 py-4 px-2 rounded-lg w-[500px]" + /> + + +
+ +
+ + {/* lookup part */} +
+

Verify Recepient

+
{ + e.preventDefault(); + lookupAddress(); + }} + className=" flex gap-10" + > + setSocialIdentifier(e.target.value)} + placeholder="Enter reciever's phone number" + className=" border-red-300 border-2 py-4 px-2 rounded-lg w-[500px]" + /> + + +
+ +
+

Send Celo

+

Verified recipient address: {addressToSend}

+
{ + e.preventDefault(); + sendTransaction(); + }} + className=" flex "> + {/*

+ hello +

*/} + + +
+
+
+
+ +
+ ) +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/postcss.config.js b/celo-social-connect-dapp/packages/react-app/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/celo-social-connect-dapp/packages/react-app/public/blind_threshold_bls_bg.wasm b/celo-social-connect-dapp/packages/react-app/public/blind_threshold_bls_bg.wasm new file mode 100644 index 00000000..be17ccc5 Binary files /dev/null and b/celo-social-connect-dapp/packages/react-app/public/blind_threshold_bls_bg.wasm differ diff --git a/celo-social-connect-dapp/packages/react-app/public/favicon.ico b/celo-social-connect-dapp/packages/react-app/public/favicon.ico new file mode 100644 index 00000000..52c5ead8 Binary files /dev/null and b/celo-social-connect-dapp/packages/react-app/public/favicon.ico differ diff --git a/celo-social-connect-dapp/packages/react-app/public/logo.svg b/celo-social-connect-dapp/packages/react-app/public/logo.svg new file mode 100755 index 00000000..06bf9156 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/public/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/celo-social-connect-dapp/packages/react-app/styles/globals.css b/celo-social-connect-dapp/packages/react-app/styles/globals.css new file mode 100644 index 00000000..bd6213e1 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/styles/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/tailwind.config.js b/celo-social-connect-dapp/packages/react-app/tailwind.config.js new file mode 100644 index 00000000..97bebc57 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/tailwind.config.js @@ -0,0 +1,34 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + /** primary */ + "prosperity": "#FCFF52", + "forest": "#476520", + /** base */ + "gypsum": "#FCF6F1", + "sand": "#E7E3D4", + "wood": "#655947", + "fig": "#1E002B", + /** functional */ + "snow": "#FFFFFF", + "onyx": "#000000", + "success": "#329F3B", + "error": "#E70532", + "disabled": "#9B9B9B", + /** accent */ + "sky": "#7CC0FF", + "citrus": "#FF9A51", + "lotus": "#FFA3EB", + "lavender": "#B490FF" + } + }, + }, + plugins: [], +} diff --git a/celo-social-connect-dapp/packages/react-app/tsconfig.json b/celo-social-connect-dapp/packages/react-app/tsconfig.json new file mode 100644 index 00000000..c66d433a --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "baseUrl": ".", + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["*"], + "@local-contracts/*": ["../hardhat/*"] + }, + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/celo-social-connect-dapp/packages/react-app/utils/ISocialConnect.ts b/celo-social-connect-dapp/packages/react-app/utils/ISocialConnect.ts new file mode 100644 index 00000000..20e88da3 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/utils/ISocialConnect.ts @@ -0,0 +1,26 @@ +import { ethers } from "ethers"; +import { AuthSigner } from "@celo/identity/lib/odis/query"; +import { WebBlsBlindingClient } from "./webBlindingClient"; + +interface ServiceContext { + odisUrl: string; + odisPubKey: string; +} + +export interface ISocialConnect { + + children?: React.ReactNode; + + // General + issuerAddress: string; + authSigner: AuthSigner; + serviceContext: ServiceContext; + quotaFee: ethers.BigNumber; + blindingClient: WebBlsBlindingClient; + + // Contracts + federatedAttestationsContract: ethers.Contract; + odisPaymentsContract: ethers.Contract; + stableTokenContract: ethers.Contract; + +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/utils/constants.ts b/celo-social-connect-dapp/packages/react-app/utils/constants.ts new file mode 100644 index 00000000..cfd0ea6b --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/utils/constants.ts @@ -0,0 +1,20 @@ +export const FA_CONTRACT = require("../abis/FederatedAttestations.json"); +export const FA_PROXY_CONTRACT = require("../abis/FederatedAttestationsProxy.json"); +export const REGISTRY_CONTRACT = require("../abis/Registry.json"); +export const ESCROW_PROXY_CONTRACT = require("../abis/EscrowProxy.json"); +export const ESCROW_CONTRACT = require("../abis/Escrow.json"); +export const ODIS_PAYMENTS_CONTRACT = require("../abis/OdisPayments.json"); +export const STABLE_TOKEN_CONTRACT = require("../abis/StableToken.json"); +export const ACCOUNTS_CONTRACT = require("../abis/Accounts.json") + +export const ALFAJORES_RPC = process.env.NEXT_PUBLIC_ALFAJORES_RPC; +export const ALFAJORES_ACCOUNT = process.env.NEXT_PUBLIC_ALFAJORES_ACCOUNT; +export const ALFAJORES_ACCOUNT_PK = process.env.NEXT_PUBLIC_ALFAJORES_ACCOUNT_PK; +export const FA_PROXY_ADDRESS = process.env.NEXT_PUBLIC_FA_PROXY_ADDRESS; +export const ESCROW_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ESCROW_PROXY_ADDRESS; +export const ODIS_PAYMENTS_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ODIS_PAYMENTS_PROXY_ADDRESS; +export const ALFAJORES_CUSD_ADDRESS = process.env.NEXT_PUBLIC_ALFAJORES_CUSD_ADDRESS; +export const ACCOUNTS_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ACCOUNTS_PROXY_ADDRESS; +export const ISSUER_PRIVATE_KEY = process.env.NEXT_PUBLIC_ISSUER_PRIVATE_KEY; +export const DEK_PUBLIC_KEY = process.env.NEXT_PUBLIC_DEK_PUBLIC_KEY; +export const DEK_PRIVATE_KEY = process.env.NEXT_PUBLIC_DEK_PRIVATE_KEY; \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/utils/webBlindingClient.ts b/celo-social-connect-dapp/packages/react-app/utils/webBlindingClient.ts new file mode 100644 index 00000000..89cc2825 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/utils/webBlindingClient.ts @@ -0,0 +1,58 @@ +import { randomBytes } from "crypto"; +import thresholdBls from "blind-threshold-bls"; +import { BlsBlindingClient } from "@celo/identity/lib/odis/bls-blinding-client"; + +interface BlindedMessage { + blindingFactor: Uint8Array; + message: Uint8Array; +} + +export class WebBlsBlindingClient implements BlsBlindingClient { + private odisPubKey: Uint8Array; + private blindedValue: BlindedMessage | undefined; + private rawMessage: Buffer | undefined; + + constructor(odisPubKey: string) { + this.odisPubKey = Buffer.from(odisPubKey, "base64"); + this.init(); + } + + async init() { + await thresholdBls.init("./blind_threshold_bls_bg.wasm"); + } + + async blindMessage( + base64PhoneNumber: string, + seed?: Buffer + ): Promise { + const userSeed = seed ?? randomBytes(32); + if (!seed) { + console.warn( + "Warning: Use a private deterministic seed (e.g. DEK private key) to preserve user quota when requests are replayed." + ); + } + this.rawMessage = Buffer.from(base64PhoneNumber, "base64"); + this.blindedValue = await thresholdBls.blind(this.rawMessage, userSeed); + const blindedMessage = this.blindedValue.message; + return Buffer.from(blindedMessage).toString("base64"); + } + + async unblindAndVerifyMessage(base64BlindSig: string): Promise { + if (!this.rawMessage || !this.blindedValue) { + throw new Error("Must call blind before unblinding"); + } + + const blindedSignature = Buffer.from(base64BlindSig, "base64"); + const unblindMessage = await thresholdBls.unblind( + blindedSignature, + this.blindedValue.blindingFactor + ); + // this throws on error + await thresholdBls.verify( + this.odisPubKey, + this.rawMessage, + unblindMessage + ); + return Buffer.from(unblindMessage).toString("base64"); + } +} \ No newline at end of file diff --git a/celo-social-connect-dapp/packages/react-app/yarn.lock b/celo-social-connect-dapp/packages/react-app/yarn.lock new file mode 100644 index 00000000..82832fa1 --- /dev/null +++ b/celo-social-connect-dapp/packages/react-app/yarn.lock @@ -0,0 +1,7568 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" + integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.20.7": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + dependencies: + regenerator-runtime "^0.13.11" + +"@celo/base@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/base/-/base-4.1.0.tgz#9cd45f1c7d0ac61b4e2e98c046066f9eb9e143e9" + integrity sha512-Q9wKLa4JJw06FXpToZm5PYfFYjx+tvwIQlvFofx+GleX+uq+BT/gdxgTQ/c08OrxZUyc53TUdqSCs+88VlhmlA== + +"@celo/connect@4.1.0", "@celo/connect@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-4.1.0.tgz#bcdd2a37e7c6e034371a097810f7e64444de397e" + integrity sha512-1PaPy/b9ZLtXGCNN7lqlt0Nqsw/Ql20iCcOZbrAhoN9HkxtHI/yMK7p9aMGDR0Qy4jEi123p8kt5qgJhH2IkKg== + dependencies: + "@celo/base" "4.1.0" + "@celo/utils" "4.1.0" + "@types/debug" "^4.1.5" + "@types/utf8" "^2.1.6" + bignumber.js "^9.0.0" + debug "^4.1.1" + utf8 "3.0.0" + +"@celo/contractkit@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-4.1.0.tgz#6e88edca10a67c90eaa5e58b64e0dda68a1df87e" + integrity sha512-JmlCMrU2o09zjA6hiRixdKzTTmwkm2STL39sraYD96JMJsywwnu300oRMEupDZN3HobwStKTuTnR8r+xGeWT9Q== + dependencies: + "@celo/base" "4.1.0" + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-local" "4.1.0" + "@types/bn.js" "^5.1.0" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + cross-fetch "^3.0.6" + debug "^4.1.1" + fp-ts "2.1.1" + io-ts "2.0.1" + semver "^7.3.5" + web3 "1.3.6" + +"@celo/rainbowkit-celo@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@celo/rainbowkit-celo/-/rainbowkit-celo-1.0.0.tgz#b8f1a5e5325295c6f4b3ad00fe6e94fab98142aa" + integrity sha512-DTi48TUEdnJF9Za2wrKhuMuO3sGwf3OHooK+5dryqy8zRbJQXkf2f5VOM1qlKqKbRiwBQQxdxDOh/VE44+eO3g== + dependencies: + "@wagmi/chains" "^0.2.22" + +"@celo/react-celo@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@celo/react-celo/-/react-celo-5.0.3.tgz#79d1d82b3fab4b60c5bb79518a6362598d0603b9" + integrity sha512-vGzcyUpaNnpr3A5m6GllEUSw0K90MRFtUKRvUROYiOShaTylVerA2Q99xdtUFhF3916NJhywzKT6p4Uf8b8b1A== + dependencies: + "@celo/wallet-base" ">=2.3.0" + "@celo/wallet-ledger" ">=2.3.0" + "@celo/wallet-local" ">=2.3.0" + "@celo/wallet-remote" ">=2.3.0" + "@celo/wallet-walletconnect" "5.0.3" + "@coinbase/wallet-sdk" "^3.2.0" + "@ethersproject/providers" "^5.5.2" + "@ledgerhq/hw-transport-webusb" "^5.43.0" + "@types/react-modal" "^3.13.1" + eventemitter3 "^4.0.7" + isomorphic-fetch "^3.0.0" + qrcode "^1.5.0" + react-device-detect "^2.1.2" + react-helmet "^6.1.0" + react-modal "^3.14.4" + +"@celo/utils@4.1.0", "@celo/utils@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-4.1.0.tgz#ffbfedb8d5866af8d309b57a79dfb35870e368e8" + integrity sha512-N0ijAXAGFQavX75clVXhGOVTzSpv/AJmh+igYUCNVzyF0s/Ms/l9WjjEQsd0c3uWRkWBLXiKmCNTI9LZXazjkw== + dependencies: + "@celo/base" "4.1.0" + "@types/bn.js" "^5.1.0" + "@types/elliptic" "^6.4.9" + "@types/ethereumjs-util" "^5.2.0" + "@types/node" "^10.12.18" + bignumber.js "^9.0.0" + elliptic "^6.5.4" + ethereumjs-util "^5.2.0" + io-ts "2.0.1" + web3-eth-abi "1.3.6" + web3-utils "1.3.6" + +"@celo/wallet-base@4.1.0", "@celo/wallet-base@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-4.1.0.tgz#890ad567b73ad59ba7f8eb060372fd8ab8476bb7" + integrity sha512-fc6DGI6vcwGE/z3hT/7rZkQ9nvv/7l8RAEmof05zqMCdXdqaq135GWuE5H7gcC/qCLJzRNVpPGcWAPKUQ4z03A== + dependencies: + "@celo/base" "4.1.0" + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@types/debug" "^4.1.5" + "@types/ethereumjs-util" "^5.2.0" + bignumber.js "^9.0.0" + debug "^4.1.1" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-ledger@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-ledger/-/wallet-ledger-4.1.0.tgz#366c2f219d798cebcfa76fdf0048d5880a292d5a" + integrity sha512-8UVJsEIGGc2rWo3U70fq3dv9QoTpapYdiOQ/RJGctfoWduMLRWeTIApk4DJ9+wUS0Wjf3F5+U9q35UxVp/KTdA== + dependencies: + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-base" "4.1.0" + "@celo/wallet-remote" "4.1.0" + "@ledgerhq/hw-app-eth" "~5.11.0" + "@ledgerhq/hw-transport" "~5.11.0" + "@types/ethereumjs-util" "^5.2.0" + debug "^4.1.1" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-local@4.1.0", "@celo/wallet-local@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-4.1.0.tgz#e75ffb44f0352585db13f823034230d14064af1e" + integrity sha512-nG7f77gblF3CQ3811LOtmoLr8yC+f+G6QjkgUV9GmFNBDdUNQZf7OM1ZQaYib10D6OwY0UPxlP9N+tweVWDOdA== + dependencies: + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-base" "4.1.0" + "@types/ethereumjs-util" "^5.2.0" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-remote@4.1.0", "@celo/wallet-remote@>=2.3.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-remote/-/wallet-remote-4.1.0.tgz#40b89fb9aa6e5f1f93d6f6719728e6d71f2546df" + integrity sha512-SNxVdLa6ixJGDqOyBI2SOJN5CLr6gZG0AUCo0cPwkpV7c5Dy9ezJ2gRWxxvcbU1j++Jjh/H1yyKLmqbfUEtw8w== + dependencies: + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-base" "4.1.0" + "@types/debug" "^4.1.5" + "@types/ethereumjs-util" "^5.2.0" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-walletconnect@5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@celo/wallet-walletconnect/-/wallet-walletconnect-5.0.3.tgz#bb6a98ba211cf0dad3bab882172230bfd5d12d71" + integrity sha512-8mpWU3aVB+whIpbMsSAVD4i/iih9Wa94feKhqKoqwC/2qUhGcjBZosu05yj3rCSJpEq75P/CqHjRym0O3Xphzw== + dependencies: + "@celo/connect" ">=2.3.0" + "@celo/utils" ">=2.3.0" + "@celo/wallet-base" ">=2.3.0" + "@celo/wallet-remote" ">=2.3.0" + "@walletconnect/auth-client" "^2.0.2" + "@walletconnect/sign-client" "^2.3.2" + "@walletconnect/types" "^2.3.2" + "@walletconnect/utils" "^2.3.2" + debug "^4.3.3" + ethereumjs-util "^7.1.3" + +"@coinbase/wallet-sdk@^3.2.0", "@coinbase/wallet-sdk@^3.6.6": + version "3.6.6" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.6.tgz#4a0758fe0fe0ba3ed7e33b5bb6eb094ff8bd6c98" + integrity sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg== + dependencies: + "@metamask/safe-event-emitter" "2.0.0" + "@solana/web3.js" "^1.70.1" + bind-decorator "^1.0.11" + bn.js "^5.1.1" + buffer "^6.0.3" + clsx "^1.1.0" + eth-block-tracker "6.1.0" + eth-json-rpc-filters "5.1.0" + eth-rpc-errors "4.0.2" + json-rpc-engine "6.1.0" + keccak "^3.0.1" + preact "^10.5.9" + qs "^6.10.3" + rxjs "^6.6.3" + sha.js "^2.4.11" + stream-browserify "^3.0.0" + util "^0.12.4" + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.2" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.40.0": + version "8.40.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec" + integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA== + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.5.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@headlessui/react@^1.7.14": + version "1.7.14" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.14.tgz#75f19552c535113640fe8a3a40e71474f49e89c9" + integrity sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA== + dependencies: + client-only "^0.0.1" + +"@heroicons/react@^2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.18.tgz#f80301907c243df03c7e9fd76c0286e95361f7c1" + integrity sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw== + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@json-rpc-tools/provider@^1.5.5": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" + integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== + dependencies: + "@json-rpc-tools/utils" "^1.7.6" + axios "^0.21.0" + safe-json-utils "^1.1.1" + ws "^7.4.0" + +"@json-rpc-tools/types@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" + integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" + integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== + dependencies: + "@json-rpc-tools/types" "^1.7.6" + "@pedrouid/environment" "^1.0.1" + +"@ledgerhq/connect-kit-loader@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a" + integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g== + +"@ledgerhq/devices@^5.11.0", "@ledgerhq/devices@^5.51.1": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" + integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== + dependencies: + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/logs" "^5.50.0" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/errors@^5.11.0", "@ledgerhq/errors@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" + integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== + +"@ledgerhq/hw-app-eth@~5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.11.0.tgz#5db6abe0ddf5b5266ed09868de12021f59c1a33e" + integrity sha512-qgpPwZzM8UMHYMC5+9xYV2O+8kgkDAl9+38w9JiBksaGmUFqcS4najsB1nj6AWf2rGEuXdKMb2WEYRskVypJrA== + dependencies: + "@ledgerhq/errors" "^5.11.0" + "@ledgerhq/hw-transport" "^5.11.0" + +"@ledgerhq/hw-transport-webusb@^5.43.0": + version "5.53.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz#3df8c401417571e3bcacc378d8aca587214b05ae" + integrity sha512-A/f+xcrkIAZiJrvPpDvsrjxQX4cI2kbdiunQkwsYmOG3Bp4z89ZnsBiC7YBst4n2/g+QgTg0/KPVtODU5djooQ== + dependencies: + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/hw-transport" "^5.51.1" + "@ledgerhq/logs" "^5.50.0" + +"@ledgerhq/hw-transport@^5.11.0", "@ledgerhq/hw-transport@^5.51.1": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" + integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== + dependencies: + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + events "^3.3.0" + +"@ledgerhq/hw-transport@~5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.11.0.tgz#f5c45a34d9b68d81fd2f6641b49815527720364b" + integrity sha512-z56iwv0DZZu20T5q9sNMHFQNVuRKYqzCuNFhY9woWSpmOQkyVHCRiEgOQbN5h6kVri6fkfPkDzqqcsYjJlnT9g== + dependencies: + "@ledgerhq/devices" "^5.11.0" + "@ledgerhq/errors" "^5.11.0" + events "^3.1.0" + +"@ledgerhq/logs@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" + integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== + +"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9" + integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ== + +"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" + integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.0.0" + +"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== + +"@metamask/utils@^3.0.1": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-3.6.0.tgz#b218b969a05ca7a8093b5d1670f6625061de707d" + integrity sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ== + dependencies: + "@types/debug" "^4.1.7" + debug "^4.3.4" + semver "^7.3.8" + superstruct "^1.0.3" + +"@motionone/animation@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" + integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + dependencies: + "@motionone/easing" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/dom@^10.15.5", "@motionone/dom@^10.16.2": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.16.2.tgz#0c44df8ee3d1cfc50ee11d27050b27824355a61a" + integrity sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/generators" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/easing@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" + integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== + dependencies: + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/generators@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" + integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + dependencies: + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/svelte@^10.15.5": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.2.tgz#0b37c3b12927814d31d24941d1ca0ff49981b444" + integrity sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + +"@motionone/types@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" + integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== + +"@motionone/utils@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" + integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== + dependencies: + "@motionone/types" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/vue@^10.15.5": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.2.tgz#faf13afc27620a2df870c71c58a04ee8de8dea65" + integrity sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + +"@next/env@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.2.tgz#cf3ebfd523a33d8404c1216e02ac8d856a73170e" + integrity sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw== + +"@next/eslint-plugin-next@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.2.tgz#ce32730d6282af3151a07de6e865397dc6d3dbdf" + integrity sha512-ZeFWgrxwckxTpYM+ANeUL9E7LOGPbZKmI94LJIjbDU69iEIgqd4WD0l2pVbOJMr/+vgoZmJ9Dx1m0WJ7WScXHA== + dependencies: + glob "7.1.7" + +"@next/swc-darwin-arm64@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.2.tgz#d0b497df972bd02eee3bc823d6a76c2cc8b733ef" + integrity sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw== + +"@next/swc-darwin-x64@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.2.tgz#09a800bed8dfe4beec4cbf14092f9c22db24470b" + integrity sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg== + +"@next/swc-linux-arm64-gnu@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.2.tgz#b7ade28834564120b0b25ffa0b79d75982d290bc" + integrity sha512-2xVabFtIge6BJTcJrW8YuUnYTuQjh4jEuRuS2mscyNVOj6zUZkom3CQg+egKOoS+zh2rrro66ffSKIS+ztFJTg== + +"@next/swc-linux-arm64-musl@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.2.tgz#f5420548234d35251630ddaa2e9a7dc32337a887" + integrity sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A== + +"@next/swc-linux-x64-gnu@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.2.tgz#0241dc011d73f08df9d9998cffdfcf08d1971520" + integrity sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA== + +"@next/swc-linux-x64-musl@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.2.tgz#fd35919e2b64b1c739583145799fefd594ef5d63" + integrity sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ== + +"@next/swc-win32-arm64-msvc@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.2.tgz#fa95d2dbb97707c130a868a1bd7e83e64bedf4c6" + integrity sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ== + +"@next/swc-win32-ia32-msvc@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.2.tgz#31a98e61d3cda92ec2293c50df7cb5280fc63697" + integrity sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw== + +"@next/swc-win32-x64-msvc@13.4.2": + version "13.4.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.2.tgz#8435ab6087046355f5de07122d3097949e8fab10" + integrity sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw== + +"@noble/curves@1.0.0", "@noble/curves@^1.0.0", "@noble/curves@~1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" + integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw== + dependencies: + "@noble/hashes" "1.3.0" + +"@noble/hashes@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + +"@noble/hashes@1.3.0", "@noble/hashes@^1.3.0", "@noble/hashes@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pedrouid/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" + integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== + +"@pkgr/utils@^2.3.1": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.0.tgz#b6373d2504aedaf2fc7cdf2d13ab1f48fa5f12d5" + integrity sha512-2OCURAmRtdlL8iUDTypMrrxfwe8frXTeXaxGsVOaYtc/wrUyk8Z/0OBetM7cdlsy7ZFWlMX72VogKeh+A4Xcjw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.2.12" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.5.0" + +"@rainbow-me/rainbowkit@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-1.0.0.tgz#008856bb70f75026a1008a1104aa3ea8e8971749" + integrity sha512-XZBa7P1mlmNTuMa0iEw2D9wKKQjjh8iDhWGtvsyQZFBDqorOxc1/5Wy352p6kSC9J7s4P9sG3FwHnTGxJPaHmQ== + dependencies: + "@vanilla-extract/css" "1.9.1" + "@vanilla-extract/dynamic" "2.0.2" + "@vanilla-extract/sprinkles" "1.5.0" + clsx "1.1.1" + qrcode "1.5.0" + react-remove-scroll "2.5.4" + +"@rushstack/eslint-patch@^1.1.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + +"@safe-global/safe-apps-provider@^0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz#fa5c30140134e72bb969da76b80a16c545323e3a" + integrity sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ== + dependencies: + "@safe-global/safe-apps-sdk" "7.9.0" + events "^3.3.0" + +"@safe-global/safe-apps-sdk@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.9.0.tgz#0c79a7760470bfdaf4cce9aa5bceef56898c7037" + integrity sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w== + dependencies: + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + ethers "^5.7.2" + +"@safe-global/safe-apps-sdk@^7.9.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz#2cbc164fb70141cdf4d3331ff222cd98a2529316" + integrity sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A== + dependencies: + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + ethers "^5.7.2" + +"@safe-global/safe-gateway-typescript-sdk@^3.5.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.3.tgz#68ec7d82711e2d0f82ce2e577b1df67ba8da2bed" + integrity sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg== + dependencies: + cross-fetch "^3.1.5" + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.0.tgz#6c8d980ef3f290987736acd0ee2e0f0d50068d87" + integrity sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q== + dependencies: + "@noble/curves" "~1.0.0" + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b" + integrity sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@solana/buffer-layout@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/web3.js@^1.70.1": + version "1.76.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.76.0.tgz#0f888e25d727d0dadf3dd8a01967347555200b2b" + integrity sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA== + dependencies: + "@babel/runtime" "^7.12.5" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@solana/buffer-layout" "^4.0.0" + agentkeepalive "^4.2.1" + bigint-buffer "^1.1.5" + bn.js "^5.0.0" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^3.4.4" + node-fetch "^2.6.7" + rpc-websockets "^7.5.1" + superstruct "^0.14.2" + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" + integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + dependencies: + "@stablelib/hash" "^1.0.1" + "@stablelib/hmac" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hmac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" + integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha256@1.0.1", "@stablelib/sha256@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + +"@swc/helpers@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" + integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== + dependencies: + tslib "^2.4.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tanstack/query-core@4.29.7": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.7.tgz#9fe4587e23cb9566b937c518ffa44226041d388d" + integrity sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA== + +"@tanstack/query-persist-client-core@4.29.7": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-4.29.7.tgz#f617e27979fc44e306bffda4e869d6725bff03ab" + integrity sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw== + dependencies: + "@tanstack/query-core" "4.29.7" + +"@tanstack/query-sync-storage-persister@^4.27.1": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.29.7.tgz#d64df26f38d0466dc387406ef57677f03b014cb6" + integrity sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ== + dependencies: + "@tanstack/query-persist-client-core" "4.29.7" + +"@tanstack/react-query-persist-client@^4.28.0": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-4.29.7.tgz#b62f4aca83d6c89ed78acd524a376b3892b7347f" + integrity sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ== + dependencies: + "@tanstack/query-persist-client-core" "4.29.7" + +"@tanstack/react-query@^4.28.0": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.7.tgz#772996905a81ca64172582891c5a82e88dbafccd" + integrity sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg== + dependencies: + "@tanstack/query-core" "4.29.7" + use-sync-external-store "^1.2.0" + +"@types/bn.js@*", "@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/connect@^3.4.33": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/debug@^4.1.5", "@types/debug@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/elliptic@^6.4.9": + version "6.4.14" + resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e" + integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ== + dependencies: + "@types/bn.js" "*" + +"@types/ethereumjs-util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#f49fe8114789ec0871721392c09318c3eb56671b" + integrity sha512-qwQgQqXXTRv2h2AlJef+tMEszLFkCB9dWnrJYIdAwqjubERXEc/geB+S3apRw0yQyTVnsBf8r6BhlrE8vx+3WQ== + dependencies: + "@types/bn.js" "*" + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*", "@types/node@^20.2.1": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.1.tgz#de559d4b33be9a808fd43372ccee822c70f39704" + integrity sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg== + +"@types/node@^10.12.18": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.54", "@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@^18.2.4": + version "18.2.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" + integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== + dependencies: + "@types/react" "*" + +"@types/react-modal@^3.13.1": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-3.16.0.tgz#b8d6be10de894139a2ea9f4a2505b1b5d02023df" + integrity sha512-iphdqXAyUfByLbxJn5j6d+yh93dbMgshqGP0IuBeaKbZXx0aO+OXsvEkt6QctRdxjeM9/bR+Gp3h9F9djVWTQQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.2.6": + version "18.2.6" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" + integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" + integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + +"@types/utf8@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753" + integrity sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@typescript-eslint/parser@^5.42.0": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.6.tgz#bd36f71f5a529f828e20b627078d3ed6738dbb40" + integrity sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA== + dependencies: + "@typescript-eslint/scope-manager" "5.59.6" + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/typescript-estree" "5.59.6" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz#d43a3687aa4433868527cfe797eb267c6be35f19" + integrity sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + +"@typescript-eslint/types@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" + integrity sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA== + +"@typescript-eslint/typescript-estree@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" + integrity sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz#673fccabf28943847d0c8e9e8d008e3ada7be6bb" + integrity sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q== + dependencies: + "@typescript-eslint/types" "5.59.6" + eslint-visitor-keys "^3.3.0" + +"@vanilla-extract/css@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.1.tgz#337b79faa5f8f98915a90c3fe3c30b54be746c09" + integrity sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ== + dependencies: + "@emotion/hash" "^0.8.0" + "@vanilla-extract/private" "^1.0.3" + ahocorasick "1.0.2" + chalk "^4.1.1" + css-what "^5.0.1" + cssesc "^3.0.0" + csstype "^3.0.7" + deep-object-diff "^1.1.0" + deepmerge "^4.2.2" + media-query-parser "^2.0.2" + outdent "^0.8.0" + +"@vanilla-extract/dynamic@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz#13a3e461964c8029a52e6b6b631009ca6a8b27f5" + integrity sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg== + dependencies: + "@vanilla-extract/private" "^1.0.3" + +"@vanilla-extract/private@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f" + integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ== + +"@vanilla-extract/sprinkles@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz#c921183ae518bb484299c2dc81f2acefd91c3dbe" + integrity sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw== + +"@wagmi/chains@0.2.16": + version "0.2.16" + resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.2.16.tgz#a726716e4619ec1c192b312e23f9c38407617aa0" + integrity sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ== + +"@wagmi/chains@0.2.23", "@wagmi/chains@^0.2.22": + version "0.2.23" + resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.2.23.tgz#d751cb06a385c4d2e23ca8df77d016c55956908b" + integrity sha512-oIc4ZpUL6bH/HdS7ROPWlFnP5U3XBujO/OiX4csRIezyLjMQ9FNXQRZShhi5ddL0Kj1RDbyVLe9K/QotEm1vig== + +"@wagmi/connectors@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-1.0.3.tgz#c1bbac00f16892969281ceed42af49cf1416804f" + integrity sha512-5uB+dUDop8s9scdE+S4IhgcfP8oRwdULVvpJ2MusDp+C00+OgvS3SnwZM6+Pjc9tyj5pi143zqsYtDynxFrMEA== + dependencies: + "@coinbase/wallet-sdk" "^3.6.6" + "@ledgerhq/connect-kit-loader" "^1.0.1" + "@safe-global/safe-apps-provider" "^0.15.2" + "@safe-global/safe-apps-sdk" "^7.9.0" + "@walletconnect/ethereum-provider" "2.7.4" + "@walletconnect/legacy-provider" "^2.0.0" + "@web3modal/standalone" "^2.4.1" + abitype "0.8.1" + eventemitter3 "^4.0.7" + +"@wagmi/core@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.0.5.tgz#6224c0885135adaafcf991b75b89d48c8290d032" + integrity sha512-n8Y84WJkofGjhd4a+vpZzPPEQiHnkIGMe0uHOXfkm4eKJZyaJqvVJFPMWE6xFJkk0hxZ+1zw5xn0ZhdroHwHvg== + dependencies: + "@wagmi/chains" "0.2.23" + "@wagmi/connectors" "1.0.3" + abitype "0.8.1" + eventemitter3 "^4.0.7" + zustand "^4.3.1" + +"@walletconnect/auth-client@^2.0.2": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@walletconnect/auth-client/-/auth-client-2.1.0.tgz#47b794cf807d6211fe3a87531f7fca7c6838fd3c" + integrity sha512-k6zZLEdlBpYIvbOL5tBWd+3DUJ2R4VFDyHpdp4TuRzC//njRkIzRSksEnsr8gN8P+IKuoJTLPsDy2sWR4qVTNQ== + dependencies: + "@ethersproject/hash" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@stablelib/random" "1.0.2" + "@stablelib/sha256" "^1.0.1" + "@walletconnect/core" "^2.7.2" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "^1.2.0" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/utils" "^2.7.2" + events "^3.3.0" + isomorphic-unfetch "^3.1.0" + +"@walletconnect/core@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.4.tgz#1471215ca8cc08ae4719ca1bb6d45dd1b49dea3a" + integrity sha512-nDJJZALZJI8l8JvjwZE4UmUzDzQBnTTJlQa/rc5MoGYtir0hfsQEl3sPkPcXbkkW5q+cHiynXsDcgM4740fmNQ== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "^1.0.12" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + +"@walletconnect/core@2.7.5", "@walletconnect/core@^2.7.2": + version "2.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.5.tgz#d3cb48b0cbd27739f64b9ad0a02b138360b2502c" + integrity sha512-nI5RTGZAOcheCcrVUWHLO4iEnyDrDa8HnuNRm9jbYf7ESLdmunShQ+jStnb0pmjEJ8uI/oIEahQwzTN8iLIjpA== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "^1.0.12" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.5" + "@walletconnect/utils" "2.7.5" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + +"@walletconnect/crypto@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" + integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + "@walletconnect/randombytes" "^1.0.3" + aes-js "^3.1.2" + hash.js "^1.1.7" + tslib "1.14.1" + +"@walletconnect/encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" + integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== + dependencies: + is-typedarray "1.0.0" + tslib "1.14.1" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" + integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + dependencies: + tslib "1.14.1" + +"@walletconnect/ethereum-provider@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.7.4.tgz#777ad9a6229f88f766a986bb5cffaa3ff1575c0b" + integrity sha512-R5hcByY9zIsvyTHFUS+3xqtzs2REezED4tZFyXk0snJjWlnlL2EdeHaCjr5n+SIZDin4CMj1EAFC0ZrM4KoA4Q== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.11" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/sign-client" "2.7.4" + "@walletconnect/types" "2.7.4" + "@walletconnect/universal-provider" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + +"@walletconnect/events@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" + integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/heartbeat@1.2.1", "@walletconnect/heartbeat@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-http-connection@^1.0.4": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.6.tgz#48c41cf3e5ac9add9425420b345615dc438594cd" + integrity sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.1" + cross-fetch "^3.1.4" + tslib "1.14.1" + +"@walletconnect/jsonrpc-provider@^1.0.11", "@walletconnect/jsonrpc-provider@^1.0.12", "@walletconnect/jsonrpc-provider@^1.0.6": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" + integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + +"@walletconnect/jsonrpc-ws-connection@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" + integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + tslib "1.14.1" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" + integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== + dependencies: + safe-json-utils "^1.1.1" + tslib "1.14.1" + +"@walletconnect/legacy-client@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz#9f2c09694789fd4b6c5d68d6423b44bac55aed30" + integrity sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA== + dependencies: + "@walletconnect/crypto" "^1.0.3" + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "^5.3.0" + query-string "^6.13.5" + +"@walletconnect/legacy-modal@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz#d0fab01a1337a8f5d88cdb1430cbef2d46072bbf" + integrity sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q== + dependencies: + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + copy-to-clipboard "^3.3.3" + preact "^10.12.0" + qrcode "^1.5.1" + +"@walletconnect/legacy-provider@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz#08e2db1e4c234743b2f30422bc8100bc42e8fc44" + integrity sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.6" + "@walletconnect/legacy-client" "^2.0.0" + "@walletconnect/legacy-modal" "^2.0.0" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + +"@walletconnect/legacy-types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz#224278ae2874c6a2ca805c2d1d062a511dcf7227" + integrity sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + +"@walletconnect/legacy-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz#e3a637c00783f9cd2ae139b640f82223ab78ed9d" + integrity sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "^5.3.0" + query-string "^6.13.5" + +"@walletconnect/logger@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" + integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== + dependencies: + pino "7.11.0" + tslib "1.14.1" + +"@walletconnect/randombytes@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" + integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + randombytes "^2.1.0" + tslib "1.14.1" + +"@walletconnect/relay-api@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" + integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/relay-auth@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" + integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== + dependencies: + "@stablelib/ed25519" "^1.0.2" + "@stablelib/random" "^1.0.1" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + uint8arrays "^3.0.0" + +"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.4.tgz#e07db5856f9e45945080a169bbd9cb6849576bac" + integrity sha512-hZoCB51GB4u32yxzYnxp8dpzXgo6E7ZWUVOgnihmoMPjgJahPtvB/Ip9jYxI3fuV+ZPQYNlxQgEvR9X+2fLz+g== + dependencies: + "@walletconnect/core" "2.7.4" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + +"@walletconnect/sign-client@^2.3.2": + version "2.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.5.tgz#909f49ebebbc7136e1ad7ca59afe682788f666d0" + integrity sha512-99oc0g4eR4hllrB0m4N74EsnNKDrl0L5HdLDGBHQIYnl+/FUjn652QCTOjPzqiUlxvQCo0wrIugb/tgtIGPTfg== + dependencies: + "@walletconnect/core" "2.7.5" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.5" + "@walletconnect/utils" "2.7.5" + events "^3.3.0" + +"@walletconnect/time@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" + integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + dependencies: + tslib "1.14.1" + +"@walletconnect/types@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.4.tgz#958864e7ef497206a24db0ca629a478ca8e1cc08" + integrity sha512-Nagfz8DqLxf0UlVd7xopgBX60EJp1xUEq7J30ALlTbWqEhCHuLK/qPk5vGdJ9Q6+ZDpTW9ShLq1DNf+5nVpVDQ== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + +"@walletconnect/types@2.7.5", "@walletconnect/types@^2.3.2": + version "2.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.5.tgz#6c06f5c522e81bf5914e9a8eadf14c69d242bbc3" + integrity sha512-uEsMXtVbhT5+E/g3loyfNBrjEsPeUaPZkFeVsOErWhxg25CL+MrrWUKerV6tC/ACbFVR5KgKS+uioMath/cV7A== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + +"@walletconnect/universal-provider@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.7.4.tgz#f21dcaf89c102bda79f13e92c45833f8f1196775" + integrity sha512-suH3o5LpTX7hlx5lU98oLdEM0Ws5ZysjQ4Zr6EWIK1DVT8EDdWbw49ggJSW9IYRLQ2xG22jDvmTIdFAexYOgng== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.11" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.7.4" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + eip1193-provider "1.0.1" + events "^3.3.0" + +"@walletconnect/utils@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.4.tgz#314a164aabb7551dae4ac58e63312c9ae6369e1e" + integrity sha512-2WEeKB9h/FQvyNmIBYwLtjdLm3Oo55EwtJoxkC00SA7xjf8jYxZ8q2y4P/CJP8oO5ruxBK5Ft0smKvPHXsE58Q== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + +"@walletconnect/utils@2.7.5", "@walletconnect/utils@^2.3.2", "@walletconnect/utils@^2.7.2": + version "2.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.5.tgz#016915e49ec92c6fe778780600c246947fb996d2" + integrity sha512-uSf71P3kFMC+S4RidQYFIWXglVvYTCLK7AaO9PrUDLO9ocRnBk6hNmOhYSA5jSP6OLf1vYm4ADHbzkeOb4u6aQ== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.5" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + +"@walletconnect/window-getters@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" + integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== + dependencies: + tslib "1.14.1" + +"@walletconnect/window-metadata@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" + integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== + dependencies: + "@walletconnect/window-getters" "^1.0.1" + tslib "1.14.1" + +"@web3modal/core@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.4.1.tgz#9b0a60aa88ef8518de7a30bab1278b2c9f046012" + integrity sha512-v6Y/eQJSI2YfUTv8rGqjFabqdk3ZPjx6Fe7j5Q8fw0ZWF1YRGM3mySG457qtKQ7D7E1kNKA3BHbaOZ3pgQoG6A== + dependencies: + buffer "6.0.3" + valtio "1.10.5" + +"@web3modal/standalone@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.4.1.tgz#e10330583ce7b550ba676e4c595ac8ea8715bcdb" + integrity sha512-ZrI5LwWeT9sd8A3FdIX/gBp3ZrzrX882Ln1vJN0LTCmeP2OUsYcW5bPxjv1PcJ1YUBY7Tg4aTgMUnAVTTuqb+w== + dependencies: + "@web3modal/core" "2.4.1" + "@web3modal/ui" "2.4.1" + +"@web3modal/ui@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.4.1.tgz#c1c5a8bf4cd749febd15411ec710b22215e66e56" + integrity sha512-x1ceyd3mMJsIHs5UUTLvE+6qyCjhyjL6gB/wVmTDbwASHSQIVyshQJ+s7BwIEMP/pbAsYDg+/M8EiUuE+/E/kg== + dependencies: + "@web3modal/core" "2.4.1" + lit "2.7.4" + motion "10.15.5" + qrcode "1.5.3" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abitype@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.1.tgz#9575a21da88bb4094a262a653e526a088ab06041" + integrity sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA== + +abitype@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.2.tgz#cacd330d07488a4020d84f54fc361361234b9c83" + integrity sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.3.tgz#da2253f0ff03a0b3a9e445c8cbdf78e7fda7d48c" + integrity sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA== + +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agentkeepalive@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + dependencies: + debug "^4.1.0" + depd "^2.0.0" + humanize-ms "^1.2.1" + +ahocorasick@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500" + integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA== + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-mutex@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== + dependencies: + tslib "^2.0.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +autoprefixer@^10.4.14: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axe-core@^4.6.2: + version "4.7.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.1.tgz#04392c9ccb3d7d7c5d2f8684f148d56d3442f33d" + integrity sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg== + +axios@^0.21.0: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bind-decorator@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" + integrity sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001488" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001488.tgz#d19d7b6e913afae3e98f023db97c19e9ddc5e91f" + integrity sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^4.0.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +client-only@0.0.1, client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clsx@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookiejar@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^3.0.6, cross-fetch@^3.1.4, cross-fetch@^3.1.5: + version "3.1.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c" + integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g== + dependencies: + node-fetch "^2.6.11" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-what@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2, csstype@^3.0.7: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-equal@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" + integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.0" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deep-object-diff@^1.1.0: + version "1.1.9" + resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" + integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0, depd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@5.3.0, detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +duplexify@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +eip1193-provider@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" + integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== + dependencies: + "@json-rpc-tools/provider" "^1.5.5" + +electron-to-chromium@^1.4.284: + version "1.4.401" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.401.tgz#cbd2c332c4a833e9e8d2ec5b3a6cd85ec6920907" + integrity sha512-AswqHsYyEbfSn0x87n31Na/xttUqEAg7NUjpiyxC20MaWKLyadOYHMzyLdF78N1iw+FK8/2KHLpZxRdyRILgtA== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.12.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" + integrity sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@^13.4.2: + version "13.4.2" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.2.tgz#6ee5c53b6f56bddd6346d14c22713b71da7e7b51" + integrity sha512-zjLJ9B9bbeWSo5q+iHfdt8gVYyT+y2BpWDfjR6XMBtFRSMKRGjllDKxnuKBV1q2Y/QpwLM2PXHJTMRyblCmRAg== + dependencies: + "@next/eslint-plugin-next" "13.4.2" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.42.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-import-resolver-typescript@^3.5.2: + version "3.5.5" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz#0a9034ae7ed94b254a360fbea89187b60ea7456d" + integrity sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + get-tsconfig "^4.5.0" + globby "^13.1.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + synckit "^0.8.5" + +eslint-module-utils@^2.7.4: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.31.7: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint@^8.40.0: + version "8.40.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4" + integrity sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.40.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-block-tracker@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz#0481f97bbb88a100b9d45806fe7e37af741cbefc" + integrity sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/utils" "^3.0.1" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-filters@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz#f0c2aeaec2a45e2dc6ca1b9843d8e85447821427" + integrity sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + async-mutex "^0.2.6" + eth-query "^2.1.2" + json-rpc-engine "^6.1.0" + pify "^5.0.0" + +eth-lib@0.2.8, eth-lib@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" + integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" + integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== + dependencies: + fast-safe-stringify "^2.0.6" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.1.3: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethers@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.3.0.tgz#c61efaafa2bd9a4d9f0c799d932ef3b5cd4bd37d" + integrity sha512-CKFYvTne1YT4S1glTiu7TgGsj0t6c6GAD7evrIk8zbeUb6nK8dcUPAiAWM8uDX/1NmRTvLM9+1Vnn49hwKtEzw== + dependencies: + "@adraffy/ens-normalize" "1.9.0" + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.7.1" + aes-js "4.0.0-beta.3" + tslib "2.4.0" + ws "8.5.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.1.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +exenv@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== + +express@^4.14.0: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-redact@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987" + integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw== + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.1.1.tgz#c910544499d7c959351bb4260ee7c44a544084c1" + integrity sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.5.0.tgz#6d52d1c7b299bd3ee9cd7638561653399ac77b0f" + integrity sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.3: + version "13.1.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317" + integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hey-listen@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" + integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +io-ts@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.0.1.tgz#1261c12f915c2f48d16393a36966636b48a45aa1" + integrity sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.0.4, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.9.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isomorphic-ws@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jayson@^3.4.4: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" + integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + uuid "^8.3.2" + ws "^7.4.5" + +jiti@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== + +js-sdsl@^4.1.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + eth-rpc-errors "^4.0.2" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +keccak@^3.0.0, keccak@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lit-element@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa" + integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.1.0" + "@lit/reactive-element" "^1.3.0" + lit-html "^2.7.0" + +lit-html@^2.7.0: + version "2.7.4" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.4.tgz#6d75001977c206683685b9d76594a516afda2954" + integrity sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g== + dependencies: + "@types/trusted-types" "^2.0.2" + +lit@2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.4.tgz#ca63d27fda178dbffae0faf2c882b9910e40842c" + integrity sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g== + dependencies: + "@lit/reactive-element" "^1.6.0" + lit-element "^3.3.0" + lit-html "^2.7.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.isequal@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-query-parser@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29" + integrity sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w== + dependencies: + "@babel/runtime" "^7.12.5" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +motion@10.15.5: + version "10.15.5" + resolved "https://registry.yarnpkg.com/motion/-/motion-10.15.5.tgz#d336ddbdd37bc28bb99fbb243fe309df6c685ad6" + integrity sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/dom" "^10.15.5" + "@motionone/svelte" "^10.15.5" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + "@motionone/vue" "^10.15.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@^3.3.4, nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next@^13.4.2: + version "13.4.2" + resolved "https://registry.yarnpkg.com/next/-/next-13.4.2.tgz#972f73a794f2c61729facedc79c49b22bdc89f0c" + integrity sha512-aNFqLs3a3nTGvLWlO9SUhCuMUHVPSFQC0+tDNGAsDXqx+WJDFSbvc233gOJ5H19SBc7nw36A9LwQepOJ2u/8Kg== + dependencies: + "@next/env" "13.4.2" + "@swc/helpers" "0.5.1" + busboy "1.6.0" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.1.1" + zod "3.21.4" + optionalDependencies: + "@next/swc-darwin-arm64" "13.4.2" + "@next/swc-darwin-x64" "13.4.2" + "@next/swc-linux-arm64-gnu" "13.4.2" + "@next/swc-linux-arm64-musl" "13.4.2" + "@next/swc-linux-x64-gnu" "13.4.2" + "@next/swc-linux-x64-musl" "13.4.2" + "@next/swc-win32-arm64-msvc" "13.4.2" + "@next/swc-win32-ia32-msvc" "13.4.2" + "@next/swc-win32-x64-msvc" "13.4.2" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.1, node-fetch@^2.6.11, node-fetch@^2.6.7: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +outdent@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" + integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + +pirates@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.23: + version "8.4.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.12.0, preact@^10.5.9: + version "10.14.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.14.1.tgz#1e15ef6a09e241a48d12c872b90557914b03abac" + integrity sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-compare@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" + integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qrcode@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b" + integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qrcode@1.5.3, qrcode@^1.5.0, qrcode@^1.5.1: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.10.3: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^6.13.5: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-device-detect@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/react-device-detect/-/react-device-detect-2.2.3.tgz#97a7ae767cdd004e7c3578260f48cf70c036e7ca" + integrity sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw== + dependencies: + ua-parser-js "^1.0.33" + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-fast-compare@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-modal@^3.14.4: + version "3.16.1" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.16.1.tgz#34018528fc206561b1a5467fc3beeaddafb39b2b" + integrity sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg== + dependencies: + exenv "^1.2.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + +react-remove-scroll-bar@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" + integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0" + integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-side-effect@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" + integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +request@^2.79.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.22.1, resolve@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rpc-websockets@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" + integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@6, rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-json-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" + integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +safe-stable-stringify@^2.1.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +sucrase@^3.32.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" + integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +superstruct@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" + integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== + +superstruct@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046" + integrity sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^11.8.5" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + +tailwindcss@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +ua-parser-js@^1.0.33: + version "1.0.35" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" + integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== + +uint8arrays@^3.0.0, uint8arrays@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +use-callback-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" + integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0, util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +valtio@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.5.tgz#7852125e3b774b522827d96bd9c76d285c518678" + integrity sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ== + dependencies: + proxy-compare "2.5.1" + use-sync-external-store "1.2.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +viem@^0.3.30: + version "0.3.30" + resolved "https://registry.yarnpkg.com/viem/-/viem-0.3.30.tgz#7421bbff8b21c2e6aa90634a18d57b9612e90555" + integrity sha512-4jokEVR2vtDl6zSpZiPUaHviK2dzW6uxCAVUArlh0Jhrc4ms0dkhn5E4iwk1CWMto8+YeLFEgY4gr9P10ryoEQ== + dependencies: + "@adraffy/ens-normalize" "1.9.0" + "@noble/curves" "1.0.0" + "@noble/hashes" "1.3.0" + "@scure/bip32" "1.3.0" + "@scure/bip39" "1.2.0" + "@wagmi/chains" "0.2.16" + abitype "0.8.2" + isomorphic-ws "5.0.0" + ws "8.12.0" + +wagmi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-1.0.5.tgz#2e0b3e17233a8bdd53beb758de1b33f18860c92b" + integrity sha512-XsLhNPTD7c+QXaA9elMwDihvcNHBw4Jcu0S/otkn3N4FgWIUVSQGiUYwm3AQrm/UhON0+Q8Y3ICzxB47PSr46g== + dependencies: + "@tanstack/query-sync-storage-persister" "^4.27.1" + "@tanstack/react-query" "^4.28.0" + "@tanstack/react-query-persist-client" "^4.28.0" + "@wagmi/core" "1.0.5" + abitype "0.8.1" + use-sync-external-store "^1.2.0" + +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +web3-bzz@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.6.tgz#95f370aecc3ff6ad07f057e6c0c916ef09b04dde" + integrity sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.12.1" + +web3-core-helpers@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz#c478246a9abe4e5456acf42657dac2f7c330be74" + integrity sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA== + dependencies: + underscore "1.12.1" + web3-eth-iban "1.3.6" + web3-utils "1.3.6" + +web3-core-method@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.6.tgz#4b0334edd94b03dfec729d113c69a4eb6ebc68ae" + integrity sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.12.1" + web3-core-helpers "1.3.6" + web3-core-promievent "1.3.6" + web3-core-subscriptions "1.3.6" + web3-utils "1.3.6" + +web3-core-promievent@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz#6c27dc79de8f71b74f5d17acaf9aaf593d3cb0c9" + integrity sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz#4fea269fe913fd4fca464b4f7c65cb94857b5b2a" + integrity sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA== + dependencies: + underscore "1.12.1" + util "^0.12.0" + web3-core-helpers "1.3.6" + web3-providers-http "1.3.6" + web3-providers-ipc "1.3.6" + web3-providers-ws "1.3.6" + +web3-core-subscriptions@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz#ee24e7974d1d72ff6c992c599deba4ef9b308415" + integrity sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g== + dependencies: + eventemitter3 "4.0.4" + underscore "1.12.1" + web3-core-helpers "1.3.6" + +web3-core@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.6.tgz#a6a761d1ff2f3ee462b8dab679229d2f8e267504" + integrity sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-requestmanager "1.3.6" + web3-utils "1.3.6" + +web3-eth-abi@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9" + integrity sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.12.1" + web3-utils "1.3.6" + +web3-eth-accounts@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz#f9fcb50b28ee58090ab292a10d996155caa2b474" + integrity sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.12.1" + uuid "3.3.2" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-utils "1.3.6" + +web3-eth-contract@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz#cccf4d32dc56917fb6923e778498a9ba2a5ba866" + integrity sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-promievent "1.3.6" + web3-core-subscriptions "1.3.6" + web3-eth-abi "1.3.6" + web3-utils "1.3.6" + +web3-eth-ens@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz#0d28c5d4ea7b4462ef6c077545a77956a6cdf175" + integrity sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-promievent "1.3.6" + web3-eth-abi "1.3.6" + web3-eth-contract "1.3.6" + web3-utils "1.3.6" + +web3-eth-iban@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz#0d6ba21fe78f190af8919e9cd5453882457209e0" + integrity sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.6" + +web3-eth-personal@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz#226137916754c498f0284f22c55924c87a2efcf0" + integrity sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-net "1.3.6" + web3-utils "1.3.6" + +web3-eth@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.6.tgz#2c650893d540a7a0eb1365dd5b2dca24ac919b7c" + integrity sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA== + dependencies: + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-subscriptions "1.3.6" + web3-eth-abi "1.3.6" + web3-eth-accounts "1.3.6" + web3-eth-contract "1.3.6" + web3-eth-ens "1.3.6" + web3-eth-iban "1.3.6" + web3-eth-personal "1.3.6" + web3-net "1.3.6" + web3-utils "1.3.6" + +web3-net@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.6.tgz#a56492e2227475e38db29394f8bac305a2446e41" + integrity sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw== + dependencies: + web3-core "1.3.6" + web3-core-method "1.3.6" + web3-utils "1.3.6" + +web3-providers-http@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.6.tgz#36e8724a7424d52827819d53fd75dbf31f5422c2" + integrity sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q== + dependencies: + web3-core-helpers "1.3.6" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz#cef8d12c1ebb47adce5ebf597f553c623362cb4a" + integrity sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA== + dependencies: + oboe "2.1.5" + underscore "1.12.1" + web3-core-helpers "1.3.6" + +web3-providers-ws@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz#e1df617bc89d66165abdf2191da0014c505bfaac" + integrity sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.12.1" + web3-core-helpers "1.3.6" + websocket "^1.0.32" + +web3-shh@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.6.tgz#4e3486c7eca5cbdb87f88910948223a5b7ea6c20" + integrity sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw== + dependencies: + web3-core "1.3.6" + web3-core-method "1.3.6" + web3-core-subscriptions "1.3.6" + web3-net "1.3.6" + +web3-utils@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.6.tgz#390bc9fa3a7179746963cfaca55bb80ac4d8dc10" + integrity sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.12.1" + utf8 "3.0.0" + +web3@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.6.tgz#599425461c3f9a8cbbefa70616438995f4a064cc" + integrity sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA== + dependencies: + web3-bzz "1.3.6" + web3-core "1.3.6" + web3-eth "1.3.6" + web3-eth-personal "1.3.6" + web3-net "1.3.6" + web3-shh "1.3.6" + web3-utils "1.3.6" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== + +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7.4.0, ws@^7.4.5, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.5.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xtend@^4.0.0, xtend@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" + integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@3.21.4: + version "3.21.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" + integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== + +zustand@^4.3.1: + version "4.3.8" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.8.tgz#37113df8e9e1421b0be1b2dca02b49b76210e7c4" + integrity sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg== + dependencies: + use-sync-external-store "1.2.0" diff --git a/celo-social-connect-dapp/yarn.lock b/celo-social-connect-dapp/yarn.lock new file mode 100644 index 00000000..06d221ed --- /dev/null +++ b/celo-social-connect-dapp/yarn.lock @@ -0,0 +1,7570 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" + integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.0.tgz#b7ca53ae391c404037540724186038afd83e26f9" + integrity sha512-TT6NB0oszYQ4oxLNUdG+FNHIc3MohXVCKA2BeyQ4WeM2VCSC6wBZ6P0Yfkdzxv+87D8Xk0LJyHeCKlWMvpZt0g== + dependencies: + regenerator-runtime "^0.13.11" + +"@celo/base@3.2.0", "@celo/base@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/base/-/base-3.2.0.tgz#19dcff6a822abb1f6b57af8f9db35a4c673aee62" + integrity sha512-9wfZYiYv7dzt17a29fxU6sV7JssyXfpSQ9kPSpfOlsewPICXwfOMQ+25Jn6xZu20Vx9rmKebmLHiQyiuYEDOcQ== + +"@celo/base@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/base/-/base-4.1.0.tgz#9cd45f1c7d0ac61b4e2e98c046066f9eb9e143e9" + integrity sha512-Q9wKLa4JJw06FXpToZm5PYfFYjx+tvwIQlvFofx+GleX+uq+BT/gdxgTQ/c08OrxZUyc53TUdqSCs+88VlhmlA== + +"@celo/connect@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-3.2.0.tgz#547023b017c319c98020daaadc14dd3d3f0455ce" + integrity sha512-iLOLo8d1OqNcX827/iCfWCeWaewUl0kyhL1xgyXrf//YaPU+ljKtruJmiLLrxkfdB/etWUdcryrbmuUhjHZmKg== + dependencies: + "@celo/base" "3.2.0" + "@celo/utils" "3.2.0" + "@types/debug" "^4.1.5" + "@types/utf8" "^2.1.6" + bignumber.js "^9.0.0" + debug "^4.1.1" + utf8 "3.0.0" + +"@celo/connect@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-4.1.0.tgz#bcdd2a37e7c6e034371a097810f7e64444de397e" + integrity sha512-1PaPy/b9ZLtXGCNN7lqlt0Nqsw/Ql20iCcOZbrAhoN9HkxtHI/yMK7p9aMGDR0Qy4jEi123p8kt5qgJhH2IkKg== + dependencies: + "@celo/base" "4.1.0" + "@celo/utils" "4.1.0" + "@types/debug" "^4.1.5" + "@types/utf8" "^2.1.6" + bignumber.js "^9.0.0" + debug "^4.1.1" + utf8 "3.0.0" + +"@celo/contractkit@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-4.1.0.tgz#6e88edca10a67c90eaa5e58b64e0dda68a1df87e" + integrity sha512-JmlCMrU2o09zjA6hiRixdKzTTmwkm2STL39sraYD96JMJsywwnu300oRMEupDZN3HobwStKTuTnR8r+xGeWT9Q== + dependencies: + "@celo/base" "4.1.0" + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-local" "4.1.0" + "@types/bn.js" "^5.1.0" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + cross-fetch "^3.0.6" + debug "^4.1.1" + fp-ts "2.1.1" + io-ts "2.0.1" + semver "^7.3.5" + web3 "1.3.6" + +"@celo/contractkit@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-3.2.0.tgz#c0886e3a01534a199618fce65c6861cecb0c5ed1" + integrity sha512-kt4ViBRMg7ezCPi2SdcrYdDorA1Meg/qk97/u4izEIthl9GM4QSRfhhHYsbXYm0NV/MZ2BkS0cCsQ/SHcILSaA== + dependencies: + "@celo/base" "3.2.0" + "@celo/connect" "3.2.0" + "@celo/utils" "3.2.0" + "@celo/wallet-local" "3.2.0" + "@types/bn.js" "^5.1.0" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + cross-fetch "^3.0.6" + debug "^4.1.1" + fp-ts "2.1.1" + io-ts "2.0.1" + semver "^7.3.5" + web3 "1.3.6" + +"@celo/identity@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/identity/-/identity-4.1.0.tgz#8f6b3ed3b5d63016f9cec0f8b84e03cdd9c21d17" + integrity sha512-ZWOyohdQ2g2XZH7JYWYL+3nma3vtCSGclSu371ZWAp+BpS0wF1+Qo7L8a6Q2/rD0340+tZLqtinRz1k2JlfhkA== + dependencies: + "@celo/base" "4.1.0" + "@celo/contractkit" "4.1.0" + "@celo/phone-number-privacy-common" "^2.0.2" + "@celo/utils" "4.1.0" + "@types/debug" "^4.1.5" + bignumber.js "^9.0.0" + blind-threshold-bls "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a" + cross-fetch "3.0.4" + debug "^4.1.1" + elliptic "^6.5.4" + fp-ts "2.1.1" + io-ts "2.0.1" + +"@celo/phone-number-privacy-common@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-2.0.2.tgz#56528e80b66b8493676436fb60f0e390977fd0bf" + integrity sha512-bQ3ufYADU+LDnZyQPl+/zVQMTPREgwmYXFremKkm4nlTm+83Ti9G7obXeMkFtDrG//vvgC8ryMHq0ZkYh5XkFA== + dependencies: + "@celo/base" "^3.1.0" + "@celo/contractkit" "^3.1.0" + "@celo/phone-utils" "^3.1.0" + "@celo/utils" "^3.1.0" + bignumber.js "^9.0.0" + bunyan "1.8.12" + bunyan-debug-stream "2.0.0" + bunyan-gke-stackdriver "0.1.2" + dotenv "^8.2.0" + elliptic "^6.5.4" + io-ts "2.0.1" + is-base64 "^1.1.0" + +"@celo/phone-utils@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/phone-utils/-/phone-utils-3.2.0.tgz#e8e2716225eb1732f9e0eeae18812666445627e0" + integrity sha512-TbEKN7emsQY3nac7Lv5XkPA7HWXjrhuRpbtVDsJ8uB3Pbu9zAYCs0J8QlikEUJLPGoRA3oCZLri54GhWFG84BQ== + dependencies: + "@celo/base" "3.2.0" + "@celo/utils" "3.2.0" + "@types/country-data" "^0.0.0" + "@types/ethereumjs-util" "^5.2.0" + "@types/google-libphonenumber" "^7.4.23" + "@types/node" "^10.12.18" + country-data "^0.0.31" + fp-ts "2.1.1" + google-libphonenumber "^3.2.27" + io-ts "2.0.1" + +"@celo/rainbowkit-celo@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@celo/rainbowkit-celo/-/rainbowkit-celo-1.0.0.tgz#b8f1a5e5325295c6f4b3ad00fe6e94fab98142aa" + integrity sha512-DTi48TUEdnJF9Za2wrKhuMuO3sGwf3OHooK+5dryqy8zRbJQXkf2f5VOM1qlKqKbRiwBQQxdxDOh/VE44+eO3g== + dependencies: + "@wagmi/chains" "^0.2.22" + +"@celo/utils@3.2.0", "@celo/utils@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-3.2.0.tgz#1dc39f619d24c3974d306cad23db7cdf3f9d487e" + integrity sha512-Om1mTzwsdV6FVPvraafcJeRnzz7Xv/lyGmyZaoEZ9fErRadu9ZrOsuDQniYe+lD78DQ0NATxJL04WjhEKVkn+A== + dependencies: + "@celo/base" "3.2.0" + "@types/bn.js" "^5.1.0" + "@types/elliptic" "^6.4.9" + "@types/ethereumjs-util" "^5.2.0" + "@types/node" "^10.12.18" + bignumber.js "^9.0.0" + elliptic "^6.5.4" + ethereumjs-util "^5.2.0" + io-ts "2.0.1" + web3-eth-abi "1.3.6" + web3-utils "1.3.6" + +"@celo/utils@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-4.1.0.tgz#ffbfedb8d5866af8d309b57a79dfb35870e368e8" + integrity sha512-N0ijAXAGFQavX75clVXhGOVTzSpv/AJmh+igYUCNVzyF0s/Ms/l9WjjEQsd0c3uWRkWBLXiKmCNTI9LZXazjkw== + dependencies: + "@celo/base" "4.1.0" + "@types/bn.js" "^5.1.0" + "@types/elliptic" "^6.4.9" + "@types/ethereumjs-util" "^5.2.0" + "@types/node" "^10.12.18" + bignumber.js "^9.0.0" + elliptic "^6.5.4" + ethereumjs-util "^5.2.0" + io-ts "2.0.1" + web3-eth-abi "1.3.6" + web3-utils "1.3.6" + +"@celo/wallet-base@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-3.2.0.tgz#feff094fd43fb651f3f742b6a73dc3b740b0c39c" + integrity sha512-lwhesT2BkXIyPI/ox/QbVVCRtLzTAGO25M3TlWBfSCzkRAf/AiV41lzEf9J7A1ozDKXS9s7bj8odiRkMAcelyQ== + dependencies: + "@celo/base" "3.2.0" + "@celo/connect" "3.2.0" + "@celo/utils" "3.2.0" + "@types/debug" "^4.1.5" + "@types/ethereumjs-util" "^5.2.0" + bignumber.js "^9.0.0" + debug "^4.1.1" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-base@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-4.1.0.tgz#890ad567b73ad59ba7f8eb060372fd8ab8476bb7" + integrity sha512-fc6DGI6vcwGE/z3hT/7rZkQ9nvv/7l8RAEmof05zqMCdXdqaq135GWuE5H7gcC/qCLJzRNVpPGcWAPKUQ4z03A== + dependencies: + "@celo/base" "4.1.0" + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@types/debug" "^4.1.5" + "@types/ethereumjs-util" "^5.2.0" + bignumber.js "^9.0.0" + debug "^4.1.1" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-local@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-3.2.0.tgz#905dd18a3285852a8341e5683beda94512c0f4f8" + integrity sha512-hR70gzNCDHgf/GskaaLtB7Jz4AqJEW0b+1jG1rsuAyaXLJomSRADGBwUUgMy1dKU87fcQ9h7Uh+AuRAP4/5COQ== + dependencies: + "@celo/connect" "3.2.0" + "@celo/utils" "3.2.0" + "@celo/wallet-base" "3.2.0" + "@types/ethereumjs-util" "^5.2.0" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@celo/wallet-local@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-4.1.0.tgz#e75ffb44f0352585db13f823034230d14064af1e" + integrity sha512-nG7f77gblF3CQ3811LOtmoLr8yC+f+G6QjkgUV9GmFNBDdUNQZf7OM1ZQaYib10D6OwY0UPxlP9N+tweVWDOdA== + dependencies: + "@celo/connect" "4.1.0" + "@celo/utils" "4.1.0" + "@celo/wallet-base" "4.1.0" + "@types/ethereumjs-util" "^5.2.0" + eth-lib "^0.2.8" + ethereumjs-util "^5.2.0" + +"@coinbase/wallet-sdk@^3.6.6": + version "3.6.6" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.6.tgz#4a0758fe0fe0ba3ed7e33b5bb6eb094ff8bd6c98" + integrity sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg== + dependencies: + "@metamask/safe-event-emitter" "2.0.0" + "@solana/web3.js" "^1.70.1" + bind-decorator "^1.0.11" + bn.js "^5.1.1" + buffer "^6.0.3" + clsx "^1.1.0" + eth-block-tracker "6.1.0" + eth-json-rpc-filters "5.1.0" + eth-rpc-errors "4.0.2" + json-rpc-engine "6.1.0" + keccak "^3.0.1" + preact "^10.5.9" + qs "^6.10.3" + rxjs "^6.6.3" + sha.js "^2.4.11" + stream-browserify "^3.0.0" + util "^0.12.4" + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.2" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" + integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@headlessui/react@^1.7.14": + version "1.7.14" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.14.tgz#75f19552c535113640fe8a3a40e71474f49e89c9" + integrity sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA== + dependencies: + client-only "^0.0.1" + +"@heroicons/react@^2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.18.tgz#f80301907c243df03c7e9fd76c0286e95361f7c1" + integrity sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw== + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@json-rpc-tools/provider@^1.5.5": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" + integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== + dependencies: + "@json-rpc-tools/utils" "^1.7.6" + axios "^0.21.0" + safe-json-utils "^1.1.1" + ws "^7.4.0" + +"@json-rpc-tools/types@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" + integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" + integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== + dependencies: + "@json-rpc-tools/types" "^1.7.6" + "@pedrouid/environment" "^1.0.1" + +"@ledgerhq/connect-kit-loader@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a" + integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g== + +"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9" + integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ== + +"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" + integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.0.0" + +"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== + +"@metamask/utils@^3.0.1": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-3.6.0.tgz#b218b969a05ca7a8093b5d1670f6625061de707d" + integrity sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ== + dependencies: + "@types/debug" "^4.1.7" + debug "^4.3.4" + semver "^7.3.8" + superstruct "^1.0.3" + +"@motionone/animation@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" + integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + dependencies: + "@motionone/easing" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/dom@^10.15.5", "@motionone/dom@^10.16.2": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.16.2.tgz#0c44df8ee3d1cfc50ee11d27050b27824355a61a" + integrity sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/generators" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/easing@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" + integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== + dependencies: + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/generators@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" + integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + dependencies: + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/svelte@^10.15.5": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.2.tgz#0b37c3b12927814d31d24941d1ca0ff49981b444" + integrity sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + +"@motionone/types@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" + integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== + +"@motionone/utils@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" + integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== + dependencies: + "@motionone/types" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/vue@^10.15.5": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.2.tgz#faf13afc27620a2df870c71c58a04ee8de8dea65" + integrity sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + +"@next/env@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.4.tgz#46b620f6bef97fe67a1566bf570dbb791d40c50a" + integrity sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg== + +"@next/eslint-plugin-next@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.4.tgz#0df2f699e61b97c65035f87f54795f799e12fead" + integrity sha512-5jnh7q6I15efnjR/rR+/TGTc9hn53g3JTbEjAMjmeQiExKqEUgIXqrHI5zlTNlNyzCPkBB860/ctxXheZaF2Vw== + dependencies: + glob "7.1.7" + +"@next/swc-darwin-arm64@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff" + integrity sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw== + +"@next/swc-darwin-x64@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz#5fe01c65c80fcb833c8789fd70f074ea99893864" + integrity sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg== + +"@next/swc-linux-arm64-gnu@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz#f2e071f38e8a6cdadf507cc5d28956f73360d064" + integrity sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA== + +"@next/swc-linux-arm64-musl@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz#23bf75c544e54562bc24ec1be036e4bd9cf89e2c" + integrity sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A== + +"@next/swc-linux-x64-gnu@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz#bd42590950a01957952206f89cf5622e7c9e4196" + integrity sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ== + +"@next/swc-linux-x64-musl@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz#907d81feb1abec3daec0ecb61e3f39b56e7aeafe" + integrity sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA== + +"@next/swc-win32-arm64-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz#1d754d2bb10bdf9907c0acc83711438697c3b5fe" + integrity sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A== + +"@next/swc-win32-ia32-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz#77b2c7f7534b675d46e46301869e08d504d23956" + integrity sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg== + +"@next/swc-win32-x64-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz#faab69239f8a9d0be7cd473e65f5a07735ef7b0e" + integrity sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw== + +"@noble/curves@1.0.0", "@noble/curves@^1.0.0", "@noble/curves@~1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" + integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw== + dependencies: + "@noble/hashes" "1.3.0" + +"@noble/hashes@1.3.0", "@noble/hashes@^1.3.0", "@noble/hashes@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@panva/hkdf@^1.0.2": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@panva/hkdf/-/hkdf-1.1.1.tgz#ab9cd8755d1976e72fc77a00f7655a64efe6cd5d" + integrity sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA== + +"@pedrouid/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" + integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== + +"@pkgr/utils@^2.3.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.1.tgz#adf291d0357834c410ce80af16e711b56c7b1cd3" + integrity sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.2.12" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.5.0" + +"@rainbow-me/rainbowkit@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-1.0.1.tgz#c852383a5a16fb6452e2533992aa2cd6d562a992" + integrity sha512-P+2lgHaN5X84K1e+MARUydyhYRS+nStN4H470QloBBWP5UsidHZpSJGd4qi0WFtfR6zBff96N6kmsfJo7PjFhQ== + dependencies: + "@vanilla-extract/css" "1.9.1" + "@vanilla-extract/dynamic" "2.0.2" + "@vanilla-extract/sprinkles" "1.5.0" + clsx "1.1.1" + qrcode "1.5.0" + react-remove-scroll "2.5.4" + +"@rushstack/eslint-patch@^1.1.3": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.0.tgz#f5635b36fc0dad96ef1e542a302cd914230188c0" + integrity sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w== + +"@safe-global/safe-apps-provider@^0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz#fa5c30140134e72bb969da76b80a16c545323e3a" + integrity sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ== + dependencies: + "@safe-global/safe-apps-sdk" "7.9.0" + events "^3.3.0" + +"@safe-global/safe-apps-sdk@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.9.0.tgz#0c79a7760470bfdaf4cce9aa5bceef56898c7037" + integrity sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w== + dependencies: + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + ethers "^5.7.2" + +"@safe-global/safe-apps-sdk@^7.9.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz#2cbc164fb70141cdf4d3331ff222cd98a2529316" + integrity sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A== + dependencies: + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + ethers "^5.7.2" + +"@safe-global/safe-gateway-typescript-sdk@^3.5.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.3.tgz#68ec7d82711e2d0f82ce2e577b1df67ba8da2bed" + integrity sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg== + dependencies: + cross-fetch "^3.1.5" + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.0.tgz#6c8d980ef3f290987736acd0ee2e0f0d50068d87" + integrity sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q== + dependencies: + "@noble/curves" "~1.0.0" + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b" + integrity sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@solana/buffer-layout@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/web3.js@^1.70.1": + version "1.77.1" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.77.1.tgz#540c98c9e61d49b3b021c42b70da08da048937c8" + integrity sha512-YWahzcQtQ3inR2+ZSqWsoJnXBppfd//7mbSFVFpyJWyE+vTtSfljdKVOosCY0ynu6AZaBLV1HYErc2wZOXUdeA== + dependencies: + "@babel/runtime" "^7.12.5" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@solana/buffer-layout" "^4.0.0" + agentkeepalive "^4.2.1" + bigint-buffer "^1.1.5" + bn.js "^5.0.0" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^3.4.4" + node-fetch "^2.6.7" + rpc-websockets "^7.5.1" + superstruct "^0.14.2" + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" + integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + dependencies: + "@stablelib/hash" "^1.0.1" + "@stablelib/hmac" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hmac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" + integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha256@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + +"@swc/helpers@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" + integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== + dependencies: + tslib "^2.4.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tanstack/query-core@4.29.7": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.7.tgz#9fe4587e23cb9566b937c518ffa44226041d388d" + integrity sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA== + +"@tanstack/query-persist-client-core@4.29.7": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-4.29.7.tgz#f617e27979fc44e306bffda4e869d6725bff03ab" + integrity sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw== + dependencies: + "@tanstack/query-core" "4.29.7" + +"@tanstack/query-sync-storage-persister@^4.27.1": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.29.7.tgz#d64df26f38d0466dc387406ef57677f03b014cb6" + integrity sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ== + dependencies: + "@tanstack/query-persist-client-core" "4.29.7" + +"@tanstack/react-query-persist-client@^4.28.0": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-4.29.7.tgz#b62f4aca83d6c89ed78acd524a376b3892b7347f" + integrity sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ== + dependencies: + "@tanstack/query-persist-client-core" "4.29.7" + +"@tanstack/react-query@^4.28.0": + version "4.29.7" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.7.tgz#772996905a81ca64172582891c5a82e88dbafccd" + integrity sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg== + dependencies: + "@tanstack/query-core" "4.29.7" + use-sync-external-store "^1.2.0" + +"@types/bn.js@*", "@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/connect@^3.4.33": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/country-data@^0.0.0": + version "0.0.0" + resolved "https://registry.yarnpkg.com/@types/country-data/-/country-data-0.0.0.tgz#6f5563cae3d148780c5b6539803a29bd93f8f1a1" + integrity sha512-lIxCk6G7AwmUagQ4gIQGxUBnvAq664prFD9nSAz6dgd1XmBXBtZABV/op+QsJsIyaP1GZsf/iXhYKHX3azSRCw== + +"@types/debug@^4.1.5", "@types/debug@^4.1.7": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" + integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== + dependencies: + "@types/ms" "*" + +"@types/elliptic@^6.4.9": + version "6.4.14" + resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e" + integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ== + dependencies: + "@types/bn.js" "*" + +"@types/ethereumjs-util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#f49fe8114789ec0871721392c09318c3eb56671b" + integrity sha512-qwQgQqXXTRv2h2AlJef+tMEszLFkCB9dWnrJYIdAwqjubERXEc/geB+S3apRw0yQyTVnsBf8r6BhlrE8vx+3WQ== + dependencies: + "@types/bn.js" "*" + "@types/node" "*" + +"@types/google-libphonenumber@^7.4.23": + version "7.4.23" + resolved "https://registry.yarnpkg.com/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz#c44c9125d45f042943694d605fd8d8d796cafc3b" + integrity sha512-C3ydakLTQa8HxtYf9ge4q6uT9krDX8smSIxmmW3oACFi5g5vv6T068PRExF7UyWbWpuYiDG8Nm24q2X5XhcZWw== + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*", "@types/node@^20.2.1": + version "20.2.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.4.tgz#e6c3345f7ed9c6df41fdc288a94e2633167bc15d" + integrity sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA== + +"@types/node@^10.12.18": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.54", "@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@^18.2.4": + version "18.2.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" + integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.2.6": + version "18.2.7" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3" + integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" + integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + +"@types/utf8@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753" + integrity sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@typescript-eslint/parser@^5.42.0": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" + integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== + dependencies: + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" + integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + +"@typescript-eslint/types@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" + integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== + +"@typescript-eslint/typescript-estree@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" + integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" + integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + eslint-visitor-keys "^3.3.0" + +"@vanilla-extract/css@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.1.tgz#337b79faa5f8f98915a90c3fe3c30b54be746c09" + integrity sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ== + dependencies: + "@emotion/hash" "^0.8.0" + "@vanilla-extract/private" "^1.0.3" + ahocorasick "1.0.2" + chalk "^4.1.1" + css-what "^5.0.1" + cssesc "^3.0.0" + csstype "^3.0.7" + deep-object-diff "^1.1.0" + deepmerge "^4.2.2" + media-query-parser "^2.0.2" + outdent "^0.8.0" + +"@vanilla-extract/dynamic@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz#13a3e461964c8029a52e6b6b631009ca6a8b27f5" + integrity sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg== + dependencies: + "@vanilla-extract/private" "^1.0.3" + +"@vanilla-extract/private@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f" + integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ== + +"@vanilla-extract/sprinkles@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz#c921183ae518bb484299c2dc81f2acefd91c3dbe" + integrity sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw== + +"@wagmi/chains@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.3.1.tgz#5d8e8ef1bcd8637c9f3ead8626595b12a01c35e4" + integrity sha512-NN5qziBLFeXnx0+3ywdiKKXUSW4H73Wc1jRrygl9GKXVPawU0GBMudwXUfV7VOu6E9vmG7Arj0pVsEwq63b2Ew== + +"@wagmi/chains@^0.2.22": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.2.25.tgz#44614a07399bcebb6651899d8116475e4a87e875" + integrity sha512-Gah0bgR+14navwxi7xTL2oFB8YgK4qoBPye1b8ucccIwF3Z8Zg1u2gVTDFAyPT4lyB+ZVqwYKs3Y/IkFNG5O4Q== + +"@wagmi/connectors@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-2.0.0.tgz#558a7bc8b2d5f08a2c10fd14b3126adad12d1717" + integrity sha512-W7GFLdLaJiqISm65pwoe0DePLjL3klyugCwQwlunFXHNHvYSsoWkzDjb1H5XJwx9g+dTVNwJVg8TE7WfaUdilg== + dependencies: + "@coinbase/wallet-sdk" "^3.6.6" + "@ledgerhq/connect-kit-loader" "^1.0.1" + "@safe-global/safe-apps-provider" "^0.15.2" + "@safe-global/safe-apps-sdk" "^7.9.0" + "@walletconnect/ethereum-provider" "2.7.4" + "@walletconnect/legacy-provider" "^2.0.0" + "@web3modal/standalone" "^2.4.1" + abitype "0.8.1" + eventemitter3 "^4.0.7" + +"@wagmi/core@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.0.7.tgz#39234d47ea0870fca6c3935b7656da658a4e2843" + integrity sha512-8TL/OYqHfJa4B79YUf/PVhnPH8Df7o8FoNQ0KfldaoT8d471SBZumzRr5pyNvnBxqvAnn11ZGaQThJs5WrLgrg== + dependencies: + "@wagmi/chains" "0.3.1" + "@wagmi/connectors" "2.0.0" + abitype "0.8.1" + eventemitter3 "^4.0.7" + zustand "^4.3.1" + +"@walletconnect/core@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.4.tgz#1471215ca8cc08ae4719ca1bb6d45dd1b49dea3a" + integrity sha512-nDJJZALZJI8l8JvjwZE4UmUzDzQBnTTJlQa/rc5MoGYtir0hfsQEl3sPkPcXbkkW5q+cHiynXsDcgM4740fmNQ== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "^1.0.12" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + +"@walletconnect/crypto@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" + integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + "@walletconnect/randombytes" "^1.0.3" + aes-js "^3.1.2" + hash.js "^1.1.7" + tslib "1.14.1" + +"@walletconnect/encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" + integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== + dependencies: + is-typedarray "1.0.0" + tslib "1.14.1" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" + integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + dependencies: + tslib "1.14.1" + +"@walletconnect/ethereum-provider@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.7.4.tgz#777ad9a6229f88f766a986bb5cffaa3ff1575c0b" + integrity sha512-R5hcByY9zIsvyTHFUS+3xqtzs2REezED4tZFyXk0snJjWlnlL2EdeHaCjr5n+SIZDin4CMj1EAFC0ZrM4KoA4Q== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.11" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/sign-client" "2.7.4" + "@walletconnect/types" "2.7.4" + "@walletconnect/universal-provider" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + +"@walletconnect/events@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" + integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/heartbeat@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-http-connection@^1.0.4": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98" + integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.1" + cross-fetch "^3.1.4" + tslib "1.14.1" + +"@walletconnect/jsonrpc-provider@^1.0.11", "@walletconnect/jsonrpc-provider@^1.0.12", "@walletconnect/jsonrpc-provider@^1.0.6": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" + integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + +"@walletconnect/jsonrpc-ws-connection@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" + integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + tslib "1.14.1" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" + integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== + dependencies: + safe-json-utils "^1.1.1" + tslib "1.14.1" + +"@walletconnect/legacy-client@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz#9f2c09694789fd4b6c5d68d6423b44bac55aed30" + integrity sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA== + dependencies: + "@walletconnect/crypto" "^1.0.3" + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "^5.3.0" + query-string "^6.13.5" + +"@walletconnect/legacy-modal@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz#d0fab01a1337a8f5d88cdb1430cbef2d46072bbf" + integrity sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q== + dependencies: + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + copy-to-clipboard "^3.3.3" + preact "^10.12.0" + qrcode "^1.5.1" + +"@walletconnect/legacy-provider@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz#08e2db1e4c234743b2f30422bc8100bc42e8fc44" + integrity sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.6" + "@walletconnect/legacy-client" "^2.0.0" + "@walletconnect/legacy-modal" "^2.0.0" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/legacy-utils" "^2.0.0" + +"@walletconnect/legacy-types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz#224278ae2874c6a2ca805c2d1d062a511dcf7227" + integrity sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + +"@walletconnect/legacy-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz#e3a637c00783f9cd2ae139b640f82223ab78ed9d" + integrity sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/legacy-types" "^2.0.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "^5.3.0" + query-string "^6.13.5" + +"@walletconnect/logger@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" + integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== + dependencies: + pino "7.11.0" + tslib "1.14.1" + +"@walletconnect/randombytes@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" + integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== + dependencies: + "@walletconnect/encoding" "^1.0.2" + "@walletconnect/environment" "^1.0.1" + randombytes "^2.1.0" + tslib "1.14.1" + +"@walletconnect/relay-api@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" + integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/relay-auth@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" + integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== + dependencies: + "@stablelib/ed25519" "^1.0.2" + "@stablelib/random" "^1.0.1" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + uint8arrays "^3.0.0" + +"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.4.tgz#e07db5856f9e45945080a169bbd9cb6849576bac" + integrity sha512-hZoCB51GB4u32yxzYnxp8dpzXgo6E7ZWUVOgnihmoMPjgJahPtvB/Ip9jYxI3fuV+ZPQYNlxQgEvR9X+2fLz+g== + dependencies: + "@walletconnect/core" "2.7.4" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + events "^3.3.0" + +"@walletconnect/time@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" + integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + dependencies: + tslib "1.14.1" + +"@walletconnect/types@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.4.tgz#958864e7ef497206a24db0ca629a478ca8e1cc08" + integrity sha512-Nagfz8DqLxf0UlVd7xopgBX60EJp1xUEq7J30ALlTbWqEhCHuLK/qPk5vGdJ9Q6+ZDpTW9ShLq1DNf+5nVpVDQ== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + +"@walletconnect/universal-provider@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.7.4.tgz#f21dcaf89c102bda79f13e92c45833f8f1196775" + integrity sha512-suH3o5LpTX7hlx5lU98oLdEM0Ws5ZysjQ4Zr6EWIK1DVT8EDdWbw49ggJSW9IYRLQ2xG22jDvmTIdFAexYOgng== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.4" + "@walletconnect/jsonrpc-provider" "^1.0.11" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.7.4" + "@walletconnect/types" "2.7.4" + "@walletconnect/utils" "2.7.4" + eip1193-provider "1.0.1" + events "^3.3.0" + +"@walletconnect/utils@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.4.tgz#314a164aabb7551dae4ac58e63312c9ae6369e1e" + integrity sha512-2WEeKB9h/FQvyNmIBYwLtjdLm3Oo55EwtJoxkC00SA7xjf8jYxZ8q2y4P/CJP8oO5ruxBK5Ft0smKvPHXsE58Q== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.7.4" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + +"@walletconnect/window-getters@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" + integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== + dependencies: + tslib "1.14.1" + +"@walletconnect/window-metadata@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" + integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== + dependencies: + "@walletconnect/window-getters" "^1.0.1" + tslib "1.14.1" + +"@web3modal/core@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.4.1.tgz#9b0a60aa88ef8518de7a30bab1278b2c9f046012" + integrity sha512-v6Y/eQJSI2YfUTv8rGqjFabqdk3ZPjx6Fe7j5Q8fw0ZWF1YRGM3mySG457qtKQ7D7E1kNKA3BHbaOZ3pgQoG6A== + dependencies: + buffer "6.0.3" + valtio "1.10.5" + +"@web3modal/standalone@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.4.1.tgz#e10330583ce7b550ba676e4c595ac8ea8715bcdb" + integrity sha512-ZrI5LwWeT9sd8A3FdIX/gBp3ZrzrX882Ln1vJN0LTCmeP2OUsYcW5bPxjv1PcJ1YUBY7Tg4aTgMUnAVTTuqb+w== + dependencies: + "@web3modal/core" "2.4.1" + "@web3modal/ui" "2.4.1" + +"@web3modal/ui@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.4.1.tgz#c1c5a8bf4cd749febd15411ec710b22215e66e56" + integrity sha512-x1ceyd3mMJsIHs5UUTLvE+6qyCjhyjL6gB/wVmTDbwASHSQIVyshQJ+s7BwIEMP/pbAsYDg+/M8EiUuE+/E/kg== + dependencies: + "@web3modal/core" "2.4.1" + lit "2.7.4" + motion "10.15.5" + qrcode "1.5.3" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abitype@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.1.tgz#9575a21da88bb4094a262a653e526a088ab06041" + integrity sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA== + +abitype@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.2.tgz#cacd330d07488a4020d84f54fc361361234b9c83" + integrity sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agentkeepalive@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + dependencies: + debug "^4.1.0" + depd "^2.0.0" + humanize-ms "^1.2.1" + +ahocorasick@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500" + integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA== + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-mutex@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== + dependencies: + tslib "^2.0.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +autoprefixer@^10.4.14: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axe-core@^4.6.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" + integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== + +axios@^0.21.0: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bind-decorator@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" + integrity sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#3d1013af": + version "0.1.1" + resolved "https://github.com/celo-org/blind-threshold-bls-wasm#3d1013afbab220c0fdf31af2b944c9c2b6fb65eb" + +"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a": + version "0.1.0" + resolved "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a1ab5154c2f0b1c55cb0d61fbb1d907208" + +bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + +bunyan-debug-stream@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-2.0.0.tgz#b9593e38753f594e3f9db3eb2fdebdc2af147a9f" + integrity sha512-Ovl43CJ7nUwalLzdXc6E1nGIy6ift9Z/QpYXUtsjpDAg35ZFKXifKNZyfpMGuN3N7ijLLqbnxPsMMHsXDdXa9A== + dependencies: + colors "^1.0.3" + exception-formatter "^1.0.4" + +bunyan-gke-stackdriver@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/bunyan-gke-stackdriver/-/bunyan-gke-stackdriver-0.1.2.tgz#a47e3724bbb324b1ec0b7dc4350c4d7073aae66d" + integrity sha512-eY5OLgAXvOvOq2YpxI0HlV5HjAcLm36Ln3PxxsztO+2GrFSgU3oXoic2LCif/heBKoyOZdMyXKWF5dvswSOS6w== + +bunyan@1.8.12: + version "1.8.12" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" + integrity sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg== + optionalDependencies: + dtrace-provider "~0.8" + moment "^2.10.6" + mv "~2" + safe-json-stringify "~1" + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001489" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" + integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^4.0.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +client-only@0.0.1, client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clsx@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.0.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0, cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookiejar@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +country-data@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/country-data/-/country-data-0.0.31.tgz#80966b8e1d147fa6d6a589d32933f8793774956d" + integrity sha512-YqlY/i6ikZwoBFfdjK+hJTGaBdTgDpXLI15MCj2UsXZ2cPBb+Kx86AXmDH7PRGt0LUleck0cCgNdWeIhfbcxkQ== + dependencies: + currency-symbol-map "~2" + underscore ">1.4.4" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" + integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== + dependencies: + node-fetch "2.6.0" + whatwg-fetch "3.0.0" + +cross-fetch@^3.0.6, cross-fetch@^3.1.4, cross-fetch@^3.1.5: + version "3.1.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c" + integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g== + dependencies: + node-fetch "^2.6.11" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-what@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2, csstype@^3.0.7: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +currency-symbol-map@~2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz#2b3c1872ff1ac2ce595d8273e58e1fff0272aea2" + integrity sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-equal@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" + integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.0" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deep-object-diff@^1.1.0: + version "1.1.9" + resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" + integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0, depd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@5.3.0, detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +dtrace-provider@~0.8: + version "0.8.8" + resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" + integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== + dependencies: + nan "^2.14.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +duplexify@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +eip1193-provider@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" + integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== + dependencies: + "@json-rpc-tools/provider" "^1.5.5" + +electron-to-chromium@^1.4.284: + version "1.4.408" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz#73e657a24bd0b7481d68c943dded0d097b0d0a52" + integrity sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.12.0: + version "5.14.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz#de684b6803724477a4af5d74ccae5de52c25f6b3" + integrity sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@^13.4.2: + version "13.4.4" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.4.tgz#95356e96f3796ad0587fa2aaa51ec4a81e71cedc" + integrity sha512-z/PMbm6L0iC/fwISULxe8IVy4DtNqZk2wQY711o35klenq70O6ns82A8yuMVCFjHC0DIyB2lyugesRtuk9u8dQ== + dependencies: + "@next/eslint-plugin-next" "13.4.4" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.42.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-import-resolver-typescript@^3.5.2: + version "3.5.5" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz#0a9034ae7ed94b254a360fbea89187b60ea7456d" + integrity sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + get-tsconfig "^4.5.0" + globby "^13.1.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + synckit "^0.8.5" + +eslint-module-utils@^2.7.4: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.31.7: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint@^8.40.0: + version "8.41.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" + integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.41.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-block-tracker@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz#0481f97bbb88a100b9d45806fe7e37af741cbefc" + integrity sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/utils" "^3.0.1" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-filters@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz#f0c2aeaec2a45e2dc6ca1b9843d8e85447821427" + integrity sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + async-mutex "^0.2.6" + eth-query "^2.1.2" + json-rpc-engine "^6.1.0" + pify "^5.0.0" + +eth-lib@0.2.8, eth-lib@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" + integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" + integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== + dependencies: + fast-safe-stringify "^2.0.6" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exception-formatter@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/exception-formatter/-/exception-formatter-1.0.7.tgz#3291616b86fceabefa97aee6a4708032c6e3b96d" + integrity sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw== + dependencies: + colors "^1.0.3" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +express@^4.14.0: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-redact@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987" + integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw== + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.1.1.tgz#c910544499d7c959351bb4260ee7c44a544084c1" + integrity sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.5.0.tgz#6d52d1c7b299bd3ee9cd7638561653399ac77b0f" + integrity sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.3: + version "13.1.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317" + integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + +google-libphonenumber@^3.2.27: + version "3.2.32" + resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz#63c48a9c247b64a3bc2eec21bdf3fcfbf2e148c0" + integrity sha512-mcNgakausov/B/eTgVeX8qc8IwWjRrupk9UzZZ/QDEvdh5fAjE7Aa211bkZpZj42zKkeS6MTT8avHUwjcLxuGQ== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hey-listen@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" + integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +io-ts@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.0.1.tgz#1261c12f915c2f48d16393a36966636b48a45aa1" + integrity sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.0.4, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-base64@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-1.1.0.tgz#8ce1d719895030a457c59a7dcaf39b66d99d56b4" + integrity sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.9.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jayson@^3.4.4: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" + integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + uuid "^8.3.2" + ws "^7.4.5" + +jiti@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== + +jose@^4.11.4, jose@^4.14.1: + version "4.14.4" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" + integrity sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + eth-rpc-errors "^4.0.2" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +keccak@^3.0.0, keccak@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lit-element@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa" + integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.1.0" + "@lit/reactive-element" "^1.3.0" + lit-html "^2.7.0" + +lit-html@^2.7.0: + version "2.7.4" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.4.tgz#6d75001977c206683685b9d76594a516afda2954" + integrity sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g== + dependencies: + "@types/trusted-types" "^2.0.2" + +lit@2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.4.tgz#ca63d27fda178dbffae0faf2c882b9910e40842c" + integrity sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g== + dependencies: + "@lit/reactive-element" "^1.6.0" + lit-element "^3.3.0" + lit-html "^2.7.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.isequal@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-query-parser@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29" + integrity sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w== + dependencies: + "@babel/runtime" "^7.12.5" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +moment@^2.10.6: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +motion@10.15.5: + version "10.15.5" + resolved "https://registry.yarnpkg.com/motion/-/motion-10.15.5.tgz#d336ddbdd37bc28bb99fbb243fe309df6c685ad6" + integrity sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/dom" "^10.15.5" + "@motionone/svelte" "^10.15.5" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + "@motionone/vue" "^10.15.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.14.0: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@^3.3.4, nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-auth@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/next-auth/-/next-auth-4.22.1.tgz#1ea5084e38867966dc6492a71c6729c8f5cfa96b" + integrity sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA== + dependencies: + "@babel/runtime" "^7.20.13" + "@panva/hkdf" "^1.0.2" + cookie "^0.5.0" + jose "^4.11.4" + oauth "^0.9.15" + openid-client "^5.4.0" + preact "^10.6.3" + preact-render-to-string "^5.1.19" + uuid "^8.3.2" + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next@^13.4.2: + version "13.4.4" + resolved "https://registry.yarnpkg.com/next/-/next-13.4.4.tgz#d1027c8d77f4c51be0b39f671b4820db03c93e60" + integrity sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA== + dependencies: + "@next/env" "13.4.4" + "@swc/helpers" "0.5.1" + busboy "1.6.0" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.1.1" + zod "3.21.4" + optionalDependencies: + "@next/swc-darwin-arm64" "13.4.4" + "@next/swc-darwin-x64" "13.4.4" + "@next/swc-linux-arm64-gnu" "13.4.4" + "@next/swc-linux-arm64-musl" "13.4.4" + "@next/swc-linux-x64-gnu" "13.4.4" + "@next/swc-linux-x64-musl" "13.4.4" + "@next/swc-win32-arm64-msvc" "13.4.4" + "@next/swc-win32-ia32-msvc" "13.4.4" + "@next/swc-win32-x64-msvc" "13.4.4" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-fetch@^2.6.11, node-fetch@^2.6.7: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +node-releases@^2.0.8: + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +oauth@^0.9.15: + version "0.9.15" + resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" + integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +oidc-token-hash@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz#9a229f0a1ce9d4fc89bcaee5478c97a889e7b7b6" + integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== + +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +openid-client@^5.4.0: + version "5.4.2" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.4.2.tgz#8692bcc2a40ef3426c5ba5c11f7493599e93ccc7" + integrity sha512-lIhsdPvJ2RneBm3nGBBhQchpe3Uka//xf7WPHTIglery8gnckvW7Bd9IaQzekzXJvWthCMyi/xVEyGW0RFPytw== + dependencies: + jose "^4.14.1" + lru-cache "^6.0.0" + object-hash "^2.2.0" + oidc-token-hash "^5.0.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +outdent@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" + integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + +pirates@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.23: + version "8.4.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact-render-to-string@^5.1.19: + version "5.2.6" + resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz#0ff0c86cd118d30affb825193f18e92bd59d0604" + integrity sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw== + dependencies: + pretty-format "^3.8.0" + +preact@^10.12.0, preact@^10.5.9, preact@^10.6.3: + version "10.15.0" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.15.0.tgz#14bae0afe3547ca9d45d22fda2a4266462d31cf3" + integrity sha512-nZSa8M2R2m1n7nJSBlzDpxRJaIsejrTO1vlFbdpFvyC8qM1iU+On2y0otfoUm6SRB5o0lF0CKDFxg6grEFU0iQ== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +pretty-format@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" + integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== + +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-compare@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" + integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qrcode@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b" + integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qrcode@1.5.3, qrcode@^1.5.1: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.10.3: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^6.13.5: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-icons@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445" + integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-remove-scroll-bar@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" + integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0" + integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +request@^2.79.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.22.1, resolve@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.3: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rpc-websockets@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" + integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-json-stringify@~1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-json-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" + integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +safe-stable-stringify@^2.1.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +sucrase@^3.32.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" + integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +superstruct@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" + integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== + +superstruct@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046" + integrity sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^11.8.5" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + +tailwindcss@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +uint8arrays@^3.0.0, uint8arrays@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +underscore@>1.4.4: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +use-callback-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" + integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0, util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +valtio@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.5.tgz#7852125e3b774b522827d96bd9c76d285c518678" + integrity sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ== + dependencies: + proxy-compare "2.5.1" + use-sync-external-store "1.2.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +viem@^0.3.30: + version "0.3.37" + resolved "https://registry.yarnpkg.com/viem/-/viem-0.3.37.tgz#0426863c52f4b77547bd3216b8ac66e32a38dda5" + integrity sha512-17jycP/1Hy9DsDpHlaaI7bbAHBDYGfVYHN6j0ltE7A/S30RXhPVFe4LAPRfmG+xR2QBq8xSUpjO78cRgDLBjZQ== + dependencies: + "@adraffy/ens-normalize" "1.9.0" + "@noble/curves" "1.0.0" + "@noble/hashes" "1.3.0" + "@scure/bip32" "1.3.0" + "@scure/bip39" "1.2.0" + "@wagmi/chains" "0.3.1" + abitype "0.8.2" + isomorphic-ws "5.0.0" + ws "8.12.0" + +wagmi@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-1.0.7.tgz#913c0ed85aad0edb6d59a2f97ed1747093757845" + integrity sha512-JBTR2Au6AGeFKYDpskaQ2OwHRkD/a+LgGrIqThxREuLKtMbiRlnM3XMr9cTFl0T/yg8TcmZO2IMq3O4yRVitsg== + dependencies: + "@tanstack/query-sync-storage-persister" "^4.27.1" + "@tanstack/react-query" "^4.28.0" + "@tanstack/react-query-persist-client" "^4.28.0" + "@wagmi/core" "1.0.7" + abitype "0.8.1" + use-sync-external-store "^1.2.0" + +web3-bzz@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.6.tgz#95f370aecc3ff6ad07f057e6c0c916ef09b04dde" + integrity sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.12.1" + +web3-core-helpers@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz#c478246a9abe4e5456acf42657dac2f7c330be74" + integrity sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA== + dependencies: + underscore "1.12.1" + web3-eth-iban "1.3.6" + web3-utils "1.3.6" + +web3-core-method@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.6.tgz#4b0334edd94b03dfec729d113c69a4eb6ebc68ae" + integrity sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.12.1" + web3-core-helpers "1.3.6" + web3-core-promievent "1.3.6" + web3-core-subscriptions "1.3.6" + web3-utils "1.3.6" + +web3-core-promievent@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz#6c27dc79de8f71b74f5d17acaf9aaf593d3cb0c9" + integrity sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz#4fea269fe913fd4fca464b4f7c65cb94857b5b2a" + integrity sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA== + dependencies: + underscore "1.12.1" + util "^0.12.0" + web3-core-helpers "1.3.6" + web3-providers-http "1.3.6" + web3-providers-ipc "1.3.6" + web3-providers-ws "1.3.6" + +web3-core-subscriptions@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz#ee24e7974d1d72ff6c992c599deba4ef9b308415" + integrity sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g== + dependencies: + eventemitter3 "4.0.4" + underscore "1.12.1" + web3-core-helpers "1.3.6" + +web3-core@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.6.tgz#a6a761d1ff2f3ee462b8dab679229d2f8e267504" + integrity sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-requestmanager "1.3.6" + web3-utils "1.3.6" + +web3-eth-abi@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9" + integrity sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.12.1" + web3-utils "1.3.6" + +web3-eth-accounts@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz#f9fcb50b28ee58090ab292a10d996155caa2b474" + integrity sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.12.1" + uuid "3.3.2" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-utils "1.3.6" + +web3-eth-contract@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz#cccf4d32dc56917fb6923e778498a9ba2a5ba866" + integrity sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-promievent "1.3.6" + web3-core-subscriptions "1.3.6" + web3-eth-abi "1.3.6" + web3-utils "1.3.6" + +web3-eth-ens@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz#0d28c5d4ea7b4462ef6c077545a77956a6cdf175" + integrity sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-promievent "1.3.6" + web3-eth-abi "1.3.6" + web3-eth-contract "1.3.6" + web3-utils "1.3.6" + +web3-eth-iban@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz#0d6ba21fe78f190af8919e9cd5453882457209e0" + integrity sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.6" + +web3-eth-personal@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz#226137916754c498f0284f22c55924c87a2efcf0" + integrity sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-net "1.3.6" + web3-utils "1.3.6" + +web3-eth@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.6.tgz#2c650893d540a7a0eb1365dd5b2dca24ac919b7c" + integrity sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA== + dependencies: + underscore "1.12.1" + web3-core "1.3.6" + web3-core-helpers "1.3.6" + web3-core-method "1.3.6" + web3-core-subscriptions "1.3.6" + web3-eth-abi "1.3.6" + web3-eth-accounts "1.3.6" + web3-eth-contract "1.3.6" + web3-eth-ens "1.3.6" + web3-eth-iban "1.3.6" + web3-eth-personal "1.3.6" + web3-net "1.3.6" + web3-utils "1.3.6" + +web3-net@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.6.tgz#a56492e2227475e38db29394f8bac305a2446e41" + integrity sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw== + dependencies: + web3-core "1.3.6" + web3-core-method "1.3.6" + web3-utils "1.3.6" + +web3-providers-http@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.6.tgz#36e8724a7424d52827819d53fd75dbf31f5422c2" + integrity sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q== + dependencies: + web3-core-helpers "1.3.6" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz#cef8d12c1ebb47adce5ebf597f553c623362cb4a" + integrity sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA== + dependencies: + oboe "2.1.5" + underscore "1.12.1" + web3-core-helpers "1.3.6" + +web3-providers-ws@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz#e1df617bc89d66165abdf2191da0014c505bfaac" + integrity sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.12.1" + web3-core-helpers "1.3.6" + websocket "^1.0.32" + +web3-shh@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.6.tgz#4e3486c7eca5cbdb87f88910948223a5b7ea6c20" + integrity sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw== + dependencies: + web3-core "1.3.6" + web3-core-method "1.3.6" + web3-core-subscriptions "1.3.6" + web3-net "1.3.6" + +web3-utils@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.6.tgz#390bc9fa3a7179746963cfaca55bb80ac4d8dc10" + integrity sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.12.1" + utf8 "3.0.0" + +web3@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.6.tgz#599425461c3f9a8cbbefa70616438995f4a064cc" + integrity sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA== + dependencies: + web3-bzz "1.3.6" + web3-core "1.3.6" + web3-eth "1.3.6" + web3-eth-personal "1.3.6" + web3-net "1.3.6" + web3-shh "1.3.6" + web3-utils "1.3.6" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7.4.0, ws@^7.4.5, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.5.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xtend@^4.0.0, xtend@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@3.21.4: + version "3.21.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" + integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== + +zustand@^4.3.1: + version "4.3.8" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.8.tgz#37113df8e9e1421b0be1b2dca02b49b76210e7c4" + integrity sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg== + dependencies: + use-sync-external-store "1.2.0"