From 769fd119755d2234599b63836a24dfce91b88fb6 Mon Sep 17 00:00:00 2001 From: nahuelmatias Date: Sun, 13 Feb 2022 13:24:08 -0300 Subject: [PATCH 01/12] Initial commit --- .gitignore | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 106 insertions(+) create mode 100644 .gitignore create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..67045665 --- /dev/null +++ b/.gitignore @@ -0,0 +1,104 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port diff --git a/README.md b/README.md new file mode 100644 index 00000000..9e126457 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# exactly-private +Repo privado para intentar el challenge de Solidity From 21282a926104c9ed6f95d3ed7af9e9a5fdc4c284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Sun, 13 Feb 2022 15:26:09 -0300 Subject: [PATCH 02/12] Agregado el challenge al README --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/README.md b/README.md index 9e126457..5f79bc72 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,54 @@ # exactly-private Repo privado para intentar el challenge de Solidity + +# Smart Contract Challenge + +## A) Challenge + +### 1) Setup a project and create a contract + +#### Summary + +ETHPool provides a service where people can deposit ETH and they will receive weekly rewards. Users must be able to take out their deposits along with their portion of rewards at any time. New rewards are deposited manually into the pool by the ETHPool team each week using a contract function. + +#### Requirements + +- Only the team can deposit rewards. +- Deposited rewards go to the pool of users, not to individual users. +- Users should be able to withdraw their deposits along with their share of rewards considering the time when they deposited. + +Example: + +> Let say we have user **A** and **B** and team **T**. +> +> **A** deposits 100, and **B** deposits 300 for a total of 400 in the pool. Now **A** has 25% of the pool and **B** has 75%. When **T** deposits 200 rewards, **A** should be able to withdraw 150 and **B** 450. +> +> What if the following happens? **A** deposits then **T** deposits then **B** deposits then **A** withdraws and finally **B** withdraws. +> **A** should get their deposit + all the rewards. +> **B** should only get their deposit because rewards were sent to the pool before they participated. + +#### Goal + +Design and code a contract for ETHPool, take all the assumptions you need to move forward. + +You can use any development tools you prefer: Hardhat, Truffle, Brownie, Solidity, Vyper. + +Useful resources: + +- Solidity Docs: https://docs.soliditylang.org/en/v0.8.4 +- Educational Resource: https://github.com/austintgriffith/scaffold-eth +- Project Starter: https://github.com/abarmat/solidity-starter + +### 2) Deploy your contract + +Deploy the contract to any Ethereum testnet of your preference. Keep record of the deployed address. + +Bonus: + +- Verify the contract in Etherscan + +### 3) Interact with the contract + +Create a script (or a Hardhat task) to query the total amount of ETH held in the contract. + +_You can use any library you prefer: Ethers.js, Web3.js, Web3.py, eth-brownie_ From bb4d1c44ebc8d17e530c92d603a173e46abcf5d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Sun, 13 Feb 2022 21:37:04 -0300 Subject: [PATCH 03/12] =?UTF-8?q?Primera=20versi=C3=B3n=20de=20ETHpool.=20?= =?UTF-8?q?Faltan=20los=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + build/contracts/ETHpool.json | 11406 ++++++++++++++++++++++ build/contracts/Migrations.json | 2328 +++++ contracts/ETHpool.sol | 179 + contracts/Migrations.sol | 19 + migrations/1644784659_deploy_ethpool.js | 6 + migrations/1_initial_migration.js | 5 + truffle-config.js | 99 + 8 files changed, 14045 insertions(+) create mode 100644 build/contracts/ETHpool.json create mode 100644 build/contracts/Migrations.json create mode 100644 contracts/ETHpool.sol create mode 100644 contracts/Migrations.sol create mode 100644 migrations/1644784659_deploy_ethpool.js create mode 100644 migrations/1_initial_migration.js create mode 100644 truffle-config.js diff --git a/.gitignore b/.gitignore index 67045665..3462a522 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* +# Do not upload secrets! +.secrets + # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/build/contracts/ETHpool.json b/build/contracts/ETHpool.json new file mode 100644 index 00000000..c1725379 --- /dev/null +++ b/build/contracts/ETHpool.json @@ -0,0 +1,11406 @@ +{ + "contractName": "ETHpool", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "Team", + "outputs": [ + { + "internalType": "address", + "name": "_addr", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_role", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UserList", + "outputs": [ + { + "internalType": "uint256", + "name": "_currentBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_compositionAtStartStaking", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timeStaking", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolStatus", + "outputs": [ + { + "internalType": "uint256", + "name": "poolBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardMultiplied", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardsCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "enum ETHpool.State", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DepositRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "poolbalance", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "Stake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "Withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pausePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "resumePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DepositRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolbalance\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Team\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"UserList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_compositionAtStartStaking\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStaking\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardMultiplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardTime\",\"type\":\"uint256\"},{\"internalType\":\"enum ETHpool.State\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ETHpool.sol\":\"ETHpool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ETHpool.sol\":{\"keccak256\":\"0x21c35fc935685ce34885575eb43e5ee48db0f380391298f1fb92eaf8d18f170a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6be4a5197cff3deed460f9d664e1775162aed016c4920921122e8746fd1086d5\",\"dweb:/ipfs/QmcvWDG3gDvMBu1gaL3vZpAHrdDujqmZaPxn7sVtTopu5t\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000600260040160006101000a81548160ff02191690836002811115610081576100806100ab565b5b021790555060006002600001819055506000600260010181905550600060028001819055506100da565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610f16806100e96000396000f3fe6080604052600436106100915760003560e01c8063b9ba5f8b11610059578063b9ba5f8b14610131578063d515b1ce1461014f578063de20bc921461018e578063eb63a59e14610198578063f0228692146101d757610091565b806306fdde031461009657806311ec106b146100c15780632d42cf7d146100d857806357ea89b6146100ef578063aa09d5b71461011a575b600080fd5b3480156100a257600080fd5b506100ab610206565b6040516100b89190610930565b60405180910390f35b3480156100cd57600080fd5b506100d661023f565b005b3480156100e457600080fd5b506100ed6102f3565b005b3480156100fb57600080fd5b506101046103a6565b604051610111919061096b565b60405180910390f35b34801561012657600080fd5b5061012f610432565b005b6101396104e6565b604051610146919061096b565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906109e9565b6105f1565b60405161018593929190610a25565b60405180910390f35b6101966106c3565b005b3480156101a457600080fd5b506101bf60048036038101906101ba91906109e9565b61083c565b6040516101ce93929190610a63565b60405180910390f35b3480156101e357600080fd5b506101ec610866565b6040516101fd959493929190610b11565b60405180910390f35b6040518060400160405280600781526020017f455448506f6f6c0000000000000000000000000000000000000000000000000081525081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bd6565b60405180910390fd5b6000600260040160006101000a81548160ff021916908360028111156102ec576102eb610a9a565b5b0217905550565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90610bd6565b60405180910390fd5b60028060040160006101000a81548160ff0219169083600281111561039f5761039e610a9a565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290610c68565b60405180910390fd5b6001905090565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146104b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ad90610bd6565b60405180910390fd5b6001600260040160006101000a81548160ff021916908360028111156104df576104de610a9a565b5b0217905550565b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541461056c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056390610bd6565b60405180910390fd5b34600260000160008282546105819190610cb7565b92505081905550426002600301819055506002600001546018346105a59190610d0d565b6105af9190610d96565b600260010160008282546105c39190610cb7565b9250508190555060016002800160008282546105df9190610cb7565b92505081905550600260000154905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461063a90610df6565b80601f016020809104026020016040519081016040528092919081815260200182805461066690610df6565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050908060020154905083565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90610ec0565b60405180910390fd5b346002600001600082825461075c9190610cb7565b92505081905550346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506002600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16905085565b600081519050919050565b600082825260208201905092915050565b60005b838110156108d15780820151818401526020810190506108b6565b838111156108e0576000848401525b50505050565b6000601f19601f8301169050919050565b600061090282610897565b61090c81856108a2565b935061091c8185602086016108b3565b610925816108e6565b840191505092915050565b6000602082019050818103600083015261094a81846108f7565b905092915050565b6000819050919050565b61096581610952565b82525050565b6000602082019050610980600083018461095c565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109b68261098b565b9050919050565b6109c6816109ab565b81146109d157600080fd5b50565b6000813590506109e3816109bd565b92915050565b6000602082840312156109ff576109fe610986565b5b6000610a0d848285016109d4565b91505092915050565b610a1f816109ab565b82525050565b6000606082019050610a3a6000830186610a16565b8181036020830152610a4c81856108f7565b9050610a5b604083018461095c565b949350505050565b6000606082019050610a78600083018661095c565b610a85602083018561095c565b610a92604083018461095c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610ada57610ad9610a9a565b5b50565b6000819050610aeb82610ac9565b919050565b6000610afb82610add565b9050919050565b610b0b81610af0565b82525050565b600060a082019050610b26600083018861095c565b610b33602083018761095c565b610b40604083018661095c565b610b4d606083018561095c565b610b5a6080830184610b02565b9695505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000610bc06025836108a2565b9150610bcb82610b64565b604082019050919050565b60006020820190508181036000830152610bef81610bb3565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b6000610c526028836108a2565b9150610c5d82610bf6565b604082019050919050565b60006020820190508181036000830152610c8181610c45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610cc282610952565b9150610ccd83610952565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d0257610d01610c88565b5b828201905092915050565b6000610d1882610952565b9150610d2383610952565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610d5c57610d5b610c88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610da182610952565b9150610dac83610952565b925082610dbc57610dbb610d67565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e0e57607f821691505b60208210811415610e2257610e21610dc7565b5b50919050565b7f506c6561736520666972737420706572666f726d20612077697468647261776160008201527f6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d697360208201527f652e000000000000000000000000000000000000000000000000000000000000604082015250565b6000610eaa6042836108a2565b9150610eb582610e28565b606082019050919050565b60006020820190508181036000830152610ed981610e9d565b905091905056fea264697066735822122029873542725b901a85b72049058a28beb677dd6a77d382cf2dfe2ed80b323ce964736f6c634300080b0033", + "deployedBytecode": "0x6080604052600436106100915760003560e01c8063b9ba5f8b11610059578063b9ba5f8b14610131578063d515b1ce1461014f578063de20bc921461018e578063eb63a59e14610198578063f0228692146101d757610091565b806306fdde031461009657806311ec106b146100c15780632d42cf7d146100d857806357ea89b6146100ef578063aa09d5b71461011a575b600080fd5b3480156100a257600080fd5b506100ab610206565b6040516100b89190610930565b60405180910390f35b3480156100cd57600080fd5b506100d661023f565b005b3480156100e457600080fd5b506100ed6102f3565b005b3480156100fb57600080fd5b506101046103a6565b604051610111919061096b565b60405180910390f35b34801561012657600080fd5b5061012f610432565b005b6101396104e6565b604051610146919061096b565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906109e9565b6105f1565b60405161018593929190610a25565b60405180910390f35b6101966106c3565b005b3480156101a457600080fd5b506101bf60048036038101906101ba91906109e9565b61083c565b6040516101ce93929190610a63565b60405180910390f35b3480156101e357600080fd5b506101ec610866565b6040516101fd959493929190610b11565b60405180910390f35b6040518060400160405280600781526020017f455448506f6f6c0000000000000000000000000000000000000000000000000081525081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bd6565b60405180910390fd5b6000600260040160006101000a81548160ff021916908360028111156102ec576102eb610a9a565b5b0217905550565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90610bd6565b60405180910390fd5b60028060040160006101000a81548160ff0219169083600281111561039f5761039e610a9a565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290610c68565b60405180910390fd5b6001905090565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146104b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ad90610bd6565b60405180910390fd5b6001600260040160006101000a81548160ff021916908360028111156104df576104de610a9a565b5b0217905550565b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541461056c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056390610bd6565b60405180910390fd5b34600260000160008282546105819190610cb7565b92505081905550426002600301819055506002600001546018346105a59190610d0d565b6105af9190610d96565b600260010160008282546105c39190610cb7565b9250508190555060016002800160008282546105df9190610cb7565b92505081905550600260000154905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461063a90610df6565b80601f016020809104026020016040519081016040528092919081815260200182805461066690610df6565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050908060020154905083565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90610ec0565b60405180910390fd5b346002600001600082825461075c9190610cb7565b92505081905550346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506002600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16905085565b600081519050919050565b600082825260208201905092915050565b60005b838110156108d15780820151818401526020810190506108b6565b838111156108e0576000848401525b50505050565b6000601f19601f8301169050919050565b600061090282610897565b61090c81856108a2565b935061091c8185602086016108b3565b610925816108e6565b840191505092915050565b6000602082019050818103600083015261094a81846108f7565b905092915050565b6000819050919050565b61096581610952565b82525050565b6000602082019050610980600083018461095c565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109b68261098b565b9050919050565b6109c6816109ab565b81146109d157600080fd5b50565b6000813590506109e3816109bd565b92915050565b6000602082840312156109ff576109fe610986565b5b6000610a0d848285016109d4565b91505092915050565b610a1f816109ab565b82525050565b6000606082019050610a3a6000830186610a16565b8181036020830152610a4c81856108f7565b9050610a5b604083018461095c565b949350505050565b6000606082019050610a78600083018661095c565b610a85602083018561095c565b610a92604083018461095c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610ada57610ad9610a9a565b5b50565b6000819050610aeb82610ac9565b919050565b6000610afb82610add565b9050919050565b610b0b81610af0565b82525050565b600060a082019050610b26600083018861095c565b610b33602083018761095c565b610b40604083018661095c565b610b4d606083018561095c565b610b5a6080830184610b02565b9695505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000610bc06025836108a2565b9150610bcb82610b64565b604082019050919050565b60006020820190508181036000830152610bef81610bb3565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b6000610c526028836108a2565b9150610c5d82610bf6565b604082019050919050565b60006020820190508181036000830152610c8181610c45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610cc282610952565b9150610ccd83610952565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d0257610d01610c88565b5b828201905092915050565b6000610d1882610952565b9150610d2383610952565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610d5c57610d5b610c88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610da182610952565b9150610dac83610952565b925082610dbc57610dbb610d67565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e0e57607f821691505b60208210811415610e2257610e21610dc7565b5b50919050565b7f506c6561736520666972737420706572666f726d20612077697468647261776160008201527f6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d697360208201527f652e000000000000000000000000000000000000000000000000000000000000604082015250565b6000610eaa6042836108a2565b9150610eb582610e28565b606082019050919050565b60006020820190508181036000830152610ed981610e9d565b905091905056fea264697066735822122029873542725b901a85b72049058a28beb677dd6a77d382cf2dfe2ed80b323ce964736f6c634300080b0033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:190:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "35:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "45:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "45:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "149:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "152:4:2", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "142:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "142:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "142:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "173:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "176:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "166:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "166:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "166:15:2" + } + ] + }, + "name": "panic_error_0x21", + "nodeType": "YulFunctionDefinition", + "src": "7:180:2" + } + ] + }, + "contents": "{\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:10392:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "66:40:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "77:22:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "93:5:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "87:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "87:12:2" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "77:6:2" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "49:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "59:6:2", + "type": "" + } + ], + "src": "7:99:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "208:73:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "225:3:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "230:6:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "218:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "218:19:2" + }, + "nodeType": "YulExpressionStatement", + "src": "218:19:2" + }, + { + "nodeType": "YulAssignment", + "src": "246:29:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "265:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "270:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "261:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "261:14:2" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "246:11:2" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "180:3:2", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "185:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "196:11:2", + "type": "" + } + ], + "src": "112:169:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "336:258:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "346:10:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "355:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "350:1:2", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "415:63:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "440:3:2" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "445:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "436:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "436:11:2" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "459:3:2" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "464:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "455:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "455:11:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "449:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "449:18:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "429:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "429:39:2" + }, + "nodeType": "YulExpressionStatement", + "src": "429:39:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "376:1:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "379:6:2" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "373:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "373:13:2" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "387:19:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:15:2", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "398:1:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "401:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "394:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "394:10:2" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "389:1:2" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "369:3:2", + "statements": [] + }, + "src": "365:113:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "512:76:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "562:3:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "567:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "558:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "558:16:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "576:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "551:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "551:27:2" + }, + "nodeType": "YulExpressionStatement", + "src": "551:27:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "493:1:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "496:6:2" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "490:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "490:13:2" + }, + "nodeType": "YulIf", + "src": "487:101:2" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "318:3:2", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "323:3:2", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "328:6:2", + "type": "" + } + ], + "src": "287:307:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "648:54:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "658:38:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "683:2:2", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "672:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "672:14:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "692:2:2", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "688:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "688:7:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "668:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "668:28:2" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "658:6:2" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "631:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "641:6:2", + "type": "" + } + ], + "src": "600:102:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "800:272:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "810:53:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "857:5:2" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "824:32:2" + }, + "nodeType": "YulFunctionCall", + "src": "824:39:2" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "814:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "872:78:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "938:3:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "943:6:2" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "879:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "879:71:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "872:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "985:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "992:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "981:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "981:16:2" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "999:3:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1004:6:2" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "959:21:2" + }, + "nodeType": "YulFunctionCall", + "src": "959:52:2" + }, + "nodeType": "YulExpressionStatement", + "src": "959:52:2" + }, + { + "nodeType": "YulAssignment", + "src": "1020:46:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1031:3:2" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1058:6:2" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1036:21:2" + }, + "nodeType": "YulFunctionCall", + "src": "1036:29:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1027:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1027:39:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1020:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "781:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "788:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "796:3:2", + "type": "" + } + ], + "src": "708:364:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1196:195:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1206:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1218:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1229:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1214:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1214:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1206:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1253:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1264:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1249:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1249:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1272:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1278:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1268:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1268:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1242:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1242:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1242:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "1298:86:2", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1370:6:2" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1379:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "1306:63:2" + }, + "nodeType": "YulFunctionCall", + "src": "1306:78:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1298:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1168:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1180:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1191:4:2", + "type": "" + } + ], + "src": "1078:313:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1442:32:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1452:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1463:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1452:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1424:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1434:7:2", + "type": "" + } + ], + "src": "1397:77:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1545:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1562:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1585:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1567:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1567:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1555:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1555:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1555:37:2" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1533:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1540:3:2", + "type": "" + } + ], + "src": "1480:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1702:124:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1712:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1724:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1735:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1720:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1720:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1712:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1792:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1805:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1816:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1801:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1801:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "1748:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "1748:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1748:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1674:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1686:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1697:4:2", + "type": "" + } + ], + "src": "1604:222:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1872:35:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1882:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1898:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1892:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "1892:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1882:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1865:6:2", + "type": "" + } + ], + "src": "1832:75:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2002:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2019:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2022:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2012:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2012:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2012:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "1913:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2125:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2142:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2145:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2135:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2135:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2135:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "2036:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2204:81:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2214:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2229:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2236:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2225:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2225:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2214:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2186:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2196:7:2", + "type": "" + } + ], + "src": "2159:126:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2336:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2346:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2375:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "2357:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "2357:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2346:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2318:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2328:7:2", + "type": "" + } + ], + "src": "2291:96:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2436:79:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2493:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2502:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2505:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2495:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2495:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2495:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2459:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2484:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "2466:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "2466:24:2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2456:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "2456:35:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2449:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2449:43:2" + }, + "nodeType": "YulIf", + "src": "2446:63:2" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2429:5:2", + "type": "" + } + ], + "src": "2393:122:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2573:87:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2583:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2605:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2592:12:2" + }, + "nodeType": "YulFunctionCall", + "src": "2592:20:2" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2583:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2648:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2621:26:2" + }, + "nodeType": "YulFunctionCall", + "src": "2621:33:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2621:33:2" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2551:6:2", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2559:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2567:5:2", + "type": "" + } + ], + "src": "2521:139:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2732:263:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2778:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "2780:77:2" + }, + "nodeType": "YulFunctionCall", + "src": "2780:79:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2780:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2753:7:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2762:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2749:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2749:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2774:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2745:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2745:32:2" + }, + "nodeType": "YulIf", + "src": "2742:119:2" + }, + { + "nodeType": "YulBlock", + "src": "2871:117:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2886:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2900:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2890:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2915:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2950:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2961:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2946:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2946:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2970:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2925:20:2" + }, + "nodeType": "YulFunctionCall", + "src": "2925:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2915:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2702:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2713:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2725:6:2", + "type": "" + } + ], + "src": "2666:329:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3066:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3083:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3106:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "3088:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "3088:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3076:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "3076:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3076:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3054:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3061:3:2", + "type": "" + } + ], + "src": "3001:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3299:359:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3309:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3321:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3332:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3317:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3317:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3309:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3389:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3402:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3413:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3398:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3398:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "3345:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "3345:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3345:71:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3437:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3448:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3433:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3433:18:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3457:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3463:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3453:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3453:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3426:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "3426:48:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3426:48:2" + }, + { + "nodeType": "YulAssignment", + "src": "3483:86:2", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3555:6:2" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3564:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3491:63:2" + }, + "nodeType": "YulFunctionCall", + "src": "3491:78:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3483:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3623:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3636:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3647:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3632:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3632:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "3579:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "3579:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3579:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256__to_t_address_t_string_memory_ptr_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3255:9:2", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3267:6:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3275:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3283:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3294:4:2", + "type": "" + } + ], + "src": "3125:533:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3818:288:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3828:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3840:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3851:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3836:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3836:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3828:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3908:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3921:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3932:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3917:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3917:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "3864:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "3864:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3864:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3989:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4002:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4013:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3998:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3998:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "3945:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "3945:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3945:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4071:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4084:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4095:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4080:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4080:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "4027:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "4027:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4027:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3774:9:2", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3786:6:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3794:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3802:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3813:4:2", + "type": "" + } + ], + "src": "3664:442:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4140:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4157:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4160:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4150:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "4150:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4150:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4254:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4257:4:2", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4247:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "4247:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4247:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4278:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4281:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4271:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "4271:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4271:15:2" + } + ] + }, + "name": "panic_error_0x21", + "nodeType": "YulFunctionDefinition", + "src": "4112:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4348:62:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4382:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x21", + "nodeType": "YulIdentifier", + "src": "4384:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "4384:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4384:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4371:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4378:1:2", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4368:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "4368:12:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4361:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "4361:20:2" + }, + "nodeType": "YulIf", + "src": "4358:46:2" + } + ] + }, + "name": "validator_assert_t_enum$_State_$8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4341:5:2", + "type": "" + } + ], + "src": "4298:112:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4468:73:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4478:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4489:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "4478:7:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4529:5:2" + } + ], + "functionName": { + "name": "validator_assert_t_enum$_State_$8", + "nodeType": "YulIdentifier", + "src": "4495:33:2" + }, + "nodeType": "YulFunctionCall", + "src": "4495:40:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4495:40:2" + } + ] + }, + "name": "cleanup_t_enum$_State_$8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4450:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "4460:7:2", + "type": "" + } + ], + "src": "4416:125:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4612:60:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4622:44:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4660:5:2" + } + ], + "functionName": { + "name": "cleanup_t_enum$_State_$8", + "nodeType": "YulIdentifier", + "src": "4635:24:2" + }, + "nodeType": "YulFunctionCall", + "src": "4635:31:2" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "4622:9:2" + } + ] + } + ] + }, + "name": "convert_t_enum$_State_$8_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4592:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "4602:9:2", + "type": "" + } + ], + "src": "4547:125:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4748:71:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4765:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4806:5:2" + } + ], + "functionName": { + "name": "convert_t_enum$_State_$8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "4770:35:2" + }, + "nodeType": "YulFunctionCall", + "src": "4770:42:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4758:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "4758:55:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4758:55:2" + } + ] + }, + "name": "abi_encode_t_enum$_State_$8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4736:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4743:3:2", + "type": "" + } + ], + "src": "4678:141:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5040:459:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5050:27:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5062:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5073:3:2", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5058:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5058:19:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5050:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5131:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5144:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5155:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5140:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5140:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5087:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "5087:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5087:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5212:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5225:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5236:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5221:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5221:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5168:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "5168:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5168:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5294:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5307:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5318:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5303:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5303:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5250:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "5250:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5250:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5376:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5389:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5400:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5385:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5385:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5332:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "5332:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5332:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5463:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5476:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5487:3:2", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5472:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5472:19:2" + } + ], + "functionName": { + "name": "abi_encode_t_enum$_State_$8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "5414:48:2" + }, + "nodeType": "YulFunctionCall", + "src": "5414:78:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5414:78:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4980:9:2", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4992:6:2", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5000:6:2", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5008:6:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5016:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5024:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5035:4:2", + "type": "" + } + ], + "src": "4825:674:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5611:118:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5633:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5641:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5629:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5629:14:2" + }, + { + "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e63", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5645:34:2", + "type": "", + "value": "Only the Team can call this func" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5622:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "5622:58:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5622:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5701:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5709:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5697:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "5697:15:2" + }, + { + "hexValue": "74696f6e2e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5714:7:2", + "type": "", + "value": "tion." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5690:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "5690:32:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5690:32:2" + } + ] + }, + "name": "store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "5603:6:2", + "type": "" + } + ], + "src": "5505:224:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5881:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5891:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5957:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5962:2:2", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5898:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "5898:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5891:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6063:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "nodeType": "YulIdentifier", + "src": "5974:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "5974:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "5974:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "6076:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6087:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6092:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6083:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6083:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6076:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5869:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5877:3:2", + "type": "" + } + ], + "src": "5735:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6278:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6288:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6300:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6311:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6296:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6296:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6288:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6335:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6346:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6331:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6331:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6354:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6360:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6350:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6350:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6324:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "6324:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "6324:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "6380:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6514:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6388:124:2" + }, + "nodeType": "YulFunctionCall", + "src": "6388:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6380:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6258:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6273:4:2", + "type": "" + } + ], + "src": "6107:419:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6638:121:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6660:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6668:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6656:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6656:14:2" + }, + { + "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6672:34:2", + "type": "", + "value": "Only stakeholders can use this f" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6649:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "6649:58:2" + }, + "nodeType": "YulExpressionStatement", + "src": "6649:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6728:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6736:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6724:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6724:15:2" + }, + { + "hexValue": "756e6374696f6e2e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6741:10:2", + "type": "", + "value": "unction." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6717:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "6717:35:2" + }, + "nodeType": "YulExpressionStatement", + "src": "6717:35:2" + } + ] + }, + "name": "store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "6630:6:2", + "type": "" + } + ], + "src": "6532:227:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6911:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6921:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6987:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6992:2:2", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6928:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "6928:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6921:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7093:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "nodeType": "YulIdentifier", + "src": "7004:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "7004:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "7004:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "7106:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7117:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7122:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7113:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "7113:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7106:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6899:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6907:3:2", + "type": "" + } + ], + "src": "6765:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7308:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7318:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7330:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7341:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7326:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "7326:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7318:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7365:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7376:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7361:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "7361:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7384:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7390:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7380:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "7380:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7354:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "7354:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "7354:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "7410:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7544:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7418:124:2" + }, + "nodeType": "YulFunctionCall", + "src": "7418:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7410:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7288:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7303:4:2", + "type": "" + } + ], + "src": "7137:419:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7590:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7607:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7610:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7600:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "7600:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "7600:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7704:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7707:4:2", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7697:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "7697:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "7697:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7728:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7731:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7721:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "7721:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "7721:15:2" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "7562:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7792:261:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7802:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "7825:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "7807:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "7807:20:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "7802:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7836:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "7859:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "7841:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "7841:20:2" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "7836:1:2" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7999:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8001:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "8001:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8001:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "7920:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7927:66:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "7995:1:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7923:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "7923:74:2" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7917:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "7917:81:2" + }, + "nodeType": "YulIf", + "src": "7914:107:2" + }, + { + "nodeType": "YulAssignment", + "src": "8031:16:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8042:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8045:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8038:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8038:9:2" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "8031:3:2" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "7779:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "7782:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "7788:3:2", + "type": "" + } + ], + "src": "7748:305:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8107:300:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8117:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8140:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8122:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "8122:20:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8117:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8151:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8174:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8156:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "8156:20:2" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8151:1:2" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8349:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8351:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "8351:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8351:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8261:1:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8254:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8254:9:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8247:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8247:17:2" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8269:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8276:66:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8344:1:2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8272:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8272:74:2" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8266:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "8266:81:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8243:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8243:105:2" + }, + "nodeType": "YulIf", + "src": "8240:131:2" + }, + { + "nodeType": "YulAssignment", + "src": "8381:20:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8396:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8399:1:2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "8392:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8392:9:2" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "8381:7:2" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8090:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8093:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "8099:7:2", + "type": "" + } + ], + "src": "8059:348:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8441:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8458:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8461:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8451:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8451:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8451:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8555:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8558:4:2", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8548:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8548:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8548:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8579:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8582:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8572:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8572:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8572:15:2" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "8413:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8641:143:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8651:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8674:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8656:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "8656:20:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8651:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8685:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8708:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8690:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "8690:20:2" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8685:1:2" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8732:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "8734:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "8734:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8734:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8729:1:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8722:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8722:9:2" + }, + "nodeType": "YulIf", + "src": "8719:35:2" + }, + { + "nodeType": "YulAssignment", + "src": "8764:14:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8773:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8776:1:2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8769:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8769:9:2" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "8764:1:2" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8630:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8633:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "8639:1:2", + "type": "" + } + ], + "src": "8599:185:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8818:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8835:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8838:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8828:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8828:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8828:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8932:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8935:4:2", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8925:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8925:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8925:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8956:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8959:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8949:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "8949:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "8949:15:2" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "8790:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9027:269:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9037:22:2", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9051:4:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9057:1:2", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "9047:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9047:12:2" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9037:6:2" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9068:38:2", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9098:4:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9104:1:2", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9094:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9094:12:2" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "9072:18:2", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9145:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9159:27:2", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9173:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9181:4:2", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9169:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9169:17:2" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9159:6:2" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "9125:18:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "9118:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "9118:26:2" + }, + "nodeType": "YulIf", + "src": "9115:81:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9248:42:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "9262:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "9262:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "9262:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "9212:18:2" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9235:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9243:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "9232:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "9232:14:2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "9209:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "9209:38:2" + }, + "nodeType": "YulIf", + "src": "9206:84:2" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "9011:4:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9020:6:2", + "type": "" + } + ], + "src": "8976:320:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9408:184:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9430:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9438:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9426:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9426:14:2" + }, + { + "hexValue": "506c6561736520666972737420706572666f726d206120776974686472617761", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9442:34:2", + "type": "", + "value": "Please first perform a withdrawa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9419:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "9419:58:2" + }, + "nodeType": "YulExpressionStatement", + "src": "9419:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9498:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9506:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9494:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9494:15:2" + }, + { + "hexValue": "6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9511:34:2", + "type": "", + "value": "l. We will solve in V2, I promis" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9487:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "9487:59:2" + }, + "nodeType": "YulExpressionStatement", + "src": "9487:59:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9567:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9575:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9563:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9563:15:2" + }, + { + "hexValue": "652e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9580:4:2", + "type": "", + "value": "e." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9556:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "9556:29:2" + }, + "nodeType": "YulExpressionStatement", + "src": "9556:29:2" + } + ] + }, + "name": "store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9400:6:2", + "type": "" + } + ], + "src": "9302:290:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9744:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9754:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9820:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9825:2:2", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9761:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "9761:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9754:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9926:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "nodeType": "YulIdentifier", + "src": "9837:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "9837:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "9837:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "9939:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9950:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9955:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9946:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9946:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9939:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9732:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9740:3:2", + "type": "" + } + ], + "src": "9598:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10141:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10151:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10163:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10174:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10159:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10159:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10151:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10198:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10209:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10194:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10194:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10217:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10223:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10213:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10213:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10187:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "10187:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "10187:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "10243:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10377:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10251:124:2" + }, + "nodeType": "YulFunctionCall", + "src": "10251:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10243:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10121:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10136:4:2", + "type": "" + } + ], + "src": "9970:419:2" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256__to_t_address_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function validator_assert_t_enum$_State_$8(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_State_$8(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_State_$8(value)\n }\n\n function convert_t_enum$_State_$8_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_State_$8(value)\n }\n\n function abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_State_$8_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value4, add(headStart, 128))\n\n }\n\n function store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(memPtr) {\n\n mstore(add(memPtr, 0), \"Only the Team can call this func\")\n\n mstore(add(memPtr, 32), \"tion.\")\n\n }\n\n function abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(memPtr) {\n\n mstore(add(memPtr, 0), \"Only stakeholders can use this f\")\n\n mstore(add(memPtr, 32), \"unction.\")\n\n }\n\n function abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc(memPtr) {\n\n mstore(add(memPtr, 0), \"Please first perform a withdrawa\")\n\n mstore(add(memPtr, 32), \"l. We will solve in V2, I promis\")\n\n mstore(add(memPtr, 64), \"e.\")\n\n }\n\n function abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 66)\n store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc(pos)\n end := add(pos, 96)\n }\n\n function abi_encode_tuple_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "2773:3583:0:-:0;;;3680:288;;;;;;;;;;3728:1;3703:4;:16;3708:10;3703:16;;;;;;;;;;;;;;;:22;;:26;;;;3789:13;3769:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;3837:1;3812:10;:22;;:26;;;;3923:1;3889:10;:31;;:35;;;;3960:1;3934:10;:23;;:27;;;;2773:3583;;7:180:2;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;2773:3583:0;;;;;;;", + "deployedSourceMap": "2773:3583:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5929:120;;;;;;;;;;;;;:::i;:::-;;5786:137;;;;;;;;;;;;;:::i;:::-;;5520:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5638:142;;;;;;;;;;;;;:::i;:::-;;4222:359;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3602:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;4936:425;;;:::i;:::-;;3548:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3651:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;2796:39;;;;;;;;;;;;;;;;;;;:::o;5929:120::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5997:13:::1;5977:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5929:120::o:0;5786:137::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5851:11:::1;5831:10:::0;:17:::1;;;:31;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5786:137::o:0;5520:76::-;5565:4;6158:1;6119:8;:20;6128:10;6119:20;;;;;;;;;;;;;;;:36;;;:40;6110:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;5588:1:::1;5581:8;;5520:76:::0;:::o;5638:142::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5761:12:::1;5741:10;:17;;;:32;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5638:142::o:0;4222:359::-;4280:16;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4334:9:::1;4308:10;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;4381:15;4353:10;:25;;:43;;;;4475:10;:22;;;2967:5;4442:9;:29;;;;:::i;:::-;4441:56;;;;:::i;:::-;4406:10;:31;;;:91;;;;;;;:::i;:::-;;;;;;;;4534:1;4507:10;:23:::0;::::1;;:28;;;;;;;:::i;:::-;;;;;;;;4552:10;:22;;;4545:29;;4222:359:::0;:::o;3602:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4936:425::-;5027:1;4987:8;:20;4996:10;4987:20;;;;;;;;;;;;;;;:36;;;:41;4978:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;5135:9;5109:10;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;5193:9;5154:8;:20;5163:10;5154:20;;;;;;;;;;;;;;;:36;;:48;;;;5262:10;:31;;;5212:8;:20;5221:10;5212:20;;;;;;;;;;;;;;;:47;;:81;;;;5339:15;5303:8;:20;5312:10;5303:20;;;;;;;;;;;;;;;:33;;:51;;;;4936:425::o;3548:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3651:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:2:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:77::-;1434:7;1463:5;1452:16;;1397:77;;;:::o;1480:118::-;1567:24;1585:5;1567:24;:::i;:::-;1562:3;1555:37;1480:118;;:::o;1604:222::-;1697:4;1735:2;1724:9;1720:18;1712:26;;1748:71;1816:1;1805:9;1801:17;1792:6;1748:71;:::i;:::-;1604:222;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:329::-;2725:6;2774:2;2762:9;2753:7;2749:23;2745:32;2742:119;;;2780:79;;:::i;:::-;2742:119;2900:1;2925:53;2970:7;2961:6;2950:9;2946:22;2925:53;:::i;:::-;2915:63;;2871:117;2666:329;;;;:::o;3001:118::-;3088:24;3106:5;3088:24;:::i;:::-;3083:3;3076:37;3001:118;;:::o;3125:533::-;3294:4;3332:2;3321:9;3317:18;3309:26;;3345:71;3413:1;3402:9;3398:17;3389:6;3345:71;:::i;:::-;3463:9;3457:4;3453:20;3448:2;3437:9;3433:18;3426:48;3491:78;3564:4;3555:6;3491:78;:::i;:::-;3483:86;;3579:72;3647:2;3636:9;3632:18;3623:6;3579:72;:::i;:::-;3125:533;;;;;;:::o;3664:442::-;3813:4;3851:2;3840:9;3836:18;3828:26;;3864:71;3932:1;3921:9;3917:17;3908:6;3864:71;:::i;:::-;3945:72;4013:2;4002:9;3998:18;3989:6;3945:72;:::i;:::-;4027;4095:2;4084:9;4080:18;4071:6;4027:72;:::i;:::-;3664:442;;;;;;:::o;4112:180::-;4160:77;4157:1;4150:88;4257:4;4254:1;4247:15;4281:4;4278:1;4271:15;4298:112;4378:1;4371:5;4368:12;4358:46;;4384:18;;:::i;:::-;4358:46;4298:112;:::o;4416:125::-;4460:7;4489:5;4478:16;;4495:40;4529:5;4495:40;:::i;:::-;4416:125;;;:::o;4547:::-;4602:9;4635:31;4660:5;4635:31;:::i;:::-;4622:44;;4547:125;;;:::o;4678:141::-;4770:42;4806:5;4770:42;:::i;:::-;4765:3;4758:55;4678:141;;:::o;4825:674::-;5035:4;5073:3;5062:9;5058:19;5050:27;;5087:71;5155:1;5144:9;5140:17;5131:6;5087:71;:::i;:::-;5168:72;5236:2;5225:9;5221:18;5212:6;5168:72;:::i;:::-;5250;5318:2;5307:9;5303:18;5294:6;5250:72;:::i;:::-;5332;5400:2;5389:9;5385:18;5376:6;5332:72;:::i;:::-;5414:78;5487:3;5476:9;5472:19;5463:6;5414:78;:::i;:::-;4825:674;;;;;;;;:::o;5505:224::-;5645:34;5641:1;5633:6;5629:14;5622:58;5714:7;5709:2;5701:6;5697:15;5690:32;5505:224;:::o;5735:366::-;5877:3;5898:67;5962:2;5957:3;5898:67;:::i;:::-;5891:74;;5974:93;6063:3;5974:93;:::i;:::-;6092:2;6087:3;6083:12;6076:19;;5735:366;;;:::o;6107:419::-;6273:4;6311:2;6300:9;6296:18;6288:26;;6360:9;6354:4;6350:20;6346:1;6335:9;6331:17;6324:47;6388:131;6514:4;6388:131;:::i;:::-;6380:139;;6107:419;;;:::o;6532:227::-;6672:34;6668:1;6660:6;6656:14;6649:58;6741:10;6736:2;6728:6;6724:15;6717:35;6532:227;:::o;6765:366::-;6907:3;6928:67;6992:2;6987:3;6928:67;:::i;:::-;6921:74;;7004:93;7093:3;7004:93;:::i;:::-;7122:2;7117:3;7113:12;7106:19;;6765:366;;;:::o;7137:419::-;7303:4;7341:2;7330:9;7326:18;7318:26;;7390:9;7384:4;7380:20;7376:1;7365:9;7361:17;7354:47;7418:131;7544:4;7418:131;:::i;:::-;7410:139;;7137:419;;;:::o;7562:180::-;7610:77;7607:1;7600:88;7707:4;7704:1;7697:15;7731:4;7728:1;7721:15;7748:305;7788:3;7807:20;7825:1;7807:20;:::i;:::-;7802:25;;7841:20;7859:1;7841:20;:::i;:::-;7836:25;;7995:1;7927:66;7923:74;7920:1;7917:81;7914:107;;;8001:18;;:::i;:::-;7914:107;8045:1;8042;8038:9;8031:16;;7748:305;;;;:::o;8059:348::-;8099:7;8122:20;8140:1;8122:20;:::i;:::-;8117:25;;8156:20;8174:1;8156:20;:::i;:::-;8151:25;;8344:1;8276:66;8272:74;8269:1;8266:81;8261:1;8254:9;8247:17;8243:105;8240:131;;;8351:18;;:::i;:::-;8240:131;8399:1;8396;8392:9;8381:20;;8059:348;;;;:::o;8413:180::-;8461:77;8458:1;8451:88;8558:4;8555:1;8548:15;8582:4;8579:1;8572:15;8599:185;8639:1;8656:20;8674:1;8656:20;:::i;:::-;8651:25;;8690:20;8708:1;8690:20;:::i;:::-;8685:25;;8729:1;8719:35;;8734:18;;:::i;:::-;8719:35;8776:1;8773;8769:9;8764:14;;8599:185;;;;:::o;8790:180::-;8838:77;8835:1;8828:88;8935:4;8932:1;8925:15;8959:4;8956:1;8949:15;8976:320;9020:6;9057:1;9051:4;9047:12;9037:22;;9104:1;9098:4;9094:12;9125:18;9115:81;;9181:4;9173:6;9169:17;9159:27;;9115:81;9243:2;9235:6;9232:14;9212:18;9209:38;9206:84;;;9262:18;;:::i;:::-;9206:84;9027:269;8976:320;;;:::o;9302:290::-;9442:34;9438:1;9430:6;9426:14;9419:58;9511:34;9506:2;9498:6;9494:15;9487:59;9580:4;9575:2;9567:6;9563:15;9556:29;9302:290;:::o;9598:366::-;9740:3;9761:67;9825:2;9820:3;9761:67;:::i;:::-;9754:74;;9837:93;9926:3;9837:93;:::i;:::-;9955:2;9950:3;9946:12;9939:19;;9598:366;;;:::o;9970:419::-;10136:4;10174:2;10163:9;10159:18;10151:26;;10223:9;10217:4;10213:20;10209:1;10198:9;10194:17;10187:47;10251:131;10377:4;10251:131;:::i;:::-;10243:139;;9970:419;;;:::o", + "source": "//SPDX-License-Identifier: GPL-3.0\n\npragma solidity >=0.8.0 <0.9.0;\n// >0.8 to avoid use of SafeMath functions\n//But, if you want it...\n//import \"github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol\";\n//using SafeMath for uint; // \n\n/*\nSummary\nETHPool provides a service where people can deposit ETH and they will receive weekly rewards. \nUsers must be able to take out their deposits along with their portion of rewards at any time. \nNew rewards are deposited manually into the pool by the ETHPool team each week using a contract function.\n\nRequirements\nOnly the team can deposit rewards.\nDeposited rewards go to the pool of users, not to individual users.\nUsers should be able to withdraw their deposits along with their share of rewards considering the time when they deposited.\nExample:\n\nLet say we have user A and B and team T.\n\nA deposits 100, and B deposits 300 for a total of 400 in the pool.\nNow A has 25% of the pool and B has 75%. \nWhen T deposits 200 rewards, A should be able to withdraw 150 and B 450.\n\nWhat if the following happens? \nA deposits then T deposits then B deposits then A withdraws and finally B withdraws. \nA should get their deposit + all the rewards. \nB should only get their deposit because rewards were sent to the pool before they participated.\n*/\n\n/* \n How it works?\n First of all, we need to understand that the reward mechanism cannot be automatic. (No FOR or WHILE allowed!)\n So, the stakeholders by themselves need to calculate their own reward (Don't worry, a function will do for us)\n\n Because the staking cannot be negative, we will save the accumulation of rewards proportional to the pool at the time of deposit.\n For each stakeholder, we will save the composition of the pool at the time of staking.\n To calculate the reward, we will substract the sum of rewards at the current time minus the composition of the pool at the time of staking for each user.\n This is the explanation of why cannot be automatic at the time of deposit rewards.\n\n Some assumptions has been taken:\n - Users withdrawn all of the staking and rewards. No partial withdraw allowed (Well, in fact, can be a full withdraw with a new deposit of the diff)\n - Users cannot add funds to their staking (As above, we can consider a full withdraw, and a new staking)\n - Some constants will be multiplied for an arbitrary big constant (10^18), to reduce rounding errors in division.\n - Can be optimized for gas consumption. But for this challenge and for educational purposes, we can take the risk. And testnet is \"free\".\n - Bugs? Everywhere. Not ready for production or resale.\n\n Credits: https://explorer.callisto.network/address/0xE2E4Cf144F4365AAa023da04918A64072C284201/contracts\n (Thanks Erik!)\n*/\n\ncontract ETHpool {\n string public constant name = \"ETHPool\";\n enum State {Running, Paused, Ended } //staking can be done only if it state is running.\n uint constant ROUNDING_CONSTANT = 10^18; //To minimize rounding errors at divisions\n\n struct TeamMember { //there are no specifications for TEAM, so, I understand that can be a lot of people.\n address _addr;\n string _name; //It's not necessary\n uint _role; // 1 for active Team Members\n }\n\n struct Stakeholder {\n uint _currentBalance;\n uint _compositionAtStartStaking;\n uint _timeStaking;\n }\n\n struct Pool {\n uint poolBalance;\n uint lastRewardMultiplied;\n uint rewardsCount;\n uint lastRewardTime;\n State status;\n }\n\n mapping( address => Stakeholder) public UserList;\n mapping( address => TeamMember) public Team;\n Pool public poolStatus;\n\n constructor(){\n Team[msg.sender]._role = 1; // Team member role assigned.\n poolStatus.status = State.Running;\n poolStatus.poolBalance = 0; // Do not transfer at construction time!\n poolStatus.lastRewardMultiplied = 0;\n poolStatus.rewardsCount = 0;\n }\n\n\n // The main functions: Stake() , DepositRewards() , Withdraw()\n\n // DepositRewards: The team can call this function to deposit rewards to the pool.\n // It will update the last reward of the pool, as rewards*ROUNDING_CONSTANT/PoolBalance\n function DepositRewards() public payable onlyTeam returns(uint poolbalance) {\n poolStatus.poolBalance += msg.value;\n poolStatus.lastRewardTime = block.timestamp;\n poolStatus.lastRewardMultiplied += (msg.value * ROUNDING_CONSTANT) / poolStatus.poolBalance;\n poolStatus.rewardsCount += 1;\n return poolStatus.poolBalance;\n }\n \n // Stake: The users can call \"Stake\" to stake some ETH (or your network coin of value)\n // All network users can perform this function, to become \"USERS\"\n // TODO: We need to check if the user already exists, and **need to perform first a withdrawal next to a new deposit**.\n // FIXME: At now, users can only deposit only one time.\n function Stake() public payable {\n require( UserList[msg.sender]._currentBalance == 0, \"Please first perform a withdrawal. We will solve in V2, I promise.\");\n poolStatus.poolBalance += msg.value;\n UserList[msg.sender]._currentBalance = msg.value;\n UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied;\n UserList[msg.sender]._timeStaking = block.timestamp;\n }\n\n // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being.\n // FIXME: At now, only allows full withdrawals.\n function Withdraw() public onlyUsers returns(uint){\n\n return 1;\n }\n\n //Pool Administration functions\n function pausePool() public onlyTeam { //If something went wrong, and we need time to proceed.\n poolStatus.status = State.Paused;\n }\n\n function endPool() public onlyTeam {\n poolStatus.status = State.Ended; //If the pool dies, and only allow users to withdraw.\n }\n\n function resumePool() public onlyTeam {\n poolStatus.status = State.Running; //Everything is up and running.\n }\n\n //Modifiers section\n modifier onlyUsers() {\n require( UserList[msg.sender]._currentBalance > 0 , \"Only stakeholders can use this function.\");\n _;\n }\n\n modifier onlyTeam() {\n require(Team[msg.sender]._role == 1, \"Only the Team can call this function.\");\n _;\n }\n}\n\n\n\n\n// NOTE: This is just a test contract, please delete me\n/*\ncontract Counter {\n uint256 count = 0;\n\n event CountedTo(uint256 number);\n\n function getCount() public view returns (uint256) {\n return count;\n }\n\n function countUp() public returns (uint256) {\n console.log(\"countUp: count =\", count);\n uint256 newCount = count + 1;\n require(newCount > count, \"Uint256 overflow\");\n count = newCount;\n emit CountedTo(count);\n return count;\n }\n\n function countDown() public returns (uint256) {\n console.log(\"countDown: count =\", count);\n uint256 newCount = count - 1;\n require(newCount < count, \"Uint256 underflow\");\n count = newCount;\n emit CountedTo(count);\n return count;\n }\n}\n*/", + "sourcePath": "T:\\Desarrollos\\Experimentos\\Exactly\\exactly-private\\contracts\\ETHpool.sol", + "ast": { + "absolutePath": "project:/contracts/ETHpool.sol", + "exportedSymbols": { + "ETHpool": [ + 262 + ] + }, + "id": 263, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "36:31:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ETHpool", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 262, + "linearizedBaseContracts": [ + 262 + ], + "name": "ETHpool", + "nameLocation": "2782:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "06fdde03", + "id": 4, + "mutability": "constant", + "name": "name", + "nameLocation": "2819:4:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2796:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2796:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "455448506f6f6c", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2826:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b2b106900d554104599e0c086554bf83e27f672439251b0e995ef2d49c22fe9c", + "typeString": "literal_string \"ETHPool\"" + }, + "value": "ETHPool" + }, + "visibility": "public" + }, + { + "canonicalName": "ETHpool.State", + "id": 8, + "members": [ + { + "id": 5, + "name": "Running", + "nameLocation": "2853:7:0", + "nodeType": "EnumValue", + "src": "2853:7:0" + }, + { + "id": 6, + "name": "Paused", + "nameLocation": "2862:6:0", + "nodeType": "EnumValue", + "src": "2862:6:0" + }, + { + "id": 7, + "name": "Ended", + "nameLocation": "2870:5:0", + "nodeType": "EnumValue", + "src": "2870:5:0" + } + ], + "name": "State", + "nameLocation": "2846:5:0", + "nodeType": "EnumDefinition", + "src": "2841:36:0" + }, + { + "constant": true, + "id": 13, + "mutability": "constant", + "name": "ROUNDING_CONSTANT", + "nameLocation": "2947:17:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2933:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2933:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2967:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "3138", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2970:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "2967:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + } + }, + "visibility": "internal" + }, + { + "canonicalName": "ETHpool.TeamMember", + "id": 20, + "members": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "_addr", + "nameLocation": "3144:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3136:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3136:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "_name", + "nameLocation": "3166:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3159:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3159:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "_role", + "nameLocation": "3207:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3202:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "TeamMember", + "nameLocation": "3029:10:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3022:226:0", + "visibility": "public" + }, + { + "canonicalName": "ETHpool.Stakeholder", + "id": 27, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "_currentBalance", + "nameLocation": "3288:15:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3283:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3283:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "_compositionAtStartStaking", + "nameLocation": "3318:26:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3313:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3313:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "_timeStaking", + "nameLocation": "3359:12:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3354:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3354:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Stakeholder", + "nameLocation": "3261:11:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3254:124:0", + "visibility": "public" + }, + { + "canonicalName": "ETHpool.Pool", + "id": 39, + "members": [ + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "poolBalance", + "nameLocation": "3411:11:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3406:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 28, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3406:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "lastRewardMultiplied", + "nameLocation": "3437:20:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3432:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3432:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "rewardsCount", + "nameLocation": "3472:12:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3467:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3467:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "lastRewardTime", + "nameLocation": "3499:14:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3494:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3494:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "status", + "nameLocation": "3529:6:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3523:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + }, + "typeName": { + "id": 37, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36, + "name": "State", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8, + "src": "3523:5:0" + }, + "referencedDeclaration": 8, + "src": "3523:5:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "visibility": "internal" + } + ], + "name": "Pool", + "nameLocation": "3391:4:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3384:158:0", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "eb63a59e", + "id": 44, + "mutability": "mutable", + "name": "UserList", + "nameLocation": "3588:8:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3548:48:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "typeName": { + "id": 43, + "keyType": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3557:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3548:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "valueType": { + "id": 42, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41, + "name": "Stakeholder", + "nodeType": "IdentifierPath", + "referencedDeclaration": 27, + "src": "3568:11:0" + }, + "referencedDeclaration": 27, + "src": "3568:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage_ptr", + "typeString": "struct ETHpool.Stakeholder" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d515b1ce", + "id": 49, + "mutability": "mutable", + "name": "Team", + "nameLocation": "3641:4:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3602:43:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" + }, + "typeName": { + "id": 48, + "keyType": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3611:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3602:31:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" + }, + "valueType": { + "id": 47, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 46, + "name": "TeamMember", + "nodeType": "IdentifierPath", + "referencedDeclaration": 20, + "src": "3622:10:0" + }, + "referencedDeclaration": 20, + "src": "3622:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage_ptr", + "typeString": "struct ETHpool.TeamMember" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f0228692", + "id": 52, + "mutability": "mutable", + "name": "poolStatus", + "nameLocation": "3663:10:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3651:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool" + }, + "typeName": { + "id": 51, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50, + "name": "Pool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 39, + "src": "3651:4:0" + }, + "referencedDeclaration": 39, + "src": "3651:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage_ptr", + "typeString": "struct ETHpool.Pool" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 88, + "nodeType": "Block", + "src": "3693:275:0", + "statements": [ + { + "expression": { + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 55, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } + }, + "id": 58, + "indexExpression": { + "expression": { + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "3708:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3708:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3703:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage", + "typeString": "struct ETHpool.TeamMember storage ref" + } + }, + "id": 59, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 19, + "src": "3703:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3728:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3703:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 62, + "nodeType": "ExpressionStatement", + "src": "3703:26:0" + }, + { + "expression": { + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 63, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3769:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 65, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "3769:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 66, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3789:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Running", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "3789:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "3769:33:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 69, + "nodeType": "ExpressionStatement", + "src": "3769:33:0" + }, + { + "expression": { + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 70, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3812:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 72, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "3812:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3837:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3812:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 75, + "nodeType": "ExpressionStatement", + "src": "3812:26:0" + }, + { + "expression": { + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 76, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3889:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 78, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "3889:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3923:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3889:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 81, + "nodeType": "ExpressionStatement", + "src": "3889:35:0" + }, + { + "expression": { + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 82, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3934:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 84, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "3934:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3960:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "3934:27:0" + } + ] + }, + "id": 89, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "3691:2:0" + }, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "3693:0:0" + }, + "scope": 262, + "src": "3680:288:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 132, + "nodeType": "Block", + "src": "4298:283:0", + "statements": [ + { + "expression": { + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 96, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 98, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4308:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 99, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4334:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4334:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4308:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 102, + "nodeType": "ExpressionStatement", + "src": "4308:35:0" + }, + { + "expression": { + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 103, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4353:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 35, + "src": "4353:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 106, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "4381:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4381:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4353:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 109, + "nodeType": "ExpressionStatement", + "src": "4353:43:0" + }, + { + "expression": { + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 110, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4406:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "4406:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4442:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4442:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 115, + "name": "ROUNDING_CONSTANT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "4454:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4442:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 117, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4441:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 118, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4475:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4441:56:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4406:91:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "4406:91:0" + }, + { + "expression": { + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 123, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4507:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 125, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "4507:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4534:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4507:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "4507:28:0" + }, + { + "expression": { + "expression": { + "id": 129, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4552:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4552:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 95, + "id": 131, + "nodeType": "Return", + "src": "4545:29:0" + } + ] + }, + "functionSelector": "b9ba5f8b", + "id": 133, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 92, + "kind": "modifierInvocation", + "modifierName": { + "id": 91, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "4263:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "4263:8:0" + } + ], + "name": "DepositRewards", + "nameLocation": "4231:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "4245:2:0" + }, + "returnParameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "poolbalance", + "nameLocation": "4285:11:0", + "nodeType": "VariableDeclaration", + "scope": 133, + "src": "4280:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 93, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4280:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4279:18:0" + }, + "scope": 262, + "src": "4222:359:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 181, + "nodeType": "Block", + "src": "4968:393:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 137, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "4987:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 140, + "indexExpression": { + "expression": { + "id": 138, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4996:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4996:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4987:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 141, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "4987:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5027:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4987:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "506c6561736520666972737420706572666f726d2061207769746864726177616c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973652e", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5030:68:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" + }, + "value": "Please first perform a withdrawal. We will solve in V2, I promise." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" + } + ], + "id": 136, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "4978:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4978:121:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "ExpressionStatement", + "src": "4978:121:0" + }, + { + "expression": { + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 147, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5109:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 149, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "5109:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 150, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5135:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5135:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5109:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "5109:35:0" + }, + { + "expression": { + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 154, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5154:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 157, + "indexExpression": { + "expression": { + "id": 155, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5163:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5163:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5154:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "5154:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5193:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5193:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5154:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 162, + "nodeType": "ExpressionStatement", + "src": "5154:48:0" + }, + { + "expression": { + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 163, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5212:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 166, + "indexExpression": { + "expression": { + "id": 164, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5221:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5221:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5212:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 167, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_compositionAtStartStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "5212:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 168, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5262:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "5262:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5212:81:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 171, + "nodeType": "ExpressionStatement", + "src": "5212:81:0" + }, + { + "expression": { + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 172, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5303:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 175, + "indexExpression": { + "expression": { + "id": 173, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5312:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5312:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5303:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 176, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_timeStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 26, + "src": "5303:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 177, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "5339:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "5339:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5303:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 180, + "nodeType": "ExpressionStatement", + "src": "5303:51:0" + } + ] + }, + "functionSelector": "de20bc92", + "id": 182, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "Stake", + "nameLocation": "4945:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [], + "src": "4950:2:0" + }, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [], + "src": "4968:0:0" + }, + "scope": 262, + "src": "4936:425:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 191, + "nodeType": "Block", + "src": "5570:26:0", + "statements": [ + { + "expression": { + "hexValue": "31", + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5588:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 188, + "id": 190, + "nodeType": "Return", + "src": "5581:8:0" + } + ] + }, + "functionSelector": "57ea89b6", + "id": 192, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 185, + "kind": "modifierInvocation", + "modifierName": { + "id": 184, + "name": "onlyUsers", + "nodeType": "IdentifierPath", + "referencedDeclaration": 246, + "src": "5547:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "5547:9:0" + } + ], + "name": "Withdraw", + "nameLocation": "5529:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5537:2:0" + }, + "returnParameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 192, + "src": "5565:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5565:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5564:6:0" + }, + "scope": 262, + "src": "5520:76:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 204, + "nodeType": "Block", + "src": "5675:105:0", + "statements": [ + { + "expression": { + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 197, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5741:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5741:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 200, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5761:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 6, + "src": "5761:12:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5741:32:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 203, + "nodeType": "ExpressionStatement", + "src": "5741:32:0" + } + ] + }, + "functionSelector": "aa09d5b7", + "id": 205, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 195, + "kind": "modifierInvocation", + "modifierName": { + "id": 194, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5666:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5666:8:0" + } + ], + "name": "pausePool", + "nameLocation": "5647:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "5656:2:0" + }, + "returnParameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [], + "src": "5675:0:0" + }, + "scope": 262, + "src": "5638:142:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "5821:102:0", + "statements": [ + { + "expression": { + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 210, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5831:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 212, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5831:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 213, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5851:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Ended", + "nodeType": "MemberAccess", + "referencedDeclaration": 7, + "src": "5851:11:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5831:31:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 216, + "nodeType": "ExpressionStatement", + "src": "5831:31:0" + } + ] + }, + "functionSelector": "2d42cf7d", + "id": 218, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 208, + "kind": "modifierInvocation", + "modifierName": { + "id": 207, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5812:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5812:8:0" + } + ], + "name": "endPool", + "nameLocation": "5795:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 206, + "nodeType": "ParameterList", + "parameters": [], + "src": "5802:2:0" + }, + "returnParameters": { + "id": 209, + "nodeType": "ParameterList", + "parameters": [], + "src": "5821:0:0" + }, + "scope": 262, + "src": "5786:137:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 230, + "nodeType": "Block", + "src": "5967:82:0", + "statements": [ + { + "expression": { + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 223, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 225, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5977:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 226, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5997:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Running", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "5997:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5977:33:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "5977:33:0" + } + ] + }, + "functionSelector": "11ec106b", + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 221, + "kind": "modifierInvocation", + "modifierName": { + "id": 220, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5958:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5958:8:0" + } + ], + "name": "resumePool", + "nameLocation": "5938:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [], + "src": "5948:2:0" + }, + "returnParameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [], + "src": "5967:0:0" + }, + "scope": 262, + "src": "5929:120:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 245, + "nodeType": "Block", + "src": "6100:123:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 234, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "6119:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 237, + "indexExpression": { + "expression": { + "id": 235, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6128:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6128:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6119:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 238, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "6119:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6158:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6119:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066756e6374696f6e2e", + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6162:42:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "typeString": "literal_string \"Only stakeholders can use this function.\"" + }, + "value": "Only stakeholders can use this function." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "typeString": "literal_string \"Only stakeholders can use this function.\"" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6110:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6110:95:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 243, + "nodeType": "ExpressionStatement", + "src": "6110:95:0" + }, + { + "id": 244, + "nodeType": "PlaceholderStatement", + "src": "6215:1:0" + } + ] + }, + "id": 246, + "name": "onlyUsers", + "nameLocation": "6088:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 232, + "nodeType": "ParameterList", + "parameters": [], + "src": "6097:2:0" + }, + "src": "6079:144:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 260, + "nodeType": "Block", + "src": "6249:105:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 249, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "6267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } + }, + "id": 252, + "indexExpression": { + "expression": { + "id": 250, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6272:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6272:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6267:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage", + "typeString": "struct ETHpool.TeamMember storage ref" + } + }, + "id": 253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 19, + "src": "6267:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6293:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6267:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6374696f6e2e", + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6296:39:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "typeString": "literal_string \"Only the Team can call this function.\"" + }, + "value": "Only the Team can call this function." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "typeString": "literal_string \"Only the Team can call this function.\"" + } + ], + "id": 248, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6259:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6259:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 258, + "nodeType": "ExpressionStatement", + "src": "6259:77:0" + }, + { + "id": 259, + "nodeType": "PlaceholderStatement", + "src": "6346:1:0" + } + ] + }, + "id": 261, + "name": "onlyTeam", + "nameLocation": "6238:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [], + "src": "6246:2:0" + }, + "src": "6229:125:0", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 263, + "src": "2773:3583:0", + "usedErrors": [] + } + ], + "src": "36:7112:0" + }, + "legacyAST": { + "absolutePath": "project:/contracts/ETHpool.sol", + "exportedSymbols": { + "ETHpool": [ + 262 + ] + }, + "id": 263, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "36:31:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ETHpool", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 262, + "linearizedBaseContracts": [ + 262 + ], + "name": "ETHpool", + "nameLocation": "2782:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "06fdde03", + "id": 4, + "mutability": "constant", + "name": "name", + "nameLocation": "2819:4:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2796:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2796:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "455448506f6f6c", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2826:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b2b106900d554104599e0c086554bf83e27f672439251b0e995ef2d49c22fe9c", + "typeString": "literal_string \"ETHPool\"" + }, + "value": "ETHPool" + }, + "visibility": "public" + }, + { + "canonicalName": "ETHpool.State", + "id": 8, + "members": [ + { + "id": 5, + "name": "Running", + "nameLocation": "2853:7:0", + "nodeType": "EnumValue", + "src": "2853:7:0" + }, + { + "id": 6, + "name": "Paused", + "nameLocation": "2862:6:0", + "nodeType": "EnumValue", + "src": "2862:6:0" + }, + { + "id": 7, + "name": "Ended", + "nameLocation": "2870:5:0", + "nodeType": "EnumValue", + "src": "2870:5:0" + } + ], + "name": "State", + "nameLocation": "2846:5:0", + "nodeType": "EnumDefinition", + "src": "2841:36:0" + }, + { + "constant": true, + "id": 13, + "mutability": "constant", + "name": "ROUNDING_CONSTANT", + "nameLocation": "2947:17:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2933:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2933:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2967:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "3138", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2970:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "2967:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + } + }, + "visibility": "internal" + }, + { + "canonicalName": "ETHpool.TeamMember", + "id": 20, + "members": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "_addr", + "nameLocation": "3144:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3136:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3136:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "_name", + "nameLocation": "3166:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3159:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3159:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "_role", + "nameLocation": "3207:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "3202:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "TeamMember", + "nameLocation": "3029:10:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3022:226:0", + "visibility": "public" + }, + { + "canonicalName": "ETHpool.Stakeholder", + "id": 27, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "_currentBalance", + "nameLocation": "3288:15:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3283:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3283:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "_compositionAtStartStaking", + "nameLocation": "3318:26:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3313:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3313:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "_timeStaking", + "nameLocation": "3359:12:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "3354:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3354:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Stakeholder", + "nameLocation": "3261:11:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3254:124:0", + "visibility": "public" + }, + { + "canonicalName": "ETHpool.Pool", + "id": 39, + "members": [ + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "poolBalance", + "nameLocation": "3411:11:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3406:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 28, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3406:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "lastRewardMultiplied", + "nameLocation": "3437:20:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3432:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3432:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "rewardsCount", + "nameLocation": "3472:12:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3467:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3467:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "lastRewardTime", + "nameLocation": "3499:14:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3494:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3494:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "status", + "nameLocation": "3529:6:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "3523:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + }, + "typeName": { + "id": 37, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36, + "name": "State", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8, + "src": "3523:5:0" + }, + "referencedDeclaration": 8, + "src": "3523:5:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "visibility": "internal" + } + ], + "name": "Pool", + "nameLocation": "3391:4:0", + "nodeType": "StructDefinition", + "scope": 262, + "src": "3384:158:0", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "eb63a59e", + "id": 44, + "mutability": "mutable", + "name": "UserList", + "nameLocation": "3588:8:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3548:48:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "typeName": { + "id": 43, + "keyType": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3557:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3548:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "valueType": { + "id": 42, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41, + "name": "Stakeholder", + "nodeType": "IdentifierPath", + "referencedDeclaration": 27, + "src": "3568:11:0" + }, + "referencedDeclaration": 27, + "src": "3568:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage_ptr", + "typeString": "struct ETHpool.Stakeholder" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d515b1ce", + "id": 49, + "mutability": "mutable", + "name": "Team", + "nameLocation": "3641:4:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3602:43:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" + }, + "typeName": { + "id": 48, + "keyType": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3611:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3602:31:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" + }, + "valueType": { + "id": 47, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 46, + "name": "TeamMember", + "nodeType": "IdentifierPath", + "referencedDeclaration": 20, + "src": "3622:10:0" + }, + "referencedDeclaration": 20, + "src": "3622:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage_ptr", + "typeString": "struct ETHpool.TeamMember" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f0228692", + "id": 52, + "mutability": "mutable", + "name": "poolStatus", + "nameLocation": "3663:10:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3651:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool" + }, + "typeName": { + "id": 51, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50, + "name": "Pool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 39, + "src": "3651:4:0" + }, + "referencedDeclaration": 39, + "src": "3651:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage_ptr", + "typeString": "struct ETHpool.Pool" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 88, + "nodeType": "Block", + "src": "3693:275:0", + "statements": [ + { + "expression": { + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 55, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } + }, + "id": 58, + "indexExpression": { + "expression": { + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "3708:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3708:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3703:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage", + "typeString": "struct ETHpool.TeamMember storage ref" + } + }, + "id": 59, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 19, + "src": "3703:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3728:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3703:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 62, + "nodeType": "ExpressionStatement", + "src": "3703:26:0" + }, + { + "expression": { + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 63, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3769:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 65, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "3769:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 66, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3789:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Running", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "3789:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "3769:33:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 69, + "nodeType": "ExpressionStatement", + "src": "3769:33:0" + }, + { + "expression": { + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 70, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3812:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 72, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "3812:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3837:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3812:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 75, + "nodeType": "ExpressionStatement", + "src": "3812:26:0" + }, + { + "expression": { + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 76, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3889:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 78, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "3889:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3923:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3889:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 81, + "nodeType": "ExpressionStatement", + "src": "3889:35:0" + }, + { + "expression": { + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 82, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "3934:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 84, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "3934:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3960:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "3934:27:0" + } + ] + }, + "id": 89, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "3691:2:0" + }, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [], + "src": "3693:0:0" + }, + "scope": 262, + "src": "3680:288:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 132, + "nodeType": "Block", + "src": "4298:283:0", + "statements": [ + { + "expression": { + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 96, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 98, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4308:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 99, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4334:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4334:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4308:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 102, + "nodeType": "ExpressionStatement", + "src": "4308:35:0" + }, + { + "expression": { + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 103, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4353:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 35, + "src": "4353:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 106, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "4381:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4381:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4353:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 109, + "nodeType": "ExpressionStatement", + "src": "4353:43:0" + }, + { + "expression": { + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 110, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4406:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "4406:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4442:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4442:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 115, + "name": "ROUNDING_CONSTANT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "4454:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4442:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 117, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4441:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 118, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4475:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4441:56:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4406:91:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "4406:91:0" + }, + { + "expression": { + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 123, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4507:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 125, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "4507:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4534:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4507:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "4507:28:0" + }, + { + "expression": { + "expression": { + "id": 129, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "4552:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4552:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 95, + "id": 131, + "nodeType": "Return", + "src": "4545:29:0" + } + ] + }, + "functionSelector": "b9ba5f8b", + "id": 133, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 92, + "kind": "modifierInvocation", + "modifierName": { + "id": 91, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "4263:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "4263:8:0" + } + ], + "name": "DepositRewards", + "nameLocation": "4231:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "4245:2:0" + }, + "returnParameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "poolbalance", + "nameLocation": "4285:11:0", + "nodeType": "VariableDeclaration", + "scope": 133, + "src": "4280:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 93, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4280:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4279:18:0" + }, + "scope": 262, + "src": "4222:359:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 181, + "nodeType": "Block", + "src": "4968:393:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 137, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "4987:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 140, + "indexExpression": { + "expression": { + "id": 138, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4996:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4996:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4987:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 141, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "4987:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5027:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4987:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "506c6561736520666972737420706572666f726d2061207769746864726177616c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973652e", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5030:68:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" + }, + "value": "Please first perform a withdrawal. We will solve in V2, I promise." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" + } + ], + "id": 136, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "4978:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4978:121:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "ExpressionStatement", + "src": "4978:121:0" + }, + { + "expression": { + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 147, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5109:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 149, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "5109:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 150, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5135:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5135:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5109:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "5109:35:0" + }, + { + "expression": { + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 154, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5154:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 157, + "indexExpression": { + "expression": { + "id": 155, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5163:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5163:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5154:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "5154:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5193:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5193:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5154:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 162, + "nodeType": "ExpressionStatement", + "src": "5154:48:0" + }, + { + "expression": { + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 163, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5212:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 166, + "indexExpression": { + "expression": { + "id": 164, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5221:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5221:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5212:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 167, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_compositionAtStartStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "5212:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 168, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5262:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "5262:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5212:81:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 171, + "nodeType": "ExpressionStatement", + "src": "5212:81:0" + }, + { + "expression": { + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 172, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5303:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 175, + "indexExpression": { + "expression": { + "id": 173, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5312:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5312:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5303:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 176, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_timeStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 26, + "src": "5303:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 177, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "5339:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "5339:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5303:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 180, + "nodeType": "ExpressionStatement", + "src": "5303:51:0" + } + ] + }, + "functionSelector": "de20bc92", + "id": 182, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "Stake", + "nameLocation": "4945:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [], + "src": "4950:2:0" + }, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [], + "src": "4968:0:0" + }, + "scope": 262, + "src": "4936:425:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 191, + "nodeType": "Block", + "src": "5570:26:0", + "statements": [ + { + "expression": { + "hexValue": "31", + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5588:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 188, + "id": 190, + "nodeType": "Return", + "src": "5581:8:0" + } + ] + }, + "functionSelector": "57ea89b6", + "id": 192, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 185, + "kind": "modifierInvocation", + "modifierName": { + "id": 184, + "name": "onlyUsers", + "nodeType": "IdentifierPath", + "referencedDeclaration": 246, + "src": "5547:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "5547:9:0" + } + ], + "name": "Withdraw", + "nameLocation": "5529:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5537:2:0" + }, + "returnParameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 192, + "src": "5565:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5565:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5564:6:0" + }, + "scope": 262, + "src": "5520:76:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 204, + "nodeType": "Block", + "src": "5675:105:0", + "statements": [ + { + "expression": { + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 197, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5741:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5741:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 200, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5761:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 6, + "src": "5761:12:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5741:32:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 203, + "nodeType": "ExpressionStatement", + "src": "5741:32:0" + } + ] + }, + "functionSelector": "aa09d5b7", + "id": 205, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 195, + "kind": "modifierInvocation", + "modifierName": { + "id": 194, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5666:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5666:8:0" + } + ], + "name": "pausePool", + "nameLocation": "5647:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "5656:2:0" + }, + "returnParameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [], + "src": "5675:0:0" + }, + "scope": 262, + "src": "5638:142:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "5821:102:0", + "statements": [ + { + "expression": { + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 210, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5831:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 212, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5831:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 213, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5851:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Ended", + "nodeType": "MemberAccess", + "referencedDeclaration": 7, + "src": "5851:11:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5831:31:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 216, + "nodeType": "ExpressionStatement", + "src": "5831:31:0" + } + ] + }, + "functionSelector": "2d42cf7d", + "id": 218, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 208, + "kind": "modifierInvocation", + "modifierName": { + "id": 207, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5812:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5812:8:0" + } + ], + "name": "endPool", + "nameLocation": "5795:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 206, + "nodeType": "ParameterList", + "parameters": [], + "src": "5802:2:0" + }, + "returnParameters": { + "id": 209, + "nodeType": "ParameterList", + "parameters": [], + "src": "5821:0:0" + }, + "scope": 262, + "src": "5786:137:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 230, + "nodeType": "Block", + "src": "5967:82:0", + "statements": [ + { + "expression": { + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 223, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "5977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 225, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "5977:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 226, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "5997:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Running", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "5997:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "5977:33:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "5977:33:0" + } + ] + }, + "functionSelector": "11ec106b", + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 221, + "kind": "modifierInvocation", + "modifierName": { + "id": 220, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 261, + "src": "5958:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5958:8:0" + } + ], + "name": "resumePool", + "nameLocation": "5938:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [], + "src": "5948:2:0" + }, + "returnParameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [], + "src": "5967:0:0" + }, + "scope": 262, + "src": "5929:120:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 245, + "nodeType": "Block", + "src": "6100:123:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 234, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "6119:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 237, + "indexExpression": { + "expression": { + "id": 235, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6128:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6128:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6119:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 238, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "6119:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6158:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6119:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066756e6374696f6e2e", + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6162:42:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "typeString": "literal_string \"Only stakeholders can use this function.\"" + }, + "value": "Only stakeholders can use this function." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", + "typeString": "literal_string \"Only stakeholders can use this function.\"" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6110:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6110:95:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 243, + "nodeType": "ExpressionStatement", + "src": "6110:95:0" + }, + { + "id": 244, + "nodeType": "PlaceholderStatement", + "src": "6215:1:0" + } + ] + }, + "id": 246, + "name": "onlyUsers", + "nameLocation": "6088:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 232, + "nodeType": "ParameterList", + "parameters": [], + "src": "6097:2:0" + }, + "src": "6079:144:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 260, + "nodeType": "Block", + "src": "6249:105:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 249, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "6267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } + }, + "id": 252, + "indexExpression": { + "expression": { + "id": 250, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6272:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6272:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6267:16:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$20_storage", + "typeString": "struct ETHpool.TeamMember storage ref" + } + }, + "id": 253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 19, + "src": "6267:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6293:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6267:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6374696f6e2e", + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6296:39:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "typeString": "literal_string \"Only the Team can call this function.\"" + }, + "value": "Only the Team can call this function." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", + "typeString": "literal_string \"Only the Team can call this function.\"" + } + ], + "id": 248, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6259:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6259:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 258, + "nodeType": "ExpressionStatement", + "src": "6259:77:0" + }, + { + "id": 259, + "nodeType": "PlaceholderStatement", + "src": "6346:1:0" + } + ] + }, + "id": 261, + "name": "onlyTeam", + "nameLocation": "6238:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [], + "src": "6246:2:0" + }, + "src": "6229:125:0", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 263, + "src": "2773:3583:0", + "usedErrors": [] + } + ], + "src": "36:7112:0" + }, + "compiler": { + "name": "solc", + "version": "0.8.11+commit.d7f03943.Emscripten.clang" + }, + "networks": { + "5777": { + "events": {}, + "links": {}, + "address": "0x03fd716EC2B75489849FBf4E689C648DDD32e495", + "transactionHash": "0x69bfd59ebaec9ae5c2c11b5b9b167536d9027d22c7898d173bbe1fc4d6d9f3de" + } + }, + "schemaVersion": "3.4.4", + "updatedAt": "2022-02-13T21:51:47.661Z", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json new file mode 100644 index 00000000..a17d4c89 --- /dev/null +++ b/build/contracts/Migrations.json @@ -0,0 +1,2328 @@ +{ + "contractName": "Migrations", + "abi": [ + { + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/Migrations.sol\":{\"keccak256\":\"0x7eaedbb1a3e4e0f585d9063393872f88ded247ca3c3c3c8492ea18e7629a6411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3eb571cee910095df65a06a1c1d3f89187c72a3c184ef87a7538d9aa39ad07\",\"dweb:/ipfs/QmdqR3vrSSGR49qFGZr49Mb39z7dgD6tSzEDoaqtM31o61\"]}},\"version\":1}", + "bytecode": "0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b50610327806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea2646970667358221220353cb1298ecaaf65fe00ddfd9e11ec1e26a6b97a78dc65de1604cb8b8a399ab364736f6c634300080b0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea2646970667358221220353cb1298ecaaf65fe00ddfd9e11ec1e26a6b97a78dc65de1604cb8b8a399ab364736f6c634300080b0033", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:3176:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:32:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:2", + "type": "" + } + ], + "src": "7:77:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "155:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "172:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "195:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "177:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "177:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "165:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "165:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "165:37:2" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "143:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "150:3:2", + "type": "" + } + ], + "src": "90:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "312:124:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "322:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "334:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "345:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "330:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "330:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "322:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "402:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "415:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "426:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "411:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "411:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "358:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "358:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "358:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "284:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "296:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "307:4:2", + "type": "" + } + ], + "src": "214:222:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "487:81:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "497:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "512:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "519:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "508:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "508:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "497:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "469:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "479:7:2", + "type": "" + } + ], + "src": "442:126:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "619:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "629:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "658:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "640:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "640:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "629:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "601:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "611:7:2", + "type": "" + } + ], + "src": "574:96:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "741:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "758:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "781:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "763:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "763:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "751:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "751:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "751:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "729:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "736:3:2", + "type": "" + } + ], + "src": "676:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "898:124:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "908:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "920:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "931:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "916:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "916:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "908:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "988:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1001:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1012:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "997:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "997:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "944:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "944:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "944:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "870:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "882:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "893:4:2", + "type": "" + } + ], + "src": "800:222:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1068:35:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1078:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1094:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1088:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "1088:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1078:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1061:6:2", + "type": "" + } + ], + "src": "1028:75:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1198:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1215:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1208:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1208:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1208:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "1109:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1321:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1338:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1341:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1331:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1331:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1331:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "1232:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1398:79:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1455:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1464:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1467:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1457:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1457:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1457:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1421:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1446:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1428:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1428:24:2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1418:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "1418:35:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1411:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1411:43:2" + }, + "nodeType": "YulIf", + "src": "1408:63:2" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1391:5:2", + "type": "" + } + ], + "src": "1355:122:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1535:87:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1545:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1567:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1554:12:2" + }, + "nodeType": "YulFunctionCall", + "src": "1554:20:2" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1545:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1610:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "1583:26:2" + }, + "nodeType": "YulFunctionCall", + "src": "1583:33:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1583:33:2" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1513:6:2", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1521:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1529:5:2", + "type": "" + } + ], + "src": "1483:139:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1694:263:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1740:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1742:77:2" + }, + "nodeType": "YulFunctionCall", + "src": "1742:79:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1742:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1715:7:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1724:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1711:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1711:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1736:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1707:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1707:32:2" + }, + "nodeType": "YulIf", + "src": "1704:119:2" + }, + { + "nodeType": "YulBlock", + "src": "1833:117:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1848:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1862:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1852:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1877:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1912:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1923:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1908:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1908:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1932:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1887:20:2" + }, + "nodeType": "YulFunctionCall", + "src": "1887:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1877:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1664:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1675:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1687:6:2", + "type": "" + } + ], + "src": "1628:329:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2059:73:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2076:3:2" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2081:6:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2069:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2069:19:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2069:19:2" + }, + { + "nodeType": "YulAssignment", + "src": "2097:29:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2116:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2121:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2112:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2112:14:2" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "2097:11:2" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2031:3:2", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2036:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "2047:11:2", + "type": "" + } + ], + "src": "1963:169:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2244:132:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2266:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2274:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2262:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2262:14:2" + }, + { + "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2278:34:2", + "type": "", + "value": "This function is restricted to t" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2255:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2255:58:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2255:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2334:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2342:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2330:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2330:15:2" + }, + { + "hexValue": "686520636f6e74726163742773206f776e6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2347:21:2", + "type": "", + "value": "he contract's owner" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2323:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2323:46:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2323:46:2" + } + ] + }, + "name": "store_literal_in_memory_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2236:6:2", + "type": "" + } + ], + "src": "2138:238:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2528:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2538:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2604:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2609:2:2", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2545:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "2545:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2538:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2710:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "nodeType": "YulIdentifier", + "src": "2621:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "2621:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2621:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "2723:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2734:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2739:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2730:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2730:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2723:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2516:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2524:3:2", + "type": "" + } + ], + "src": "2382:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2925:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2935:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2947:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2958:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2943:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2943:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2935:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2982:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2993:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2978:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2978:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3001:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3007:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2997:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2997:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2971:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2971:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2971:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "3027:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3161:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3035:124:2" + }, + "nodeType": "YulFunctionCall", + "src": "3035:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3027:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2905:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2920:4:2", + "type": "" + } + ], + "src": "2754:419:2" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1(memPtr) {\n\n mstore(add(memPtr, 0), \"This function is restricted to t\")\n\n mstore(add(memPtr, 32), \"he contract's owner\")\n\n }\n\n function abi_encode_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 51)\n store_literal_in_memory_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "66:352:1:-:0;;;113:10;90:33;;;;;;;;;;;;;;;;;;;;66:352;;;;;;;;;;;;;;;;", + "deployedSourceMap": "66:352:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;127:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;90:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;313:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;127:36;;;;:::o;90:33::-;;;;;;;;;;;;:::o;313:103::-;225:5;;;;;;;;;;211:19;;:10;:19;;;196:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;402:9:::1;375:24;:36;;;;313:103:::0;:::o;7:77:2:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1109:117::-;1218:1;1215;1208:12;1355:122;1428:24;1446:5;1428:24;:::i;:::-;1421:5;1418:35;1408:63;;1467:1;1464;1457:12;1408:63;1355:122;:::o;1483:139::-;1529:5;1567:6;1554:20;1545:29;;1583:33;1610:5;1583:33;:::i;:::-;1483:139;;;;:::o;1628:329::-;1687:6;1736:2;1724:9;1715:7;1711:23;1707:32;1704:119;;;1742:79;;:::i;:::-;1704:119;1862:1;1887:53;1932:7;1923:6;1912:9;1908:22;1887:53;:::i;:::-;1877:63;;1833:117;1628:329;;;;:::o;1963:169::-;2047:11;2081:6;2076:3;2069:19;2121:4;2116:3;2112:14;2097:29;;1963:169;;;;:::o;2138:238::-;2278:34;2274:1;2266:6;2262:14;2255:58;2347:21;2342:2;2334:6;2330:15;2323:46;2138:238;:::o;2382:366::-;2524:3;2545:67;2609:2;2604:3;2545:67;:::i;:::-;2538:74;;2621:93;2710:3;2621:93;:::i;:::-;2739:2;2734:3;2730:12;2723:19;;2382:366;;;:::o;2754:419::-;2920:4;2958:2;2947:9;2943:18;2935:26;;3007:9;3001:4;2997:20;2993:1;2982:9;2978:17;2971:47;3035:131;3161:4;3035:131;:::i;:::-;3027:139;;2754:419;;;:::o", + "source": "// SPDX-License-Identifier: MIT\npragma solidity >=0.4.22 <0.9.0;\n\ncontract Migrations {\n address public owner = msg.sender;\n uint public last_completed_migration;\n\n modifier restricted() {\n require(\n msg.sender == owner,\n \"This function is restricted to the contract's owner\"\n );\n _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n}\n", + "sourcePath": "T:\\Desarrollos\\Experimentos\\Exactly\\exactly-private\\contracts\\Migrations.sol", + "ast": { + "absolutePath": "project:/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 295 + ] + }, + "id": 296, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 264, + "literals": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Migrations", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 295, + "linearizedBaseContracts": [ + 295 + ], + "name": "Migrations", + "nameLocation": "75:10:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8da5cb5b", + "id": 268, + "mutability": "mutable", + "name": "owner", + "nameLocation": "105:5:1", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "90:33:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "expression": { + "id": 266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "113:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "113:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "445df0ac", + "id": 270, + "mutability": "mutable", + "name": "last_completed_migration", + "nameLocation": "139:24:1", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "127:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 269, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "127:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "190:119:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "211:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "211:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 275, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "225:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "211:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "238:53:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "typeString": "literal_string \"This function is restricted to the contract's owner\"" + }, + "value": "This function is restricted to the contract's owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "typeString": "literal_string \"This function is restricted to the contract's owner\"" + } + ], + "id": 272, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "196:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "196:101:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 279, + "nodeType": "ExpressionStatement", + "src": "196:101:1" + }, + { + "id": 280, + "nodeType": "PlaceholderStatement", + "src": "303:1:1" + } + ] + }, + "id": 282, + "name": "restricted", + "nameLocation": "177:10:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 271, + "nodeType": "ParameterList", + "parameters": [], + "src": "187:2:1" + }, + "src": "168:141:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 293, + "nodeType": "Block", + "src": "369:47:1", + "statements": [ + { + "expression": { + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 289, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "375:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 290, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "402:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "375:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "375:36:1" + } + ] + }, + "functionSelector": "fdacd576", + "id": 294, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 287, + "kind": "modifierInvocation", + "modifierName": { + "id": 286, + "name": "restricted", + "nodeType": "IdentifierPath", + "referencedDeclaration": 282, + "src": "358:10:1" + }, + "nodeType": "ModifierInvocation", + "src": "358:10:1" + } + ], + "name": "setCompleted", + "nameLocation": "322:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "mutability": "mutable", + "name": "completed", + "nameLocation": "340:9:1", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "335:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 283, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "335:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "334:16:1" + }, + "returnParameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [], + "src": "369:0:1" + }, + "scope": 295, + "src": "313:103:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 296, + "src": "66:352:1", + "usedErrors": [] + } + ], + "src": "32:387:1" + }, + "legacyAST": { + "absolutePath": "project:/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 295 + ] + }, + "id": 296, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 264, + "literals": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Migrations", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 295, + "linearizedBaseContracts": [ + 295 + ], + "name": "Migrations", + "nameLocation": "75:10:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8da5cb5b", + "id": 268, + "mutability": "mutable", + "name": "owner", + "nameLocation": "105:5:1", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "90:33:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "expression": { + "id": 266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "113:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "113:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "445df0ac", + "id": 270, + "mutability": "mutable", + "name": "last_completed_migration", + "nameLocation": "139:24:1", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "127:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 269, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "127:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "190:119:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "211:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "211:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 275, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "225:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "211:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "238:53:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "typeString": "literal_string \"This function is restricted to the contract's owner\"" + }, + "value": "This function is restricted to the contract's owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", + "typeString": "literal_string \"This function is restricted to the contract's owner\"" + } + ], + "id": 272, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "196:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "196:101:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 279, + "nodeType": "ExpressionStatement", + "src": "196:101:1" + }, + { + "id": 280, + "nodeType": "PlaceholderStatement", + "src": "303:1:1" + } + ] + }, + "id": 282, + "name": "restricted", + "nameLocation": "177:10:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 271, + "nodeType": "ParameterList", + "parameters": [], + "src": "187:2:1" + }, + "src": "168:141:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 293, + "nodeType": "Block", + "src": "369:47:1", + "statements": [ + { + "expression": { + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 289, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "375:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 290, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "402:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "375:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "375:36:1" + } + ] + }, + "functionSelector": "fdacd576", + "id": 294, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 287, + "kind": "modifierInvocation", + "modifierName": { + "id": 286, + "name": "restricted", + "nodeType": "IdentifierPath", + "referencedDeclaration": 282, + "src": "358:10:1" + }, + "nodeType": "ModifierInvocation", + "src": "358:10:1" + } + ], + "name": "setCompleted", + "nameLocation": "322:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "mutability": "mutable", + "name": "completed", + "nameLocation": "340:9:1", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "335:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 283, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "335:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "334:16:1" + }, + "returnParameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [], + "src": "369:0:1" + }, + "scope": 295, + "src": "313:103:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 296, + "src": "66:352:1", + "usedErrors": [] + } + ], + "src": "32:387:1" + }, + "compiler": { + "name": "solc", + "version": "0.8.11+commit.d7f03943.Emscripten.clang" + }, + "networks": { + "5777": { + "events": {}, + "links": {}, + "address": "0x08aD9e0a2711DB54fF953cbc2aaDECacc6e6F402", + "transactionHash": "0x63174e45b7581ded259f60ac9f29ec2be3b8c2e09774e25411ff00aa33f96649" + } + }, + "schemaVersion": "3.4.4", + "updatedAt": "2022-02-13T21:51:47.676Z", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/contracts/ETHpool.sol b/contracts/ETHpool.sol new file mode 100644 index 00000000..1a026692 --- /dev/null +++ b/contracts/ETHpool.sol @@ -0,0 +1,179 @@ +//SPDX-License-Identifier: GPL-3.0 + +pragma solidity >=0.8.0 <0.9.0; +// >0.8 to avoid use of SafeMath functions +//But, if you want it... +//import "github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol"; +//using SafeMath for uint; // + +/* +Summary +ETHPool provides a service where people can deposit ETH and they will receive weekly rewards. +Users must be able to take out their deposits along with their portion of rewards at any time. +New rewards are deposited manually into the pool by the ETHPool team each week using a contract function. + +Requirements +Only the team can deposit rewards. +Deposited rewards go to the pool of users, not to individual users. +Users should be able to withdraw their deposits along with their share of rewards considering the time when they deposited. +Example: + +Let say we have user A and B and team T. + +A deposits 100, and B deposits 300 for a total of 400 in the pool. +Now A has 25% of the pool and B has 75%. +When T deposits 200 rewards, A should be able to withdraw 150 and B 450. + +What if the following happens? +A deposits then T deposits then B deposits then A withdraws and finally B withdraws. +A should get their deposit + all the rewards. +B should only get their deposit because rewards were sent to the pool before they participated. +*/ + +/* + How it works? + First of all, we need to understand that the reward mechanism cannot be automatic. (No FOR or WHILE allowed!) + So, the stakeholders by themselves need to calculate their own reward (Don't worry, a function will do for us) + + Because the staking cannot be negative, we will save the accumulation of rewards proportional to the pool at the time of deposit. + For each stakeholder, we will save the composition of the pool at the time of staking. + To calculate the reward, we will substract the sum of rewards at the current time minus the composition of the pool at the time of staking for each user. + This is the explanation of why cannot be automatic at the time of deposit rewards. + + Some assumptions has been taken: + - Users withdrawn all of the staking and rewards. No partial withdraw allowed (Well, in fact, can be a full withdraw with a new deposit of the diff) + - Users cannot add funds to their staking (As above, we can consider a full withdraw, and a new staking) + - Some constants will be multiplied for an arbitrary big constant (10^18), to reduce rounding errors in division. + - Can be optimized for gas consumption. But for this challenge and for educational purposes, we can take the risk. And testnet is "free". + - Bugs? Everywhere. Not ready for production or resale. + + Credits: https://explorer.callisto.network/address/0xE2E4Cf144F4365AAa023da04918A64072C284201/contracts + (Thanks Erik!) +*/ + +contract ETHpool { + string public constant name = "ETHPool"; + enum State {Running, Paused, Ended } //staking can be done only if it state is running. + uint constant ROUNDING_CONSTANT = 10e18; //To minimize rounding errors at divisions + + struct TeamMember { //there are no specifications for TEAM, so, I understand that can be a lot of people. + string _name; //It's not necessary + uint _role; // 1 for active Team Members + } + + struct Stakeholder { + uint _currentBalance; + uint _compositionAtStartStaking; + uint _timeStaking; + } + + struct Pool { + uint poolBalance; + uint lastRewardMultiplied; + uint rewardsCount; + uint lastRewardTime; + State status; + } + + mapping( address => Stakeholder) public UserList; + mapping( address => TeamMember) public Team; + Pool public poolStatus; + + constructor(){ + Team[msg.sender]._role = 1; // Team member role assigned. + poolStatus.status = State.Running; + poolStatus.poolBalance = 0; // Do not transfer at construction time! + poolStatus.lastRewardMultiplied = 0; + poolStatus.rewardsCount = 0; + } + + + // The main functions: Stake() , DepositRewards() , Withdraw() + + // DepositRewards: The team can call this function to deposit rewards to the pool. + // It will update the last reward of the pool, as rewards*ROUNDING_CONSTANT/PoolBalance + function DepositRewards() external payable onlyTeam returns(uint poolbalance) { + require( msg.value >= 0, "Rewards must be greater than 0." ); + if( poolStatus.poolBalance != 0) { + poolStatus.lastRewardTime = block.timestamp; + poolStatus.lastRewardMultiplied += (msg.value * ROUNDING_CONSTANT) / poolStatus.poolBalance; + poolStatus.poolBalance += msg.value; + poolStatus.rewardsCount += 1; + } + else{ + revert("Pool is empty!"); + } + return poolStatus.poolBalance; + } + + // Stake: The users can call "Stake" to stake some ETH (or your network coin of value) + // All network users can perform this function, to become "USERS" + // TODO: We need to check if the user already exists, and **need to perform first a withdrawal next to a new deposit**. + // In V2, it will be an automatic claim. + // FIXME: At now, users can only deposit only one time. + function Stake() external payable { + require( UserList[msg.sender]._currentBalance == 0, "Please first perform a withdrawal. We will solve in V2, I promise."); + require(msg.value > 0, "Stake must be greater than 0."); + UserList[msg.sender]._currentBalance = msg.value; + UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied; + UserList[msg.sender]._timeStaking = block.timestamp; + poolStatus.poolBalance += msg.value; + } + + // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being. + // FIXME: At now, only allows full withdrawals. + function Withdraw() external onlyUsers returns(bool success){ + uint allowedToWithdraw = computeRewards() + UserList[msg.sender]._currentBalance; + require(poolStatus.poolBalance >= allowedToWithdraw, "Allowed to withdraw must be smaller than the Pool Balance" ); + poolStatus.poolBalance -= allowedToWithdraw; + UserList[msg.sender]._currentBalance = 0; + + // Did you reentrant? (yes) what did it cost? (everything) + if (payable(msg.sender).send(allowedToWithdraw)) { + delete UserList[msg.sender]; + return true; + } else { + UserList[msg.sender]._currentBalance = allowedToWithdraw; + return false; + } + } + + // Viewer functions: Allows users and team to see some computations. + function computeRewards() public view onlyUsers returns(uint withdrawable){ + return (UserList[msg.sender]._currentBalance * ( poolStatus.lastRewardMultiplied - UserList[msg.sender]._compositionAtStartStaking)) / ROUNDING_CONSTANT ; + } + + //Pool Administration functions + function pausePool() public onlyTeam { //If something went wrong, and we need time to proceed. + poolStatus.status = State.Paused; + } + + function endPool() public onlyTeam { + poolStatus.status = State.Ended; //If the pool dies. Only allow users to withdraw their funds. + } + + function resumePool() public onlyTeam { + poolStatus.status = State.Running; //Everything is up and running. + } + + //Modifiers section + modifier onlyUsers() { + require( UserList[msg.sender]._currentBalance > 0 , "Only stakeholders can use this function."); + _; + } + + modifier onlyTeam() { + require(Team[msg.sender]._role == 1, "Only the Team can call this function."); + _; + } + + modifier notPaused() { + require( poolStatus.status != State.Paused, "ETHpool is paused. This operation is not allowed."); + _; + } + + modifier notEnded() { + require( poolStatus.status != State.Ended, "ETHpool is ended. Only withdrawals allowed."); + _; + } +} \ No newline at end of file diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol new file mode 100644 index 00000000..9aac9750 --- /dev/null +++ b/contracts/Migrations.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.4.22 <0.9.0; + +contract Migrations { + address public owner = msg.sender; + uint public last_completed_migration; + + modifier restricted() { + require( + msg.sender == owner, + "This function is restricted to the contract's owner" + ); + _; + } + + function setCompleted(uint completed) public restricted { + last_completed_migration = completed; + } +} diff --git a/migrations/1644784659_deploy_ethpool.js b/migrations/1644784659_deploy_ethpool.js new file mode 100644 index 00000000..d23a8623 --- /dev/null +++ b/migrations/1644784659_deploy_ethpool.js @@ -0,0 +1,6 @@ +const ETHpool = artifacts.require('ETHpool'); + +module.exports = function(deployer) { + // Use deployer to state migration tasks. + deployer.deploy(ETHpool); +}; \ No newline at end of file diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js new file mode 100644 index 00000000..ee2135d2 --- /dev/null +++ b/migrations/1_initial_migration.js @@ -0,0 +1,5 @@ +const Migrations = artifacts.require("Migrations"); + +module.exports = function(deployer) { + deployer.deploy(Migrations); +}; diff --git a/truffle-config.js b/truffle-config.js new file mode 100644 index 00000000..6640cc64 --- /dev/null +++ b/truffle-config.js @@ -0,0 +1,99 @@ +/** + * Use this file to configure your truffle project. It's seeded with some + * common settings for different networks and features like migrations, + * compilation and testing. Uncomment the ones you need or modify + * them to suit your project as necessary. + * + * More information about configuration can be found at: + * + * truffleframework.com/docs/advanced/configuration + * + * To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider) + * to sign your transactions before they're sent to a remote public node. Infura accounts + * are available for free at: infura.io/register. + * + * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate + * public/private key pairs. If you're publishing your code to GitHub make sure you load this + * phrase from a file you've .gitignored so it doesn't accidentally become public. + * + */ + +// const HDWalletProvider = require('@truffle/hdwallet-provider'); +// const infuraKey = "fj4jll3k....."; +// +// const fs = require('fs'); +// const mnemonic = fs.readFileSync(".secret").toString().trim(); + +module.exports = { + /** + * Networks define how you connect to your ethereum client and let you set the + * defaults web3 uses to send transactions. If you don't specify one truffle + * will spin up a development blockchain for you on port 9545 when you + * run `develop` or `test`. You can ask a truffle command to use a specific + * network from the command line, e.g + * + * $ truffle test --network + */ + + networks: { + // Useful for testing. The `development` name is special - truffle uses it by default + // if it's defined here and no other network is specified at the command line. + // You should run a client (like ganache-cli, geth or parity) in a separate terminal + // tab if you use this network and you must also set the `host`, `port` and `network_id` + // options below to some value. + // + development: { + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "*", // Any network (default: none) + }, + + // Another network with more advanced options... + // advanced: { + // port: 8777, // Custom port + // network_id: 1342, // Custom network + // gas: 8500000, // Gas sent with each transaction (default: ~6700000) + // gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei) + // from:
, // Account to send txs from (default: accounts[0]) + // websockets: true // Enable EventEmitter interface for web3 (default: false) + // }, + + // Useful for deploying to a public network. + // NB: It's important to wrap the provider as a function. + // ropsten: { + // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`), + // network_id: 3, // Ropsten's id + // gas: 5500000, // Ropsten has a lower block limit than mainnet + // confirmations: 2, // # of confs to wait between deployments. (default: 0) + // timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) + // skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) + // }, + + // Useful for private networks + // private: { + // provider: () => new HDWalletProvider(mnemonic, `https://network.io`), + // network_id: 2111, // This network is yours, in the cloud. + // production: true // Treats this network as if it was a public net. (default: false) + // } + }, + + // Set default mocha options here, use special reporters etc. + mocha: { + // timeout: 100000 + }, + + // Configure your compilers + compilers: { + solc: { + version: "^0.8.0", // Fetch exact version from solc-bin (default: truffle's version) + // docker: true, // Use "0.5.1" you've installed locally with docker (default: false) + // settings: { // See the solidity docs for advice about optimization and evmVersion + // optimizer: { + // enabled: false, + // runs: 200 + // }, + // evmVersion: "byzantium" + // } + } + } +} From e32a7a28ea3780efde429431cf71fd145637b174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Sun, 13 Feb 2022 22:29:01 -0300 Subject: [PATCH 04/12] =?UTF-8?q?Modificado=20peque=C3=B1o=20error=20de=20?= =?UTF-8?q?concepto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/ETHpool.sol | 46 +++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/contracts/ETHpool.sol b/contracts/ETHpool.sol index 1a026692..97722916 100644 --- a/contracts/ETHpool.sol +++ b/contracts/ETHpool.sol @@ -69,6 +69,7 @@ contract ETHpool { struct Pool { uint poolBalance; + uint rewardsBalance; uint lastRewardMultiplied; uint rewardsCount; uint lastRewardTime; @@ -83,6 +84,7 @@ contract ETHpool { Team[msg.sender]._role = 1; // Team member role assigned. poolStatus.status = State.Running; poolStatus.poolBalance = 0; // Do not transfer at construction time! + poolStatus.rewardsBalance = 0; // Do not transfer at construction time poolStatus.lastRewardMultiplied = 0; poolStatus.rewardsCount = 0; } @@ -92,12 +94,12 @@ contract ETHpool { // DepositRewards: The team can call this function to deposit rewards to the pool. // It will update the last reward of the pool, as rewards*ROUNDING_CONSTANT/PoolBalance - function DepositRewards() external payable onlyTeam returns(uint poolbalance) { - require( msg.value >= 0, "Rewards must be greater than 0." ); + function DepositRewards() external payable onlyTeam notPaused notEnded returns(uint poolbalance) { + require( msg.value > 0, "Rewards must be greater than 0." ); if( poolStatus.poolBalance != 0) { poolStatus.lastRewardTime = block.timestamp; poolStatus.lastRewardMultiplied += (msg.value * ROUNDING_CONSTANT) / poolStatus.poolBalance; - poolStatus.poolBalance += msg.value; + poolStatus.rewardsBalance += msg.value; poolStatus.rewardsCount += 1; } else{ @@ -110,31 +112,41 @@ contract ETHpool { // All network users can perform this function, to become "USERS" // TODO: We need to check if the user already exists, and **need to perform first a withdrawal next to a new deposit**. // In V2, it will be an automatic claim. - // FIXME: At now, users can only deposit only one time. - function Stake() external payable { - require( UserList[msg.sender]._currentBalance == 0, "Please first perform a withdrawal. We will solve in V2, I promise."); + + function Stake() external notPaused notEnded payable { require(msg.value > 0, "Stake must be greater than 0."); - UserList[msg.sender]._currentBalance = msg.value; - UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied; - UserList[msg.sender]._timeStaking = block.timestamp; - poolStatus.poolBalance += msg.value; + if( UserList[msg.sender]._currentBalance == 0 ) { //first staking + UserList[msg.sender]._currentBalance = msg.value; + UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied; + UserList[msg.sender]._timeStaking = block.timestamp; + poolStatus.poolBalance += msg.value; + } + else { //User add more funds to their stake + uint newStaking = computeRewards()+msg.value; //Add old rewards plus new funds + UserList[msg.sender]._currentBalance += newStaking; + UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied; //compute from now + UserList[msg.sender]._timeStaking = block.timestamp; + poolStatus.poolBalance += newStaking; //do not forget old funds! + } } // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being. // FIXME: At now, only allows full withdrawals. - function Withdraw() external onlyUsers returns(bool success){ - uint allowedToWithdraw = computeRewards() + UserList[msg.sender]._currentBalance; - require(poolStatus.poolBalance >= allowedToWithdraw, "Allowed to withdraw must be smaller than the Pool Balance" ); - poolStatus.poolBalance -= allowedToWithdraw; + function Withdraw() external onlyUsers notPaused returns(uint sent){ + uint balanceFromPool = UserList[msg.sender]._currentBalance; //deposit + uint balanceFromRewards = computeRewards(); // rewards + uint allowedToWithdraw = balanceFromPool+balanceFromRewards ; + poolStatus.poolBalance -= balanceFromPool; // From pool + poolStatus.rewardsBalance -= balanceFromRewards; // From rewards UserList[msg.sender]._currentBalance = 0; // Did you reentrant? (yes) what did it cost? (everything) if (payable(msg.sender).send(allowedToWithdraw)) { delete UserList[msg.sender]; - return true; + return allowedToWithdraw; } else { - UserList[msg.sender]._currentBalance = allowedToWithdraw; - return false; + UserList[msg.sender]._currentBalance = balanceFromPool; + return 0; } } From e5f6d63bd8bf73f08513b5a8d3a5f5fcb44ffbba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Sun, 13 Feb 2022 23:44:59 -0300 Subject: [PATCH 05/12] Agregado la posibilidad de incrementar el stake --- contracts/ETHpool.sol | 16 ++++--- package-lock.json | 55 ++++++++++++++++++++++ package.json | 5 ++ test/e_t_hpool.js | 106 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 176 insertions(+), 6 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 test/e_t_hpool.js diff --git a/contracts/ETHpool.sol b/contracts/ETHpool.sol index 97722916..1ae54167 100644 --- a/contracts/ETHpool.sol +++ b/contracts/ETHpool.sol @@ -58,7 +58,7 @@ contract ETHpool { struct TeamMember { //there are no specifications for TEAM, so, I understand that can be a lot of people. string _name; //It's not necessary - uint _role; // 1 for active Team Members + bool _role; // True for active Team Members } struct Stakeholder { @@ -81,7 +81,7 @@ contract ETHpool { Pool public poolStatus; constructor(){ - Team[msg.sender]._role = 1; // Team member role assigned. + Team[msg.sender]._role = true; // Team member role assigned. poolStatus.status = State.Running; poolStatus.poolBalance = 0; // Do not transfer at construction time! poolStatus.rewardsBalance = 0; // Do not transfer at construction time @@ -156,18 +156,22 @@ contract ETHpool { } //Pool Administration functions - function pausePool() public onlyTeam { //If something went wrong, and we need time to proceed. + function pausePool() external onlyTeam { //If something went wrong, and we need time to proceed. poolStatus.status = State.Paused; } - function endPool() public onlyTeam { + function endPool() external onlyTeam { poolStatus.status = State.Ended; //If the pool dies. Only allow users to withdraw their funds. } - function resumePool() public onlyTeam { + function resumePool() external onlyTeam { poolStatus.status = State.Running; //Everything is up and running. } + function modifyTeam(address teamAddress , bool role) external onlyTeam { + Team[teamAddress]._role = role; + } + //Modifiers section modifier onlyUsers() { require( UserList[msg.sender]._currentBalance > 0 , "Only stakeholders can use this function."); @@ -175,7 +179,7 @@ contract ETHpool { } modifier onlyTeam() { - require(Team[msg.sender]._role == 1, "Only the Team can call this function."); + require(Team[msg.sender]._role == true, "Only the Team can call this function."); _; } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..6666e66b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,55 @@ +{ + "name": "exactly-private", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "truffle-assertions": "^0.9.2" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/truffle-assertions": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", + "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "dependencies": { + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" + } + } + }, + "dependencies": { + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "truffle-assertions": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", + "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "requires": { + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..2c9b5ea3 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "truffle-assertions": "^0.9.2" + } +} diff --git a/test/e_t_hpool.js b/test/e_t_hpool.js new file mode 100644 index 00000000..59a63ee4 --- /dev/null +++ b/test/e_t_hpool.js @@ -0,0 +1,106 @@ +const ETHpool = artifacts.require("ETHpool"); +const truffleAssert = require('truffle-assertions'); + + +/* + * uncomment accounts to access the test accounts made available by the + * Ethereum client + * See docs: https://www.trufflesuite.com/docs/truffle/testing/writing-tests-in-javascript + */ + + +contract("ETHpool", function (accounts) { + it("Should return the list of accounts", async () => { + console.log(accounts); + }); + + let instance; + beforeEach('Should setup the contract instance', async () => { + instance = await ETHpool.deployed(); + }); + + it("Should return the name", async () => { + const value = await instance.name(); + assert.equal(value, 'ETHPool'); + }); + + /* + it("should return change the name", async () => { + await instance.changeName('your name'); + const value = await instance.getName(); + + assert.equal(value, 'your name'); + }); + + it('should execute only by the owner', async () => { + await instance.changeName('modifier'); + const value = await instance.getName(); + + assert.equal(value, 'modifier'); + }) + */ + + it('Test case from Exactly Github: A->100, B->300 ,T->200 ... A->150, B->450' + , async () => { + + var accountA = accounts[1] + var accountB = accounts[2] + var accountT = accounts[0] + + //A -> 100 + const stakeFromA = await instance.Stake({ + 'from': accountA, + 'value': web3.toWei(100, "gwei") + }); + const poolStatusA = await instance.poolStatus() + assert.equal(poolStatusA.poolBalance, web3.toWei(100, "gwei")); + + //B -> 300 + const stakeFromB = await instance.Stake({ + 'from': accountB, + 'value': web3.toWei(300, "gwei") + }); + const poolStatusB = await instance.poolStatus() + assert.equal(poolStatusB.poolBalance, web3.toWei(400, "gwei")); + + //T -> 200 + const rewardFromT = await instance.Stake({ + 'from': accountAT, + 'value': web3.towei(200, "gwei") + }); + const poolStatusT = await instance.poolStatus() + assert.equal(poolStatusT.rewardsBalance, web3.toWei(200, "gwei")); + + + //A <- 150 + const withdrawA = await instance.Withdraw({ + 'from': accountA + }); + assert.equal(withdrawA, web3.toWei(150, "gwei")); + + //B <- 450 + const withdrawB = await instance.Withdraw({ + 'from': accountB + }); + assert.equal(withdrawB, web3.toWei(450, "gwei")); + }) + + + it('Should fail: pausePool called by not Team members', async () => { + await truffleAssert.reverts(instance.pausePool({ + 'from': accounts[1] + })); + }); + + it('Should fail: endPool called by not Team members', async () => { + await truffleAssert.reverts(instance.endPool({ + 'from': accounts[1] + })); + }); + + it('Should fail: resumePool called by not Team members', async () => { + await truffleAssert.reverts(instance.resumePool({ + 'from': accounts[1] + })); + }); +}); From cc2cc6d216303f6db052918967fd361beca6556b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Tue, 12 Apr 2022 11:20:42 -0300 Subject: [PATCH 06/12] First functional smartcontract. Tested, but not properly. Not deployed to Testnet --- contracts/ETHpool.sol | 13 ++++++++++- test/e_t_hpool.js | 54 ++++++++++++++++++++++++++++++++----------- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/contracts/ETHpool.sol b/contracts/ETHpool.sol index 1ae54167..b29ef273 100644 --- a/contracts/ETHpool.sol +++ b/contracts/ETHpool.sol @@ -5,6 +5,7 @@ pragma solidity >=0.8.0 <0.9.0; //But, if you want it... //import "github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol"; //using SafeMath for uint; // +//Better use Pausable Library, but it's only for fun /* Summary @@ -52,7 +53,7 @@ B should only get their deposit because rewards were sent to the pool before the */ contract ETHpool { - string public constant name = "ETHPool"; + string public constant name = "ETHpool"; enum State {Running, Paused, Ended } //staking can be done only if it state is running. uint constant ROUNDING_CONSTANT = 10e18; //To minimize rounding errors at divisions @@ -80,6 +81,13 @@ contract ETHpool { mapping( address => TeamMember) public Team; Pool public poolStatus; + //Some events to get data outside of the blockchain + event StakeEvent(address indexed _from, uint _value); + event WithdrawEvent(address indexed _to, uint _value); + event DepositRewardsEvent(uint _poolBalance, uint _rewards); + + + constructor(){ Team[msg.sender]._role = true; // Team member role assigned. poolStatus.status = State.Running; @@ -105,6 +113,7 @@ contract ETHpool { else{ revert("Pool is empty!"); } + emit DepositRewardsEvent(poolStatus.poolBalance, poolStatus.rewardsBalance); return poolStatus.poolBalance; } @@ -128,6 +137,7 @@ contract ETHpool { UserList[msg.sender]._timeStaking = block.timestamp; poolStatus.poolBalance += newStaking; //do not forget old funds! } + emit StakeEvent(msg.sender, UserList[msg.sender]._currentBalance); } // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being. @@ -143,6 +153,7 @@ contract ETHpool { // Did you reentrant? (yes) what did it cost? (everything) if (payable(msg.sender).send(allowedToWithdraw)) { delete UserList[msg.sender]; + emit WithdrawEvent(msg.sender,allowedToWithdraw); return allowedToWithdraw; } else { UserList[msg.sender]._currentBalance = balanceFromPool; diff --git a/test/e_t_hpool.js b/test/e_t_hpool.js index 59a63ee4..687f4bf5 100644 --- a/test/e_t_hpool.js +++ b/test/e_t_hpool.js @@ -1,6 +1,7 @@ const ETHpool = artifacts.require("ETHpool"); const truffleAssert = require('truffle-assertions'); +const contractName = 'ETHpool' /* * uncomment accounts to access the test accounts made available by the @@ -9,7 +10,7 @@ const truffleAssert = require('truffle-assertions'); */ -contract("ETHpool", function (accounts) { +contract(contractName, function (accounts) { it("Should return the list of accounts", async () => { console.log(accounts); }); @@ -21,7 +22,7 @@ contract("ETHpool", function (accounts) { it("Should return the name", async () => { const value = await instance.name(); - assert.equal(value, 'ETHPool'); + assert.equal(value, contractName) }); /* @@ -48,43 +49,68 @@ contract("ETHpool", function (accounts) { var accountT = accounts[0] //A -> 100 + const stakeA = 100 + const stakeFromAvalue = web3.utils.toWei('' + stakeA, "gwei") const stakeFromA = await instance.Stake({ 'from': accountA, - 'value': web3.toWei(100, "gwei") + 'value': stakeFromAvalue }); + truffleAssert.eventEmitted(stakeFromA, 'StakeEvent', (event) => { + return event._value == stakeFromAvalue + }) const poolStatusA = await instance.poolStatus() - assert.equal(poolStatusA.poolBalance, web3.toWei(100, "gwei")); + assert.equal(poolStatusA.poolBalance, stakeFromAvalue); + //B -> 300 + const stakeB = 300 + const stakeFromBvalue = web3.utils.toWei('' + stakeB, "gwei") const stakeFromB = await instance.Stake({ 'from': accountB, - 'value': web3.toWei(300, "gwei") + 'value': stakeFromBvalue }); + truffleAssert.eventEmitted(stakeFromB, 'StakeEvent', (event) => { + return event._value == stakeFromBvalue + }) const poolStatusB = await instance.poolStatus() - assert.equal(poolStatusB.poolBalance, web3.toWei(400, "gwei")); + assert.equal(poolStatusB.poolBalance, web3.utils.toWei('' + (stakeA + stakeB), "gwei"));//A+B //T -> 200 - const rewardFromT = await instance.Stake({ - 'from': accountAT, - 'value': web3.towei(200, "gwei") + const rewardT = 200 + const rewardFromTvalue = web3.utils.toWei('' + rewardT, "gwei") + const rewardFromT = await instance.DepositRewards({ + 'from': accountT, + 'value': rewardFromTvalue }); + truffleAssert.eventEmitted(rewardFromT, 'DepositRewardsEvent', (event) => { + return event._rewards == rewardFromTvalue + }) const poolStatusT = await instance.poolStatus() - assert.equal(poolStatusT.rewardsBalance, web3.toWei(200, "gwei")); + assert.equal(poolStatusT.rewardsBalance, rewardFromTvalue); //A <- 150 const withdrawA = await instance.Withdraw({ 'from': accountA }); - assert.equal(withdrawA, web3.toWei(150, "gwei")); + truffleAssert.prettyPrintEmittedEvents(withdrawA) + truffleAssert.eventEmitted(withdrawA, 'WithdrawEvent', (event) => { + //console.log("Llegó a WithdrawEvent",web3.utils.toWei(''+(stakeA+rewardT*(stakeA/(stakeA+stakeB))), "gwei")) + //150000000000 150000000000 50000000000 + return event._value == web3.utils.toWei('' + (stakeA + rewardT * (stakeA / (stakeA + stakeB))), "gwei") + }) //B <- 450 const withdrawB = await instance.Withdraw({ 'from': accountB }); - assert.equal(withdrawB, web3.toWei(450, "gwei")); - }) - + truffleAssert.prettyPrintEmittedEvents(withdrawB) + truffleAssert.eventEmitted(withdrawB, 'WithdrawEvent', (event) => { + //console.log("Llegó a WithdrawEvent",web3.utils.toWei(''+(stakeA+rewardT*(stakeA/(stakeA+stakeB))), "gwei")) + //150000000000 150000000000 50000000000 + return event._value == web3.utils.toWei('' + (stakeB + rewardT * (stakeB / (stakeA + stakeB))), "gwei") + }) + }); it('Should fail: pausePool called by not Team members', async () => { await truffleAssert.reverts(instance.pausePool({ From d3ceb0c9bc314df36b3c69906573038477b70218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Tue, 12 Apr 2022 17:31:41 -0300 Subject: [PATCH 07/12] Deployed in Ropsten! At 0x40985d7c0357e31332860ffdea279e23ec0d5fc3 --- .gitignore | 3 +- migrations/1644784659_deploy_ethpool.js | 12 +- migrations/1_initial_migration.js | 10 +- package-lock.json | 5189 ++++++++++++++++++++++- package.json | 1 + truffle-config.js | 41 +- 6 files changed, 5220 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 3462a522..63d138e1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,9 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* -# Do not upload secrets! +# Do not upload secrets or keys! .secrets +.infurakey # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/migrations/1644784659_deploy_ethpool.js b/migrations/1644784659_deploy_ethpool.js index d23a8623..382fe292 100644 --- a/migrations/1644784659_deploy_ethpool.js +++ b/migrations/1644784659_deploy_ethpool.js @@ -1,6 +1,12 @@ const ETHpool = artifacts.require('ETHpool'); - -module.exports = function(deployer) { + +module.exports = function (deployer, network, accounts) { // Use deployer to state migration tasks. - deployer.deploy(ETHpool); + console.log(accounts) + if (network == 'ropsten' || network == 'rinkeby') { + deployer.deploy(ETHpool, { from: accounts[1] }); + } + else { + deployer.deploy(ETHpool); + } }; \ No newline at end of file diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js index ee2135d2..a9d04fc7 100644 --- a/migrations/1_initial_migration.js +++ b/migrations/1_initial_migration.js @@ -1,5 +1,11 @@ const Migrations = artifacts.require("Migrations"); -module.exports = function(deployer) { - deployer.deploy(Migrations); +module.exports = function (deployer, network, accounts) { + console.log(accounts) + if (network == 'ropsten' || network == 'rinkeby') { + deployer.deploy(Migrations, { from: accounts[1] }); + } + else { + deployer.deploy(Migrations); + } }; diff --git a/package-lock.json b/package-lock.json index 6666e66b..dcc34502 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,631 @@ "packages": { "": { "dependencies": { + "@truffle/hdwallet-provider": "^2.0.5", "truffle-assertions": "^0.9.2" } }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "peer": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "peer": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ethereumjs/common": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.3.tgz", + "integrity": "sha512-mQwPucDL7FDYIg9XQ8DL31CnIYZwGhU5hyOO5E+BMmT71G0+RHvIT5rIkLBirJEKxV6+Rcf9aEIY0kXInxUWpQ==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.4" + } + }, + "node_modules/@ethereumjs/common/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ethereumjs/common/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/@ethereumjs/common/node_modules/ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "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" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", + "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", + "dependencies": { + "@ethereumjs/common": "^2.6.3", + "ethereumjs-util": "^7.1.4" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ethereumjs/tx/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/@ethereumjs/tx/node_modules/ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "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" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + }, + "node_modules/@truffle/hdwallet-provider": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-2.0.5.tgz", + "integrity": "sha512-aF0tadToEU31w33mhUYK7oV8GGuyID2Ov/yx1pueTKcMhOAJYfqEMTE96qq/GNQOkrsmi7blnGdjCSzuCUCb7w==", + "dependencies": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "eth-sig-util": "^3.0.1", + "ethereum-cryptography": "^0.1.3", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^6.1.0", + "ethereumjs-wallet": "^1.0.1", + "web3-provider-engine": "16.0.3" + } + }, + "node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -16,32 +638,4405 @@ "node": "*" } }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dependencies": { + "async": "^2.4.0" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "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" + } + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001328", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001328.tgz", + "integrity": "sha512-Ue55jHkR/s4r00FLNiX+hGMMuwml/QGqqzVeMQ5thUewznU2EdULFvI3JR7JJid6OrjJNfFvHY2G2dIjmRaDDQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", + "dependencies": { + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + }, + "node_modules/core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "dependencies": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "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" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "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" + } + }, + "node_modules/cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "dependencies": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "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" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", + "dependencies": { + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-block-tracker/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-json-rpc-filters": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz", + "integrity": "sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-json-rpc-middleware": "^6.0.0", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + } + }, + "node_modules/eth-json-rpc-filters/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eth-json-rpc-infura": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz", + "integrity": "sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==", + "dependencies": { + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "json-rpc-engine": "^5.3.0", + "node-fetch": "^2.6.0" + } + }, + "node_modules/eth-json-rpc-infura/node_modules/json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "dependencies": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-json-rpc-middleware": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz", + "integrity": "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==", + "dependencies": { + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-query": "^2.1.2", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-util": "^5.1.2", + "json-rpc-engine": "^5.3.0", + "json-stable-stringify": "^1.0.1", + "node-fetch": "^2.6.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", + "dependencies": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "dependencies": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha1-1nQdkAAQa1FRDHLbktY2VFam2l4=", + "dependencies": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/eth-rpc-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/eth-sig-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", + "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" + } + }, + "node_modules/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/eth-sig-util/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "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" + } + }, + "node_modules/ethereum-cryptography/node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "git+ssh://git@github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-account/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", + "dependencies": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "deprecated": "New package name format for new versions: @ethereumjs/common. Please update." + }, + "node_modules/ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ethereumjs-tx/node_modules/ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + }, + "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "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" + } + }, + "node_modules/ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "deprecated": "New package name format for new versions: @ethereumjs/vm. Please update.", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-wallet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", + "dependencies": { + "aes-js": "^3.1.2", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", + "scrypt-js": "^3.0.1", + "utf8": "^3.0.0", + "uuid": "^8.3.2" + } + }, + "node_modules/ethereumjs-wallet/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-wallet/node_modules/aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + }, + "node_modules/ethereumjs-wallet/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/ethereumjs-wallet/node_modules/ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "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" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethereumjs-wallet/node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/ethereumjs-wallet/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", + "dependencies": { + "checkpoint-store": "^1.1.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/json-rpc-engine/node_modules/eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha1-uknZat7RRE27jaPSA3SKy7zeyMg=" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "node_modules/level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/level-iterator-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-iterator-stream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/level-ws/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-ws/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/levelup/node_modules/semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/memdown/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "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" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", + "dependencies": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rlp/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "deprecated": "Renamed to @metamask/safe-event-emitter", + "dependencies": { + "events": "^3.0.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "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" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/truffle-assertions": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", + "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "dependencies": { + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/web3-provider-engine": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz", + "integrity": "sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA==", + "dependencies": { + "@ethereumjs/tx": "^3.3.0", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-filters": "^4.2.1", + "eth-json-rpc-infura": "^5.1.0", + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/web3-provider-engine/node_modules/eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", + "dependencies": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "node_modules/web3-provider-engine/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "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" + } + }, + "node_modules/web3-provider-engine/node_modules/ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "peer": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "peer": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "peer": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "peer": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==" + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@ethereumjs/common": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.3.tgz", + "integrity": "sha512-mQwPucDL7FDYIg9XQ8DL31CnIYZwGhU5hyOO5E+BMmT71G0+RHvIT5rIkLBirJEKxV6+Rcf9aEIY0kXInxUWpQ==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "requires": { + "@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" + } + } + } + }, + "@ethereumjs/tx": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", + "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", + "requires": { + "@ethereumjs/common": "^2.6.3", + "ethereumjs-util": "^7.1.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "requires": { + "@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" + } + } + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "peer": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + }, + "@truffle/hdwallet-provider": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-2.0.5.tgz", + "integrity": "sha512-aF0tadToEU31w33mhUYK7oV8GGuyID2Ov/yx1pueTKcMhOAJYfqEMTE96qq/GNQOkrsmi7blnGdjCSzuCUCb7w==", + "requires": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "eth-sig-util": "^3.0.1", + "ethereum-cryptography": "^0.1.3", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^6.1.0", + "ethereumjs-wallet": "^1.0.1", + "web3-provider-engine": "16.0.3" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "requires": { + "@types/node": "*" + } + }, + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "requires": { + "xtend": "~4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "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-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "requires": { + "async": "^2.4.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "requires": { + "precond": "0.2" + } + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "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" + } + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "caniuse-lite": { + "version": "1.0.30001328", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001328.tgz", + "integrity": "sha512-Ue55jHkR/s4r00FLNiX+hGMMuwml/QGqqzVeMQ5thUewznU2EdULFvI3JR7JJid6OrjJNfFvHY2G2dIjmRaDDQ==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "peer": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + } + } + }, + "core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "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": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "requires": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "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" + } + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", + "requires": { + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "eth-json-rpc-filters": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz", + "integrity": "sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-json-rpc-middleware": "^6.0.0", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + } + } + }, + "eth-json-rpc-infura": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz", + "integrity": "sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==", + "requires": { + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "json-rpc-engine": "^5.3.0", + "node-fetch": "^2.6.0" + }, + "dependencies": { + "json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "requires": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + } + } + }, + "eth-json-rpc-middleware": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz", + "integrity": "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==", + "requires": { + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-query": "^2.1.2", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-util": "^5.1.2", + "json-rpc-engine": "^5.3.0", + "json-stable-stringify": "^1.0.1", + "node-fetch": "^2.6.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + }, + "dependencies": { + "eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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" + } + }, + "json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "requires": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha1-1nQdkAAQa1FRDHLbktY2VFam2l4=", + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-rpc-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "eth-sig-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", + "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } + } + }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@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" + }, + "dependencies": { + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + } + } + }, + "ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + }, + "ethereumjs-abi": { + "version": "git+ssh://git@github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0", + "from": "ethereumjs-abi@^0.6.8", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@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-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + } + } }, - "node_modules/truffle-assertions": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", - "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "ethereumjs-wallet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", + "requires": { + "aes-js": "^3.1.2", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", + "scrypt-js": "^3.0.1", + "utf8": "^3.0.0", + "uuid": "^8.3.2" + }, "dependencies": { - "assertion-error": "^1.1.0", - "lodash.isequal": "^4.5.0" + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "requires": { + "@types/node": "*" + } + }, + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "ethereumjs-util": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", + "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "requires": { + "@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" + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } - } - }, - "dependencies": { - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "peer": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=" + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, + "dependencies": { + "eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + } + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha1-uknZat7RRE27jaPSA3SKy7zeyMg=" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "peer": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "requires": { + "xtend": "~4.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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" + } + } + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" + }, + "node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "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": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "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" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + } + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "requires": { + "bn.js": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + } + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "requires": { + "events": "^3.0.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" + }, + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "truffle-assertions": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", @@ -50,6 +5045,166 @@ "assertion-error": "^1.1.0", "lodash.isequal": "^4.5.0" } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + } + } + }, + "web3-provider-engine": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz", + "integrity": "sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA==", + "requires": { + "@ethereumjs/tx": "^3.3.0", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-filters": "^4.2.1", + "eth-json-rpc-infura": "^5.1.0", + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "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" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } } diff --git a/package.json b/package.json index 2c9b5ea3..b3a6f5d6 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "@truffle/hdwallet-provider": "^2.0.5", "truffle-assertions": "^0.9.2" } } diff --git a/truffle-config.js b/truffle-config.js index 6640cc64..e4d7f95d 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -18,11 +18,11 @@ * */ -// const HDWalletProvider = require('@truffle/hdwallet-provider'); -// const infuraKey = "fj4jll3k....."; -// -// const fs = require('fs'); -// const mnemonic = fs.readFileSync(".secret").toString().trim(); +const fs = require('fs'); +const HDWalletProvider = require('@truffle/hdwallet-provider'); + +const infuraKey = fs.readFileSync(".infurakey").toString().trim(); +const mnemonic = fs.readFileSync(".secrets").toString().trim(); module.exports = { /** @@ -60,14 +60,29 @@ module.exports = { // Useful for deploying to a public network. // NB: It's important to wrap the provider as a function. - // ropsten: { - // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`), - // network_id: 3, // Ropsten's id - // gas: 5500000, // Ropsten has a lower block limit than mainnet - // confirmations: 2, // # of confs to wait between deployments. (default: 0) - // timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) - // skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) - // }, + ropsten: { + provider: () => new HDWalletProvider(mnemonic, `wss://ropsten.infura.io/ws/v3/${infuraKey}`), + network_id: 3, // Ropsten's id + gas: 5500000, // Ropsten has a lower block limit than mainnet + confirmations: 2, //2 # of confs to wait between deployments. (default: 0) + timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) + skipDryRun: true, // Skip dry run before migrations? (default: false for public nets ) + networkCheckTimeout: 99999, + from: "0xeC11B5Da844605b40c2e1f4201e9e4531648b582" + }, + + + // Useful for deploying to a public network. + // NB: It's important to wrap the provider as a function. + rinkeby: { + provider: () => new HDWalletProvider(mnemonic, `wss://rinkeby.infura.io/v3/${infuraKey}`), + network_id: 4, // rinkeby's id + gas: 5500000, // rinkeby has a lower block limit than mainnet + confirmations: 2, //2 # of confs to wait between deployments. (default: 0) + timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) + skipDryRun: true, // Skip dry run before migrations? (default: false for public nets ) + networkCheckTimeout: 99999 + }, // Useful for private networks // private: { From 595dde36ff204f311b0f555b3de476cfa09d020e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Wed, 13 Apr 2022 17:40:15 -0300 Subject: [PATCH 08/12] =?UTF-8?q?Agregado=20el=20README=20para=20explicar?= =?UTF-8?q?=20c=C3=B3mo=20usarlo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- query_contract/README.md | 43 ++++++ query_contract/contractAbi.json | 260 ++++++++++++++++++++++++++++++++ query_contract/queryEthPool.py | 224 +++++++++++++++++++++++++++ query_contract/requirements.txt | Bin 0 -> 3970 bytes 4 files changed, 527 insertions(+) create mode 100644 query_contract/README.md create mode 100644 query_contract/contractAbi.json create mode 100644 query_contract/queryEthPool.py create mode 100644 query_contract/requirements.txt diff --git a/query_contract/README.md b/query_contract/README.md new file mode 100644 index 00000000..97b39e8f --- /dev/null +++ b/query_contract/README.md @@ -0,0 +1,43 @@ +# exactly-private +Script to query "ETHPool" contract. + +# Smart Contract Challenge + + +#### Summary + +QueryEthPool will connect to Infura and query the ETHPool contract to know their status. +It will return data about the balance of the pool (total staked), of the rewards pool (total of rewards), the last index of pool composition, the count of rewards provided, the time of the last reward, and the status of the pool. + +#### Requirements + +- Python 3 +- File _../.secrets_ with the mnemonics of your test wallet (Please do not commit this file) +- File _../.infurakey_ with your Infura Project ID (Please do not commit this file) +- Web3.py installed +> pip install Web3 +> or +> pip install -r requirements.txt (it will install a lot of bloatware, you're noticed) + + +Example: + +>>Exactly\exactly-private\query_contract> **py .\queryEthPool.py** +>Connected? **True** +>Balance of Wallet Test: 0.138237453946299695 ropstenETH +>Ahora vamos al contrato... +>**Pool Balance:** 0 +>**Rewards Balance:** 0 +>**Last Reward Multiplied:** 0 +>**Rewards count:** 0 +>**Last Reward Time:** 0 +>**Status:** 0 + + +_Contract verified at: https://ropsten.etherscan.io/address/0x40985d7c0357e31332860ffdea279e23ec0d5fc3#code_ + +### Interact with the contract + +Create a script (or a Hardhat task) to query the total amount of ETH held in the contract. + +_You can use any library you prefer: Ethers.js, Web3.js, Web3.py, eth-brownie_ diff --git a/query_contract/contractAbi.json b/query_contract/contractAbi.json new file mode 100644 index 00000000..4e77ee27 --- /dev/null +++ b/query_contract/contractAbi.json @@ -0,0 +1,260 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_poolBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_rewards", + "type": "uint256" + } + ], + "name": "DepositRewardsEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "StakeEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "WithdrawEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "Team", + "outputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "bool", + "name": "_role", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UserList", + "outputs": [ + { + "internalType": "uint256", + "name": "_currentBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_compositionAtStartStaking", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timeStaking", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "poolStatus", + "outputs": [ + { + "internalType": "uint256", + "name": "poolBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardsBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardMultiplied", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardsCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "enum ETHpool.State", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "DepositRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "poolbalance", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "payable": true + }, + { + "inputs": [], + "name": "Stake", + "outputs": [], + "stateMutability": "payable", + "type": "function", + "payable": true + }, + { + "inputs": [], + "name": "Withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "computeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawable", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "pausePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "resumePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "teamAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "role", + "type": "bool" + } + ], + "name": "modifyTeam", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/query_contract/queryEthPool.py b/query_contract/queryEthPool.py new file mode 100644 index 00000000..5a48e00f --- /dev/null +++ b/query_contract/queryEthPool.py @@ -0,0 +1,224 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Script para testear Web3 for Python , invocar el contrato y ver el saldo""" + +__author__ = "Matías Araujo" +__copyright__ = "Copyright 2021, RLLabs LLC" +__credits__ = ["Erik", "El Barto"] +__license__ = "GPL" +__version__ = "0.0.1" +__maintainer__ = "Matías Araujo" +__email__ = ["matias.araujo@outlook.com"] +__status__ = "Development" + +# SOURCE: https://stackoverflow.com/questions/1523427/what-is-the-common-header-format-of-python-files + +#Imports: +from web3 import Web3 +from eth_account import Account +import requests +import sys +import logging +import json +import pprint + + +# Configs: +#logging.basicConfig(level=logging.DEBUG) + + +# Constantes +BE_VERBOSE = True +WALLET_MATI = "0xeC11B5Da844605b40c2e1f4201e9e4531648b582" +ETHEREUM_EXPLORER_URL = "https://ropsten.etherscan.io/api" +ETHEREUM_EXPLORER_API = "https://api-ropsten.etherscan.io/api" + +#FIXME: Está tomado prestado del explorer +CONTRACT_ADDRESS = "0x40985d7C0357e31332860FfdeA279e23Ec0d5fC3" #Esta es la dirección final +API_ENDPOINT = ETHEREUM_EXPLORER_API+"?module=contract&action=getabi&address="+str(CONTRACT_ADDRESS) +CONTRACT_ABI = "contractAbi.json" + +# Seed from file +mnemonic_file = open('..\.secrets', 'r') +mnemonic = mnemonic_file.read() +mnemonic_file.close() + +# Infura Key +infura_file = open('..\.infurakey', 'r') +infura_key = infura_file.read() +infura_file.close() + +INFURA_RPC_URL = "https://ropsten.infura.io/v3/"+infura_key + +#Address: + +#GAS LIMITS: +GASLIMIT_TOKEN_TRANSFER=70000 + +#Globales para inicializar: + +w3= None + + +def connectToCallisto(): + CloW3 = Web3(Web3.HTTPProvider(INFURA_RPC_URL)) + print("Connected? {}".format(CloW3.isConnected())) + return CloW3 + +def loadContract(abi, contractAddress): + contractAbi = getABI(fromFile=abi) + contractInstance = w3.eth.contract( + address=contractAddress, + abi= contractAbi + ) + return contractInstance + +def getBalanceOfWalletInnovacion(CloW3): + print("Balance of Wallet Test: {} ropstenETH".format( + Web3.fromWei(CloW3.eth.get_balance(WALLET_MATI),'ether'))) + +def getBalanceOfPool( instance ): + balance = instance.functions.poolStatus().call() + return balance + +def checkAddress(addr): + return w3.isAddress(addr) + +def transferTokens( addr , amount ): + if BE_VERBOSE: print( addr," --> ", amount) + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) + account = setupAccount() + if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) + trnxToken = sendTokenToAddr(contractInstance,addr,amount=amount,fromAddress=account.address) + if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) + receipt = w3.eth.wait_for_transaction_receipt(trnxToken) + return (receipt,w3.toHex(trnxToken)) + +def closeAuction( auctionID ): + if BE_VERBOSE: print( "AuctionID"," --> ", auctionID) + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) + account = setupAccount() + if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) + trnxToken = callCloseAuction(contractInstance,auctionId=auctionID,fromAddress=account.address) + if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) + receipt = w3.eth.wait_for_transaction_receipt(trnxToken) + return (receipt,w3.toHex(trnxToken)) + +def closeAuctionNOWAIT( auctionID ): + if BE_VERBOSE: print( "AuctionID"," --> ", auctionID) + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) + account = setupAccount() + if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) + trnxToken = callCloseAuction(contractInstance,auctionId=auctionID,fromAddress=account.address) + if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) + #receipt = w3.eth.wait_for_transaction_receipt(trnxToken) + return w3.toHex(trnxToken) + +def transferClo( addr , amount ): + if BE_VERBOSE: print( addr," --> ", amount) + account = setupAccount() + if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) + trnxToken = sendCloToAddr(addr,fromAddress=account.address) + if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) + receipt = w3.eth.wait_for_transaction_receipt(trnxToken) + return (receipt,w3.toHex(trnxToken)) + +def getABI(fromFile=None): + if(fromFile is None): + r = requests.get(url = API_ENDPOINT) + response = r.json() + return response["result"] + else: + with open(fromFile) as f: + info_json = json.load(f) + return info_json + +def callTokenHolders(addr): + if BE_VERBOSE: print( addr," --> ", "tokenHolders") + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) + tokenHoldersResponse = contractInstance.functions.tokenHolders(addr).call() + return tokenHoldersResponse + +def callAuctions(auctionId): + if BE_VERBOSE: print( auctionId," --> ", "auctionId") + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) + auctionsResponse = contractInstance.functions.auctions(auctionId).call() + return auctionsResponse + +def sendCloToAddr(addr, fromAddress=None): + # simple example (Web3.py determines gas and fee) + #transaction = { + # 'to': addr, + # 'from': fromAddress, + # 'value': w3.toWei('1','gwei') + #} + #print(transaction) + #return w3.eth.send_transaction(transaction) + #get the nonce. Prevents one from sending the transaction twice + nonce = w3.eth.getTransactionCount(fromAddress) + + #build a transaction in a dictionary + tx = { + 'nonce': nonce, + 'to': addr, + 'value': w3.toWei(1, 'ether'), + 'gas': GASLIMIT_CLO_TRANSFER, + 'gasPrice': int(w3.eth.gas_price*1.1) + } + #sign the transaction + signed_tx = w3.eth.account.sign_transaction(tx, PK) + + #send transaction + tx_hash = w3.eth.sendRawTransaction(signed_tx.rawTransaction) + return tx_hash + +def setupAccount(): + #acct = Account.privateKeyToAccount(PK) + acct = w3.eth.account.from_key(PK) + #acct = w3.eth.account.privateKeyToAccount(PK) + #w3.eth.default_account = acct + return acct + +def sendTokenToAddr(instance,addr, amount,fromAddress=None): + nonce = w3.eth.getTransactionCount(fromAddress) + tx = { + 'nonce': nonce, + #'to': addr, + #'value': w3.toWei(1, 'ether'), + 'gas': GASLIMIT_TOKEN_TRANSFER, + 'gasPrice': int(w3.eth.gas_price*1.1) + } + transaction = instance.functions.transfer(addr,amount).buildTransaction(tx) + signed_txn = w3.eth.account.sign_transaction(transaction, PK) + txn_hash = w3.eth.sendRawTransaction(signed_txn.rawTransaction) + return txn_hash + + + +w3 = connectToCallisto() + +if __name__ == "__main__": + getBalanceOfWalletInnovacion(w3) + print("Ahora vamos al contrato...") + contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) + + + balanceTokens = getBalanceOfPool(contractInstance) + poolBalance = balanceTokens[0] + rewardsBalance = balanceTokens[1] + lastRewardMultiplied = balanceTokens[2] + rewardsCount = balanceTokens[3] + lastRewardTime = balanceTokens[4] + status = balanceTokens[5] + print('Pool Balance: {}'.format(Web3.fromWei(poolBalance,'wei'))) + print('Rewards Balance: {}'.format(Web3.fromWei(rewardsBalance,'wei'))) + print('Last Reward Multiplied: {}'.format(Web3.fromWei(lastRewardMultiplied,'wei'))) + print('Rewards count: {}'.format(Web3.fromWei(rewardsCount,'wei'))) + print('Last Reward Time: {}'.format(Web3.fromWei(lastRewardTime,'wei'))) + print('Status: {}'.format(status)) \ No newline at end of file diff --git a/query_contract/requirements.txt b/query_contract/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..1caa52ab5be57f5e3bcfbbbaf1254f05da7ce8ec GIT binary patch literal 3970 zcmZvf-A-Fq5QX=3r9O%yY(hgWdQqv#Mb)ZQ^aYHu;efHtF~pdMZ@a!(9_BbymJ^a$ zduGj=pS}6_pK0sby4|)XeKzf9eNNklcCPQZ{n&nJwr_>HX)FC}8JMx`6Mat(n5|Ct z^3%2Juw%o|>6?A8)3Y`bu4@l%F6^^@Cf>*JgFnZEN#C{yKSVOZR!*(Obgu7tU_hM3 z*(>pzwR?TxX{IN#7E=&gojp68#lm^#dL_#=cy(=|zn8+ob0Y@H^z#7SiOW=6d;Ph8 z{6YV>RMgktKo(XU zU9H3{?9>J;tV?yWCpT2Y69`8vR=slGgqAmf+lYr%fZx#9K2Ugkee*O9gqe_;^_~W@ z4-^XUO-!c@-O*W-Gg;m3Um}+mue;Zl&K;J&@HJ=7AU6 zXTkPaO1mETfXk<-N8+f;Rwq(BRB~X`fm=sk zuA*vGHLFpaZpHmYm7sU#2S%BjRfG%MkF#+39O`${VG+7}d%DZ#N3}Aa>7g2&*lP-y z)s_DAj-sBWvoX|vEesJoFSV185hLkL%wt89zxAY_nJ{PXd8c+(=}y^sXQnnF(l(dX zJ!)NHV^x0B|F7DebeX&<<5|nI?5(YGX4a}ZT}d;$3uY@}I&rv{A~i4GNr~9XPNi~3 zpcu7CKkR8&u-9aLUyGk2qnw+&*y=-cZD4W-?dVH!f0f^n^t)27Y!5cyCOYdymZ4^O zrkDRw=mt6wbh+ntseWTaU?E;@mp>G*mkwlesh<}EJ!;QAhy@kn#=-}cafZy;gHA6M zw-e%8pW0L4+`EOLy2%nB?i~Ekq1Uwl>eW^wIQagG%H|V|2xLZ?G`!X8Tl`>z1KTjVy zdj6;g_bMu~W%r8h-lT@r-^Qh;sW=!ib%uDV8~<8f*(2FMyl6Z{7m9KdHf~4P8&5R} zM5Fui_QX2We&7C-26WV=KEFqdd^2TcM7e0cwy$EC9W{v<#n=5o-pAX2eAFG)-`RWf zm=G$3XV?w93A|r1^_I&%-m9+U#bo&GL}ydKSE=%NV2fVV$^ApGKPsxLRGLjWp7hqr88P-{0J3=JhBHFX6(C zVzT{ar8m&Qo=dr{>cNZ3Tc$7|tP5E%d3dk)KiX9$f6F`b?B7W;4s++aa~s_2d{$y| z*grY@|NmOX%1edq=&hDFgtwQgMNFnWXVBB0o9I~{*hJg`r-S&Q+z;R6pZ8u)sk2Jv zJLyTUU(0{JA;{j_X{X5P+4(X Date: Wed, 13 Apr 2022 17:47:33 -0300 Subject: [PATCH 09/12] Corregidos los README --- README.md | 2 +- query_contract/README.md | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5f79bc72..3edafdda 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # exactly-private -Repo privado para intentar el challenge de Solidity +Repo privado para resolver el challenge de Solidity # Smart Contract Challenge diff --git a/query_contract/README.md b/query_contract/README.md index 97b39e8f..17f018a9 100644 --- a/query_contract/README.md +++ b/query_contract/README.md @@ -22,19 +22,21 @@ It will return data about the balance of the pool (total staked), of the rewards Example: ->>Exactly\exactly-private\query_contract> **py .\queryEthPool.py** ->Connected? **True** ->Balance of Wallet Test: 0.138237453946299695 ropstenETH ->Ahora vamos al contrato... ->**Pool Balance:** 0 ->**Rewards Balance:** 0 ->**Last Reward Multiplied:** 0 ->**Rewards count:** 0 ->**Last Reward Time:** 0 ->**Status:** 0 +> Exactly\exactly-private\query_contract> **py .\queryEthPool.py** +> Connected? **True** +> Balance of Wallet Test: 0.138237453946299695 ropstenETH +> Ahora vamos al contrato... +> **Pool Balance:** 0 +> **Rewards Balance:** 0 +> **Last Reward Multiplied:** 0 +> **Rewards count:** 0 +> **Last Reward Time:** 0 +> **Status:** 0 + _Contract verified at: https://ropsten.etherscan.io/address/0x40985d7c0357e31332860ffdea279e23ec0d5fc3#code_ +At the time being, numbers are 0 because some issues with Ropsten faucets. ### Interact with the contract From 9a3b1b6b285c65820ec11e471c2c6d3750582e3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Wed, 13 Apr 2022 17:49:23 -0300 Subject: [PATCH 10/12] Corregidos los README #2 --- query_contract/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/query_contract/README.md b/query_contract/README.md index 17f018a9..d2bfaf79 100644 --- a/query_contract/README.md +++ b/query_contract/README.md @@ -23,19 +23,29 @@ It will return data about the balance of the pool (total staked), of the rewards Example: > Exactly\exactly-private\query_contract> **py .\queryEthPool.py** +> > Connected? **True** +> > Balance of Wallet Test: 0.138237453946299695 ropstenETH +> > Ahora vamos al contrato... +> > **Pool Balance:** 0 +> > **Rewards Balance:** 0 +> > **Last Reward Multiplied:** 0 +> > **Rewards count:** 0 +> > **Last Reward Time:** 0 +> > **Status:** 0 _Contract verified at: https://ropsten.etherscan.io/address/0x40985d7c0357e31332860ffdea279e23ec0d5fc3#code_ + At the time being, numbers are 0 because some issues with Ropsten faucets. ### Interact with the contract From 149b62e9e6bdda5b714d6b139e543a8549f64e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Wed, 13 Apr 2022 18:11:07 -0300 Subject: [PATCH 11/12] Primer borrador funcional de todo el contrato --- build/contracts/ETHpool.json | 14737 +++++++++++++++++------------- build/contracts/Migrations.json | 514 +- query_contract/README.md | 15 +- query_contract/queryEthPool.py | 102 +- 4 files changed, 8614 insertions(+), 6754 deletions(-) diff --git a/build/contracts/ETHpool.json b/build/contracts/ETHpool.json index c1725379..e741d6d4 100644 --- a/build/contracts/ETHpool.json +++ b/build/contracts/ETHpool.json @@ -7,33 +7,86 @@ "type": "constructor" }, { + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "uint256", + "name": "_poolBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_rewards", + "type": "uint256" + } + ], + "name": "DepositRewardsEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, "internalType": "address", - "name": "", + "name": "_from", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" } ], - "name": "Team", - "outputs": [ + "name": "StakeEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { + "indexed": true, "internalType": "address", - "name": "_addr", + "name": "_to", "type": "address" }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "WithdrawEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "Team", + "outputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { - "internalType": "uint256", + "internalType": "bool", "name": "_role", - "type": "uint256" + "type": "bool" } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -62,7 +115,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -75,7 +129,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -86,6 +141,11 @@ "name": "poolBalance", "type": "uint256" }, + { + "internalType": "uint256", + "name": "rewardsBalance", + "type": "uint256" + }, { "internalType": "uint256", "name": "lastRewardMultiplied", @@ -108,7 +168,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -121,14 +182,16 @@ } ], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [], "name": "Stake", "outputs": [], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [], @@ -136,13 +199,27 @@ "outputs": [ { "internalType": "uint256", - "name": "", + "name": "sent", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "computeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawable", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, { "inputs": [], "name": "pausePool", @@ -163,11 +240,29 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "teamAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "role", + "type": "bool" + } + ], + "name": "modifyTeam", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DepositRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolbalance\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Team\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_role\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"UserList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_compositionAtStartStaking\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStaking\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardMultiplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardTime\",\"type\":\"uint256\"},{\"internalType\":\"enum ETHpool.State\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ETHpool.sol\":\"ETHpool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ETHpool.sol\":{\"keccak256\":\"0x21c35fc935685ce34885575eb43e5ee48db0f380391298f1fb92eaf8d18f170a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6be4a5197cff3deed460f9d664e1775162aed016c4920921122e8746fd1086d5\",\"dweb:/ipfs/QmcvWDG3gDvMBu1gaL3vZpAHrdDujqmZaPxn7sVtTopu5t\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000600260040160006101000a81548160ff02191690836002811115610081576100806100ab565b5b021790555060006002600001819055506000600260010181905550600060028001819055506100da565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610f16806100e96000396000f3fe6080604052600436106100915760003560e01c8063b9ba5f8b11610059578063b9ba5f8b14610131578063d515b1ce1461014f578063de20bc921461018e578063eb63a59e14610198578063f0228692146101d757610091565b806306fdde031461009657806311ec106b146100c15780632d42cf7d146100d857806357ea89b6146100ef578063aa09d5b71461011a575b600080fd5b3480156100a257600080fd5b506100ab610206565b6040516100b89190610930565b60405180910390f35b3480156100cd57600080fd5b506100d661023f565b005b3480156100e457600080fd5b506100ed6102f3565b005b3480156100fb57600080fd5b506101046103a6565b604051610111919061096b565b60405180910390f35b34801561012657600080fd5b5061012f610432565b005b6101396104e6565b604051610146919061096b565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906109e9565b6105f1565b60405161018593929190610a25565b60405180910390f35b6101966106c3565b005b3480156101a457600080fd5b506101bf60048036038101906101ba91906109e9565b61083c565b6040516101ce93929190610a63565b60405180910390f35b3480156101e357600080fd5b506101ec610866565b6040516101fd959493929190610b11565b60405180910390f35b6040518060400160405280600781526020017f455448506f6f6c0000000000000000000000000000000000000000000000000081525081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bd6565b60405180910390fd5b6000600260040160006101000a81548160ff021916908360028111156102ec576102eb610a9a565b5b0217905550565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90610bd6565b60405180910390fd5b60028060040160006101000a81548160ff0219169083600281111561039f5761039e610a9a565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290610c68565b60405180910390fd5b6001905090565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146104b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ad90610bd6565b60405180910390fd5b6001600260040160006101000a81548160ff021916908360028111156104df576104de610a9a565b5b0217905550565b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541461056c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056390610bd6565b60405180910390fd5b34600260000160008282546105819190610cb7565b92505081905550426002600301819055506002600001546018346105a59190610d0d565b6105af9190610d96565b600260010160008282546105c39190610cb7565b9250508190555060016002800160008282546105df9190610cb7565b92505081905550600260000154905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461063a90610df6565b80601f016020809104026020016040519081016040528092919081815260200182805461066690610df6565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050908060020154905083565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90610ec0565b60405180910390fd5b346002600001600082825461075c9190610cb7565b92505081905550346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506002600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16905085565b600081519050919050565b600082825260208201905092915050565b60005b838110156108d15780820151818401526020810190506108b6565b838111156108e0576000848401525b50505050565b6000601f19601f8301169050919050565b600061090282610897565b61090c81856108a2565b935061091c8185602086016108b3565b610925816108e6565b840191505092915050565b6000602082019050818103600083015261094a81846108f7565b905092915050565b6000819050919050565b61096581610952565b82525050565b6000602082019050610980600083018461095c565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109b68261098b565b9050919050565b6109c6816109ab565b81146109d157600080fd5b50565b6000813590506109e3816109bd565b92915050565b6000602082840312156109ff576109fe610986565b5b6000610a0d848285016109d4565b91505092915050565b610a1f816109ab565b82525050565b6000606082019050610a3a6000830186610a16565b8181036020830152610a4c81856108f7565b9050610a5b604083018461095c565b949350505050565b6000606082019050610a78600083018661095c565b610a85602083018561095c565b610a92604083018461095c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610ada57610ad9610a9a565b5b50565b6000819050610aeb82610ac9565b919050565b6000610afb82610add565b9050919050565b610b0b81610af0565b82525050565b600060a082019050610b26600083018861095c565b610b33602083018761095c565b610b40604083018661095c565b610b4d606083018561095c565b610b5a6080830184610b02565b9695505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000610bc06025836108a2565b9150610bcb82610b64565b604082019050919050565b60006020820190508181036000830152610bef81610bb3565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b6000610c526028836108a2565b9150610c5d82610bf6565b604082019050919050565b60006020820190508181036000830152610c8181610c45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610cc282610952565b9150610ccd83610952565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d0257610d01610c88565b5b828201905092915050565b6000610d1882610952565b9150610d2383610952565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610d5c57610d5b610c88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610da182610952565b9150610dac83610952565b925082610dbc57610dbb610d67565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e0e57607f821691505b60208210811415610e2257610e21610dc7565b5b50919050565b7f506c6561736520666972737420706572666f726d20612077697468647261776160008201527f6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d697360208201527f652e000000000000000000000000000000000000000000000000000000000000604082015250565b6000610eaa6042836108a2565b9150610eb582610e28565b606082019050919050565b60006020820190508181036000830152610ed981610e9d565b905091905056fea264697066735822122029873542725b901a85b72049058a28beb677dd6a77d382cf2dfe2ed80b323ce964736f6c634300080b0033", - "deployedBytecode": "0x6080604052600436106100915760003560e01c8063b9ba5f8b11610059578063b9ba5f8b14610131578063d515b1ce1461014f578063de20bc921461018e578063eb63a59e14610198578063f0228692146101d757610091565b806306fdde031461009657806311ec106b146100c15780632d42cf7d146100d857806357ea89b6146100ef578063aa09d5b71461011a575b600080fd5b3480156100a257600080fd5b506100ab610206565b6040516100b89190610930565b60405180910390f35b3480156100cd57600080fd5b506100d661023f565b005b3480156100e457600080fd5b506100ed6102f3565b005b3480156100fb57600080fd5b506101046103a6565b604051610111919061096b565b60405180910390f35b34801561012657600080fd5b5061012f610432565b005b6101396104e6565b604051610146919061096b565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906109e9565b6105f1565b60405161018593929190610a25565b60405180910390f35b6101966106c3565b005b3480156101a457600080fd5b506101bf60048036038101906101ba91906109e9565b61083c565b6040516101ce93929190610a63565b60405180910390f35b3480156101e357600080fd5b506101ec610866565b6040516101fd959493929190610b11565b60405180910390f35b6040518060400160405280600781526020017f455448506f6f6c0000000000000000000000000000000000000000000000000081525081565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bd6565b60405180910390fd5b6000600260040160006101000a81548160ff021916908360028111156102ec576102eb610a9a565b5b0217905550565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90610bd6565b60405180910390fd5b60028060040160006101000a81548160ff0219169083600281111561039f5761039e610a9a565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290610c68565b60405180910390fd5b6001905090565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154146104b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ad90610bd6565b60405180910390fd5b6001600260040160006101000a81548160ff021916908360028111156104df576104de610a9a565b5b0217905550565b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541461056c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056390610bd6565b60405180910390fd5b34600260000160008282546105819190610cb7565b92505081905550426002600301819055506002600001546018346105a59190610d0d565b6105af9190610d96565b600260010160008282546105c39190610cb7565b9250508190555060016002800160008282546105df9190610cb7565b92505081905550600260000154905090565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461063a90610df6565b80601f016020809104026020016040519081016040528092919081815260200182805461066690610df6565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050908060020154905083565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90610ec0565b60405180910390fd5b346002600001600082825461075c9190610cb7565b92505081905550346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506002600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16905085565b600081519050919050565b600082825260208201905092915050565b60005b838110156108d15780820151818401526020810190506108b6565b838111156108e0576000848401525b50505050565b6000601f19601f8301169050919050565b600061090282610897565b61090c81856108a2565b935061091c8185602086016108b3565b610925816108e6565b840191505092915050565b6000602082019050818103600083015261094a81846108f7565b905092915050565b6000819050919050565b61096581610952565b82525050565b6000602082019050610980600083018461095c565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109b68261098b565b9050919050565b6109c6816109ab565b81146109d157600080fd5b50565b6000813590506109e3816109bd565b92915050565b6000602082840312156109ff576109fe610986565b5b6000610a0d848285016109d4565b91505092915050565b610a1f816109ab565b82525050565b6000606082019050610a3a6000830186610a16565b8181036020830152610a4c81856108f7565b9050610a5b604083018461095c565b949350505050565b6000606082019050610a78600083018661095c565b610a85602083018561095c565b610a92604083018461095c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610ada57610ad9610a9a565b5b50565b6000819050610aeb82610ac9565b919050565b6000610afb82610add565b9050919050565b610b0b81610af0565b82525050565b600060a082019050610b26600083018861095c565b610b33602083018761095c565b610b40604083018661095c565b610b4d606083018561095c565b610b5a6080830184610b02565b9695505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000610bc06025836108a2565b9150610bcb82610b64565b604082019050919050565b60006020820190508181036000830152610bef81610bb3565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b6000610c526028836108a2565b9150610c5d82610bf6565b604082019050919050565b60006020820190508181036000830152610c8181610c45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610cc282610952565b9150610ccd83610952565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d0257610d01610c88565b5b828201905092915050565b6000610d1882610952565b9150610d2383610952565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610d5c57610d5b610c88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610da182610952565b9150610dac83610952565b925082610dbc57610dbb610d67565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e0e57607f821691505b60208210811415610e2257610e21610dc7565b5b50919050565b7f506c6561736520666972737420706572666f726d20612077697468647261776160008201527f6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d697360208201527f652e000000000000000000000000000000000000000000000000000000000000604082015250565b6000610eaa6042836108a2565b9150610eb582610e28565b606082019050919050565b60006020820190508181036000830152610ed981610e9d565b905091905056fea264697066735822122029873542725b901a85b72049058a28beb677dd6a77d382cf2dfe2ed80b323ce964736f6c634300080b0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_poolBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_rewards\",\"type\":\"uint256\"}],\"name\":\"DepositRewardsEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"StakeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"WithdrawEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DepositRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolbalance\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Team\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"_role\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"UserList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_compositionAtStartStaking\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStaking\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"sent\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawable\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teamAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"role\",\"type\":\"bool\"}],\"name\":\"modifyTeam\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardsBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardMultiplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardTime\",\"type\":\"uint256\"},{\"internalType\":\"enum ETHpool.State\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ETHpool.sol\":\"ETHpool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ETHpool.sol\":{\"keccak256\":\"0xdd4e422026de0b9930a62fdb43d49a980e4eccf12cc9d1322ccc572389d78432\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0d38d063ce9e2d4de30a5e18537bd27a3049dd64188e90c8335536fd607de31f\",\"dweb:/ipfs/QmW41kAnHq49YnHvUTztKWNWxJZ6vgKMp3jYryFEW3GqgR\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506000600260050160006101000a81548160ff02191690836002811115610094576100936100c9565b5b0217905550600060026000018190555060006002600101819055506000600280018190555060006002600301819055506100f8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b6b806101076000396000f3fe6080604052600436106100a75760003560e01c8063ac0679a611610064578063ac0679a614610172578063b9ba5f8b1461019b578063d515b1ce146101b9578063de20bc92146101f7578063eb63a59e14610201578063f022869214610240576100a7565b806306fdde03146100ac57806311ec106b146100d75780632d42cf7d146100ee57806357ea89b6146101055780637c1b7f8a14610130578063aa09d5b71461015b575b600080fd5b3480156100b857600080fd5b506100c1610270565b6040516100ce9190611301565b60405180910390f35b3480156100e357600080fd5b506100ec6102a9565b005b3480156100fa57600080fd5b5061010361036f565b005b34801561011157600080fd5b5061011a610434565b604051610127919061133c565b60405180910390f35b34801561013c57600080fd5b50610145610750565b604051610152919061133c565b60405180910390f35b34801561016757600080fd5b5061017061088a565b005b34801561017e57600080fd5b50610199600480360381019061019491906113f2565b610950565b005b6101a3610a44565b6040516101b0919061133c565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190611432565b610d2c565b6040516101ee92919061146e565b60405180910390f35b6101ff610de5565b005b34801561020d57600080fd5b5061022860048036038101906102239190611432565b611207565b6040516102379392919061149e565b60405180910390f35b34801561024c57600080fd5b50610255611231565b6040516102679695949392919061154c565b60405180910390f35b6040518060400160405280600781526020017f455448706f6f6c0000000000000000000000000000000000000000000000000081525081565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615151461033f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103369061161f565b60405180910390fd5b6000600260050160006101000a81548160ff02191690836002811115610368576103676114d5565b5b0217905550565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fc9061161f565b60405180910390fd5b60028060050160006101000a81548160ff0219169083600281111561042d5761042c6114d5565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116104b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b0906116b1565b60405180910390fd5b600160028111156104cd576104cc6114d5565b5b600260050160009054906101000a900460ff1660028111156104f2576104f16114d5565b5b03610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611743565b60405180910390fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000610582610750565b9050600081836105929190611792565b905082600260000160008282546105a991906117e8565b9250508190555081600260010160008282546105c591906117e8565b9250508190555060008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050156106ff576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055600282016000905550503373ffffffffffffffffffffffffffffffffffffffff167f5dba113b49cfa7c90315e8e604e6b506f7abcb909b01dcb19ec39005086e68fc826040516106ec919061133c565b60405180910390a280935050505061074d565b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600093505050505b90565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cc906116b1565b60405180910390fd5b678ac7230489e800006000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600280015461082f91906117e8565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461087b919061181c565b61088591906118a5565b905090565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061161f565b60405180910390fd5b6001600260050160006101000a81548160ff02191690836002811115610949576109486114d5565b5b0217905550565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161515146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd9061161f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505050565b600060011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad39061161f565b60405180910390fd5b60016002811115610af057610aef6114d5565b5b600260050160009054906101000a900460ff166002811115610b1557610b146114d5565b5b03610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90611743565b60405180910390fd5b600280811115610b6857610b676114d5565b5b600260050160009054906101000a900460ff166002811115610b8d57610b8c6114d5565b5b03610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc490611948565b60405180910390fd5b60003411610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c07906119b4565b60405180910390fd5b600060026000015414610ca35742600260040181905550600260000154678ac7230489e8000034610c41919061181c565b610c4b91906118a5565b600280016000828254610c5e9190611792565b925050819055503460026001016000828254610c7a9190611792565b92505081905550600160026003016000828254610c979190611792565b92505081905550610cde565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590611a20565b60405180910390fd5b7f277795e41191c7435317bb3d7b4884a9412d1a36f88b2a6053edbdf534a88e02600260000154600260010154604051610d19929190611a40565b60405180910390a1600260000154905090565b6001602052806000526040600020600091509050806000018054610d4f90611a98565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b90611a98565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b60016002811115610df957610df86114d5565b5b600260050160009054906101000a900460ff166002811115610e1e57610e1d6114d5565b5b03610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5590611743565b60405180910390fd5b600280811115610e7157610e706114d5565b5b600260050160009054906101000a900460ff166002811115610e9657610e956114d5565b5b03610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90611948565b60405180910390fd5b60003411610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090611b15565b60405180910390fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540361105957346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060028001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550346002600001600082825461104d9190611792565b92505081905550611176565b600034611064610750565b61106e9190611792565b9050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546110c19190611792565b9250508190555060028001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550806002600001600082825461116d9190611792565b92505081905550505b3373ffffffffffffffffffffffffffffffffffffffff167fb58845b0a64f92dd8d1ba04f905319d6be2021b57783b3d10155e7e36a84e1286000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040516111fd919061133c565b60405180910390a2565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b600081519050919050565b600082825260208201905092915050565b60005b838110156112a2578082015181840152602081019050611287565b838111156112b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006112d382611268565b6112dd8185611273565b93506112ed818560208601611284565b6112f6816112b7565b840191505092915050565b6000602082019050818103600083015261131b81846112c8565b905092915050565b6000819050919050565b61133681611323565b82525050565b6000602082019050611351600083018461132d565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113878261135c565b9050919050565b6113978161137c565b81146113a257600080fd5b50565b6000813590506113b48161138e565b92915050565b60008115159050919050565b6113cf816113ba565b81146113da57600080fd5b50565b6000813590506113ec816113c6565b92915050565b6000806040838503121561140957611408611357565b5b6000611417858286016113a5565b9250506020611428858286016113dd565b9150509250929050565b60006020828403121561144857611447611357565b5b6000611456848285016113a5565b91505092915050565b611468816113ba565b82525050565b6000604082019050818103600083015261148881856112c8565b9050611497602083018461145f565b9392505050565b60006060820190506114b3600083018661132d565b6114c0602083018561132d565b6114cd604083018461132d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110611515576115146114d5565b5b50565b600081905061152682611504565b919050565b600061153682611518565b9050919050565b6115468161152b565b82525050565b600060c082019050611561600083018961132d565b61156e602083018861132d565b61157b604083018761132d565b611588606083018661132d565b611595608083018561132d565b6115a260a083018461153d565b979650505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000611609602583611273565b9150611614826115ad565b604082019050919050565b60006020820190508181036000830152611638816115fc565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b600061169b602883611273565b91506116a68261163f565b604082019050919050565b600060208201905081810360008301526116ca8161168e565b9050919050565b7f455448706f6f6c206973207061757365642e2054686973206f7065726174696f60008201527f6e206973206e6f7420616c6c6f7765642e000000000000000000000000000000602082015250565b600061172d603183611273565b9150611738826116d1565b604082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061179d82611323565b91506117a883611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117dd576117dc611763565b5b828201905092915050565b60006117f382611323565b91506117fe83611323565b92508282101561181157611810611763565b5b828203905092915050565b600061182782611323565b915061183283611323565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561186b5761186a611763565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006118b082611323565b91506118bb83611323565b9250826118cb576118ca611876565b5b828204905092915050565b7f455448706f6f6c20697320656e6465642e204f6e6c792077697468647261776160008201527f6c7320616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b6000611932602b83611273565b915061193d826118d6565b604082019050919050565b6000602082019050818103600083015261196181611925565b9050919050565b7f52657761726473206d7573742062652067726561746572207468616e20302e00600082015250565b600061199e601f83611273565b91506119a982611968565b602082019050919050565b600060208201905081810360008301526119cd81611991565b9050919050565b7f506f6f6c20697320656d70747921000000000000000000000000000000000000600082015250565b6000611a0a600e83611273565b9150611a15826119d4565b602082019050919050565b60006020820190508181036000830152611a39816119fd565b9050919050565b6000604082019050611a55600083018561132d565b611a62602083018461132d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ab057607f821691505b602082108103611ac357611ac2611a69565b5b50919050565b7f5374616b65206d7573742062652067726561746572207468616e20302e000000600082015250565b6000611aff601d83611273565b9150611b0a82611ac9565b602082019050919050565b60006020820190508181036000830152611b2e81611af2565b905091905056fea26469706673582212205b03ba226102038fc2feae40772e275928588c8426f9a74e6fc0d25ad32ffda364736f6c634300080d0033", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c8063ac0679a611610064578063ac0679a614610172578063b9ba5f8b1461019b578063d515b1ce146101b9578063de20bc92146101f7578063eb63a59e14610201578063f022869214610240576100a7565b806306fdde03146100ac57806311ec106b146100d75780632d42cf7d146100ee57806357ea89b6146101055780637c1b7f8a14610130578063aa09d5b71461015b575b600080fd5b3480156100b857600080fd5b506100c1610270565b6040516100ce9190611301565b60405180910390f35b3480156100e357600080fd5b506100ec6102a9565b005b3480156100fa57600080fd5b5061010361036f565b005b34801561011157600080fd5b5061011a610434565b604051610127919061133c565b60405180910390f35b34801561013c57600080fd5b50610145610750565b604051610152919061133c565b60405180910390f35b34801561016757600080fd5b5061017061088a565b005b34801561017e57600080fd5b50610199600480360381019061019491906113f2565b610950565b005b6101a3610a44565b6040516101b0919061133c565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190611432565b610d2c565b6040516101ee92919061146e565b60405180910390f35b6101ff610de5565b005b34801561020d57600080fd5b5061022860048036038101906102239190611432565b611207565b6040516102379392919061149e565b60405180910390f35b34801561024c57600080fd5b50610255611231565b6040516102679695949392919061154c565b60405180910390f35b6040518060400160405280600781526020017f455448706f6f6c0000000000000000000000000000000000000000000000000081525081565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615151461033f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103369061161f565b60405180910390fd5b6000600260050160006101000a81548160ff02191690836002811115610368576103676114d5565b5b0217905550565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fc9061161f565b60405180910390fd5b60028060050160006101000a81548160ff0219169083600281111561042d5761042c6114d5565b5b0217905550565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116104b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b0906116b1565b60405180910390fd5b600160028111156104cd576104cc6114d5565b5b600260050160009054906101000a900460ff1660028111156104f2576104f16114d5565b5b03610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611743565b60405180910390fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000610582610750565b9050600081836105929190611792565b905082600260000160008282546105a991906117e8565b9250508190555081600260010160008282546105c591906117e8565b9250508190555060008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050156106ff576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160009055600282016000905550503373ffffffffffffffffffffffffffffffffffffffff167f5dba113b49cfa7c90315e8e604e6b506f7abcb909b01dcb19ec39005086e68fc826040516106ec919061133c565b60405180910390a280935050505061074d565b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600093505050505b90565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cc906116b1565b60405180910390fd5b678ac7230489e800006000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600280015461082f91906117e8565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461087b919061181c565b61088591906118a5565b905090565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061161f565b60405180910390fd5b6001600260050160006101000a81548160ff02191690836002811115610949576109486114d5565b5b0217905550565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161515146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd9061161f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505050565b600060011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad39061161f565b60405180910390fd5b60016002811115610af057610aef6114d5565b5b600260050160009054906101000a900460ff166002811115610b1557610b146114d5565b5b03610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90611743565b60405180910390fd5b600280811115610b6857610b676114d5565b5b600260050160009054906101000a900460ff166002811115610b8d57610b8c6114d5565b5b03610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc490611948565b60405180910390fd5b60003411610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c07906119b4565b60405180910390fd5b600060026000015414610ca35742600260040181905550600260000154678ac7230489e8000034610c41919061181c565b610c4b91906118a5565b600280016000828254610c5e9190611792565b925050819055503460026001016000828254610c7a9190611792565b92505081905550600160026003016000828254610c979190611792565b92505081905550610cde565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590611a20565b60405180910390fd5b7f277795e41191c7435317bb3d7b4884a9412d1a36f88b2a6053edbdf534a88e02600260000154600260010154604051610d19929190611a40565b60405180910390a1600260000154905090565b6001602052806000526040600020600091509050806000018054610d4f90611a98565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b90611a98565b8015610dc85780601f10610d9d57610100808354040283529160200191610dc8565b820191906000526020600020905b815481529060010190602001808311610dab57829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b60016002811115610df957610df86114d5565b5b600260050160009054906101000a900460ff166002811115610e1e57610e1d6114d5565b5b03610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5590611743565b60405180910390fd5b600280811115610e7157610e706114d5565b5b600260050160009054906101000a900460ff166002811115610e9657610e956114d5565b5b03610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90611948565b60405180910390fd5b60003411610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090611b15565b60405180910390fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540361105957346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060028001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550346002600001600082825461104d9190611792565b92505081905550611176565b600034611064610750565b61106e9190611792565b9050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546110c19190611792565b9250508190555060028001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550806002600001600082825461116d9190611792565b92505081905550505b3373ffffffffffffffffffffffffffffffffffffffff167fb58845b0a64f92dd8d1ba04f905319d6be2021b57783b3d10155e7e36a84e1286000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040516111fd919061133c565b60405180910390a2565b60006020528060005260406000206000915090508060000154908060010154908060020154905083565b60028060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b600081519050919050565b600082825260208201905092915050565b60005b838110156112a2578082015181840152602081019050611287565b838111156112b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006112d382611268565b6112dd8185611273565b93506112ed818560208601611284565b6112f6816112b7565b840191505092915050565b6000602082019050818103600083015261131b81846112c8565b905092915050565b6000819050919050565b61133681611323565b82525050565b6000602082019050611351600083018461132d565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113878261135c565b9050919050565b6113978161137c565b81146113a257600080fd5b50565b6000813590506113b48161138e565b92915050565b60008115159050919050565b6113cf816113ba565b81146113da57600080fd5b50565b6000813590506113ec816113c6565b92915050565b6000806040838503121561140957611408611357565b5b6000611417858286016113a5565b9250506020611428858286016113dd565b9150509250929050565b60006020828403121561144857611447611357565b5b6000611456848285016113a5565b91505092915050565b611468816113ba565b82525050565b6000604082019050818103600083015261148881856112c8565b9050611497602083018461145f565b9392505050565b60006060820190506114b3600083018661132d565b6114c0602083018561132d565b6114cd604083018461132d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110611515576115146114d5565b5b50565b600081905061152682611504565b919050565b600061153682611518565b9050919050565b6115468161152b565b82525050565b600060c082019050611561600083018961132d565b61156e602083018861132d565b61157b604083018761132d565b611588606083018661132d565b611595608083018561132d565b6115a260a083018461153d565b979650505050505050565b7f4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6360008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b6000611609602583611273565b9150611614826115ad565b604082019050919050565b60006020820190508181036000830152611638816115fc565b9050919050565b7f4f6e6c79207374616b65686f6c646572732063616e207573652074686973206660008201527f756e6374696f6e2e000000000000000000000000000000000000000000000000602082015250565b600061169b602883611273565b91506116a68261163f565b604082019050919050565b600060208201905081810360008301526116ca8161168e565b9050919050565b7f455448706f6f6c206973207061757365642e2054686973206f7065726174696f60008201527f6e206973206e6f7420616c6c6f7765642e000000000000000000000000000000602082015250565b600061172d603183611273565b9150611738826116d1565b604082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061179d82611323565b91506117a883611323565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117dd576117dc611763565b5b828201905092915050565b60006117f382611323565b91506117fe83611323565b92508282101561181157611810611763565b5b828203905092915050565b600061182782611323565b915061183283611323565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561186b5761186a611763565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006118b082611323565b91506118bb83611323565b9250826118cb576118ca611876565b5b828204905092915050565b7f455448706f6f6c20697320656e6465642e204f6e6c792077697468647261776160008201527f6c7320616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b6000611932602b83611273565b915061193d826118d6565b604082019050919050565b6000602082019050818103600083015261196181611925565b9050919050565b7f52657761726473206d7573742062652067726561746572207468616e20302e00600082015250565b600061199e601f83611273565b91506119a982611968565b602082019050919050565b600060208201905081810360008301526119cd81611991565b9050919050565b7f506f6f6c20697320656d70747921000000000000000000000000000000000000600082015250565b6000611a0a600e83611273565b9150611a15826119d4565b602082019050919050565b60006020820190508181036000830152611a39816119fd565b9050919050565b6000604082019050611a55600083018561132d565b611a62602083018461132d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ab057607f821691505b602082108103611ac357611ac2611a69565b5b50919050565b7f5374616b65206d7573742062652067726561746572207468616e20302e000000600082015250565b6000611aff601d83611273565b9150611b0a82611ac9565b602082019050919050565b60006020820190508181036000830152611b2e81611af2565b905091905056fea26469706673582212205b03ba226102038fc2feae40772e275928588c8426f9a74e6fc0d25ad32ffda364736f6c634300080d0033", "immutableReferences": {}, "generatedSources": [ { @@ -285,7 +380,7 @@ { "ast": { "nodeType": "YulBlock", - "src": "0:10392:2", + "src": "0:15650:2", "statements": [ { "body": { @@ -1774,269 +1869,198 @@ { "body": { "nodeType": "YulBlock", - "src": "2732:263:2", + "src": "2708:48:2", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "2778:83:2", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "2780:77:2" - }, - "nodeType": "YulFunctionCall", - "src": "2780:79:2" - }, - "nodeType": "YulExpressionStatement", - "src": "2780:79:2" - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "2718:32:2", + "value": { "arguments": [ { "arguments": [ { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2753:7:2" - }, - { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "2762:9:2" + "src": "2743:5:2" } ], "functionName": { - "name": "sub", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "2749:3:2" + "src": "2736:6:2" }, "nodeType": "YulFunctionCall", - "src": "2749:23:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2774:2:2", - "type": "", - "value": "32" + "src": "2736:13:2" } ], "functionName": { - "name": "slt", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "2745:3:2" + "src": "2729:6:2" }, "nodeType": "YulFunctionCall", - "src": "2745:32:2" + "src": "2729:21:2" }, - "nodeType": "YulIf", - "src": "2742:119:2" - }, - { - "nodeType": "YulBlock", - "src": "2871:117:2", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2886:15:2", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2900:1:2", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2890:6:2", - "type": "" - } - ] - }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "2915:63:2", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2950:9:2" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2961:6:2" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2946:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "2946:22:2" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2970:7:2" - } - ], - "functionName": { - "name": "abi_decode_t_address", - "nodeType": "YulIdentifier", - "src": "2925:20:2" - }, - "nodeType": "YulFunctionCall", - "src": "2925:53:2" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2915:6:2" - } - ] + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2718:7:2" } ] } ] }, - "name": "abi_decode_tuple_t_address", + "name": "cleanup_t_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2702:9:2", - "type": "" - }, - { - "name": "dataEnd", + "name": "value", "nodeType": "YulTypedName", - "src": "2713:7:2", + "src": "2690:5:2", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "2725:6:2", + "src": "2700:7:2", "type": "" } ], - "src": "2666:329:2" + "src": "2666:90:2" }, { "body": { "nodeType": "YulBlock", - "src": "3066:53:2", + "src": "2802:76:2", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "2856:16:2", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3083:3:2" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2865:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2868:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2858:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "2858:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "2858:12:2" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "3106:5:2" + "src": "2825:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2847:5:2" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "2832:14:2" + }, + "nodeType": "YulFunctionCall", + "src": "2832:21:2" } ], "functionName": { - "name": "cleanup_t_address", + "name": "eq", "nodeType": "YulIdentifier", - "src": "3088:17:2" + "src": "2822:2:2" }, "nodeType": "YulFunctionCall", - "src": "3088:24:2" + "src": "2822:32:2" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "3076:6:2" + "src": "2815:6:2" }, "nodeType": "YulFunctionCall", - "src": "3076:37:2" + "src": "2815:40:2" }, - "nodeType": "YulExpressionStatement", - "src": "3076:37:2" + "nodeType": "YulIf", + "src": "2812:60:2" } ] }, - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "validator_revert_t_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "3054:5:2", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "3061:3:2", + "src": "2795:5:2", "type": "" } ], - "src": "3001:118:2" + "src": "2762:116:2" }, { "body": { "nodeType": "YulBlock", - "src": "3299:359:2", + "src": "2933:84:2", "statements": [ { "nodeType": "YulAssignment", - "src": "3309:26:2", + "src": "2943:29:2", "value": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "3321:9:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3332:2:2", - "type": "", - "value": "96" + "src": "2965:6:2" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "3317:3:2" + "src": "2952:12:2" }, "nodeType": "YulFunctionCall", - "src": "3317:18:2" + "src": "2952:20:2" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "3309:4:2" + "src": "2943:5:2" } ] }, @@ -2044,414 +2068,722 @@ "expression": { "arguments": [ { - "name": "value0", + "name": "value", "nodeType": "YulIdentifier", - "src": "3389:6:2" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3402:9:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3413:1:2", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3398:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "3398:17:2" + "src": "3005:5:2" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "validator_revert_t_bool", "nodeType": "YulIdentifier", - "src": "3345:43:2" + "src": "2981:23:2" }, "nodeType": "YulFunctionCall", - "src": "3345:71:2" + "src": "2981:30:2" }, "nodeType": "YulExpressionStatement", - "src": "3345:71:2" - }, + "src": "2981:30:2" + } + ] + }, + "name": "abi_decode_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2911:6:2", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2919:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2927:5:2", + "type": "" + } + ], + "src": "2884:133:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3103:388:2", + "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "3149:83:2", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "3437:9:2" + "src": "3151:77:2" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3448:2:2", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3433:3:2" + "nodeType": "YulFunctionCall", + "src": "3151:79:2" }, - "nodeType": "YulFunctionCall", - "src": "3433:18:2" - }, + "nodeType": "YulExpressionStatement", + "src": "3151:79:2" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { - "name": "tail", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "3457:4:2" + "src": "3124:7:2" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "3463:9:2" + "src": "3133:9:2" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "3453:3:2" + "src": "3120:3:2" }, "nodeType": "YulFunctionCall", - "src": "3453:20:2" + "src": "3120:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3145:2:2", + "type": "", + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "3426:6:2" + "src": "3116:3:2" }, "nodeType": "YulFunctionCall", - "src": "3426:48:2" + "src": "3116:32:2" }, - "nodeType": "YulExpressionStatement", - "src": "3426:48:2" + "nodeType": "YulIf", + "src": "3113:119:2" }, { - "nodeType": "YulAssignment", - "src": "3483:86:2", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3555:6:2" + "nodeType": "YulBlock", + "src": "3242:117:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3257:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3271:1:2", + "type": "", + "value": "0" }, - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3564:4:2" - } - ], - "functionName": { - "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "3491:63:2" + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3261:6:2", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "3491:78:2" - }, - "variableNames": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3483:4:2" + "nodeType": "YulAssignment", + "src": "3286:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3321:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3332:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3317:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3317:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3341:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "3296:20:2" + }, + "nodeType": "YulFunctionCall", + "src": "3296:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3286:6:2" + } + ] } ] }, { - "expression": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "3623:6:2" + "nodeType": "YulBlock", + "src": "3369:115:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3384:16:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3398:2:2", + "type": "", + "value": "32" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3388:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3414:60:2", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3636:9:2" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3446:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3457:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3442:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3442:22:2" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3647:2:2", - "type": "", - "value": "64" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3466:7:2" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_bool", "nodeType": "YulIdentifier", - "src": "3632:3:2" + "src": "3424:17:2" }, "nodeType": "YulFunctionCall", - "src": "3632:18:2" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "3579:43:2" - }, - "nodeType": "YulFunctionCall", - "src": "3579:72:2" - }, - "nodeType": "YulExpressionStatement", - "src": "3579:72:2" + "src": "3424:50:2" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3414:6:2" + } + ] + } + ] } ] }, - "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256__to_t_address_t_string_memory_ptr_t_uint256__fromStack_reversed", + "name": "abi_decode_tuple_t_addresst_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "3255:9:2", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3267:6:2", + "src": "3065:9:2", "type": "" }, { - "name": "value1", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "3275:6:2", + "src": "3076:7:2", "type": "" - }, + } + ], + "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", - "src": "3283:6:2", + "src": "3088:6:2", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "tail", + "name": "value1", "nodeType": "YulTypedName", - "src": "3294:4:2", + "src": "3096:6:2", "type": "" } ], - "src": "3125:533:2" + "src": "3023:468:2" }, { "body": { "nodeType": "YulBlock", - "src": "3818:288:2", + "src": "3563:263:2", "statements": [ { - "nodeType": "YulAssignment", - "src": "3828:26:2", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3840:9:2" - }, + "body": { + "nodeType": "YulBlock", + "src": "3609:83:2", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3851:2:2", - "type": "", - "value": "96" + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3611:77:2" + }, + "nodeType": "YulFunctionCall", + "src": "3611:79:2" + }, + "nodeType": "YulExpressionStatement", + "src": "3611:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3584:7:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3593:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3580:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3580:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3605:2:2", + "type": "", + "value": "32" } ], "functionName": { - "name": "add", + "name": "slt", "nodeType": "YulIdentifier", - "src": "3836:3:2" + "src": "3576:3:2" }, "nodeType": "YulFunctionCall", - "src": "3836:18:2" + "src": "3576:32:2" }, - "variableNames": [ + "nodeType": "YulIf", + "src": "3573:119:2" + }, + { + "nodeType": "YulBlock", + "src": "3702:117:2", + "statements": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3828:4:2" + "nodeType": "YulVariableDeclaration", + "src": "3717:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3731:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3721:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3746:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3781:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3792:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3777:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3777:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3801:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "3756:20:2" + }, + "nodeType": "YulFunctionCall", + "src": "3756:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3746:6:2" + } + ] } ] - }, + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3533:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3544:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3556:6:2", + "type": "" + } + ], + "src": "3497:329:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3891:50:2", + "statements": [ { "expression": { "arguments": [ { - "name": "value0", + "name": "pos", "nodeType": "YulIdentifier", - "src": "3908:6:2" + "src": "3908:3:2" }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "3921:9:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3932:1:2", - "type": "", - "value": "0" + "src": "3928:5:2" } ], "functionName": { - "name": "add", + "name": "cleanup_t_bool", "nodeType": "YulIdentifier", - "src": "3917:3:2" + "src": "3913:14:2" }, "nodeType": "YulFunctionCall", - "src": "3917:17:2" + "src": "3913:21:2" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "3864:43:2" + "src": "3901:6:2" }, "nodeType": "YulFunctionCall", - "src": "3864:71:2" + "src": "3901:34:2" }, "nodeType": "YulExpressionStatement", - "src": "3864:71:2" - }, + "src": "3901:34:2" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3879:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3886:3:2", + "type": "" + } + ], + "src": "3832:109:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4087:271:2", + "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "4097:26:2", + "value": { "arguments": [ { - "name": "value1", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "3989:6:2" + "src": "4109:9:2" }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4120:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4105:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4105:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4097:4:2" + } + ] + }, + { + "expression": { + "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4002:9:2" + "src": "4144:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4013:2:2", + "src": "4155:1:2", "type": "", - "value": "32" + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "3998:3:2" + "src": "4140:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4140:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4163:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4169:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4159:3:2" }, "nodeType": "YulFunctionCall", - "src": "3998:18:2" + "src": "4159:20:2" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "3945:43:2" + "src": "4133:6:2" }, "nodeType": "YulFunctionCall", - "src": "3945:72:2" + "src": "4133:47:2" }, "nodeType": "YulExpressionStatement", - "src": "3945:72:2" + "src": "4133:47:2" + }, + { + "nodeType": "YulAssignment", + "src": "4189:86:2", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4261:6:2" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4270:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4197:63:2" + }, + "nodeType": "YulFunctionCall", + "src": "4197:78:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4189:4:2" + } + ] }, { "expression": { "arguments": [ { - "name": "value2", + "name": "value1", "nodeType": "YulIdentifier", - "src": "4071:6:2" + "src": "4323:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4084:9:2" + "src": "4336:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4095:2:2", + "src": "4347:2:2", "type": "", - "value": "64" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "4080:3:2" + "src": "4332:3:2" }, "nodeType": "YulFunctionCall", - "src": "4080:18:2" + "src": "4332:18:2" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulIdentifier", - "src": "4027:43:2" + "src": "4285:37:2" }, "nodeType": "YulFunctionCall", - "src": "4027:72:2" + "src": "4285:66:2" }, "nodeType": "YulExpressionStatement", - "src": "4027:72:2" + "src": "4285:66:2" } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_string_memory_ptr_t_bool__to_t_string_memory_ptr_t_bool__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "3774:9:2", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3786:6:2", + "src": "4051:9:2", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "3794:6:2", + "src": "4063:6:2", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "3802:6:2", + "src": "4071:6:2", "type": "" } ], @@ -2459,31 +2791,239 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "3813:4:2", + "src": "4082:4:2", "type": "" } ], - "src": "3664:442:2" + "src": "3947:411:2" }, { "body": { "nodeType": "YulBlock", - "src": "4140:152:2", + "src": "4518:288:2", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "4528:26:2", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4157:1:2", - "type": "", + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4540:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4551:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4536:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4536:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4528:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4608:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4621:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4632:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4617:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4617:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "4564:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "4564:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4564:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4689:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4702:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4713:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4698:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4698:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "4645:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "4645:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4645:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4771:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4784:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4795:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4780:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "4780:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "4727:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "4727:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "4727:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4474:9:2", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4486:6:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4494:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4502:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4513:4:2", + "type": "" + } + ], + "src": "4364:442:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4840:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4857:1:2", + "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4160:77:2", + "src": "4860:77:2", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -2491,13 +3031,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4150:6:2" + "src": "4850:6:2" }, "nodeType": "YulFunctionCall", - "src": "4150:88:2" + "src": "4850:88:2" }, "nodeType": "YulExpressionStatement", - "src": "4150:88:2" + "src": "4850:88:2" }, { "expression": { @@ -2505,14 +3045,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "4254:1:2", + "src": "4954:1:2", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4257:4:2", + "src": "4957:4:2", "type": "", "value": "0x21" } @@ -2520,13 +3060,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4247:6:2" + "src": "4947:6:2" }, "nodeType": "YulFunctionCall", - "src": "4247:15:2" + "src": "4947:15:2" }, "nodeType": "YulExpressionStatement", - "src": "4247:15:2" + "src": "4947:15:2" }, { "expression": { @@ -2534,14 +3074,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "4278:1:2", + "src": "4978:1:2", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4281:4:2", + "src": "4981:4:2", "type": "", "value": "0x24" } @@ -2549,29 +3089,29 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "4271:6:2" + "src": "4971:6:2" }, "nodeType": "YulFunctionCall", - "src": "4271:15:2" + "src": "4971:15:2" }, "nodeType": "YulExpressionStatement", - "src": "4271:15:2" + "src": "4971:15:2" } ] }, "name": "panic_error_0x21", "nodeType": "YulFunctionDefinition", - "src": "4112:180:2" + "src": "4812:180:2" }, { "body": { "nodeType": "YulBlock", - "src": "4348:62:2", + "src": "5048:62:2", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "4382:22:2", + "src": "5082:22:2", "statements": [ { "expression": { @@ -2579,13 +3119,13 @@ "functionName": { "name": "panic_error_0x21", "nodeType": "YulIdentifier", - "src": "4384:16:2" + "src": "5084:16:2" }, "nodeType": "YulFunctionCall", - "src": "4384:18:2" + "src": "5084:18:2" }, "nodeType": "YulExpressionStatement", - "src": "4384:18:2" + "src": "5084:18:2" } ] }, @@ -2596,12 +3136,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "4371:5:2" + "src": "5071:5:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4378:1:2", + "src": "5078:1:2", "type": "", "value": "3" } @@ -2609,22 +3149,22 @@ "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "4368:2:2" + "src": "5068:2:2" }, "nodeType": "YulFunctionCall", - "src": "4368:12:2" + "src": "5068:12:2" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "4361:6:2" + "src": "5061:6:2" }, "nodeType": "YulFunctionCall", - "src": "4361:20:2" + "src": "5061:20:2" }, "nodeType": "YulIf", - "src": "4358:46:2" + "src": "5058:46:2" } ] }, @@ -2634,30 +3174,30 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4341:5:2", + "src": "5041:5:2", "type": "" } ], - "src": "4298:112:2" + "src": "4998:112:2" }, { "body": { "nodeType": "YulBlock", - "src": "4468:73:2", + "src": "5168:73:2", "statements": [ { "nodeType": "YulAssignment", - "src": "4478:16:2", + "src": "5178:16:2", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "4489:5:2" + "src": "5189:5:2" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "4478:7:2" + "src": "5178:7:2" } ] }, @@ -2667,19 +3207,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "4529:5:2" + "src": "5229:5:2" } ], "functionName": { "name": "validator_assert_t_enum$_State_$8", "nodeType": "YulIdentifier", - "src": "4495:33:2" + "src": "5195:33:2" }, "nodeType": "YulFunctionCall", - "src": "4495:40:2" + "src": "5195:40:2" }, "nodeType": "YulExpressionStatement", - "src": "4495:40:2" + "src": "5195:40:2" } ] }, @@ -2689,7 +3229,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4450:5:2", + "src": "5150:5:2", "type": "" } ], @@ -2697,41 +3237,41 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "4460:7:2", + "src": "5160:7:2", "type": "" } ], - "src": "4416:125:2" + "src": "5116:125:2" }, { "body": { "nodeType": "YulBlock", - "src": "4612:60:2", + "src": "5312:60:2", "statements": [ { "nodeType": "YulAssignment", - "src": "4622:44:2", + "src": "5322:44:2", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4660:5:2" + "src": "5360:5:2" } ], "functionName": { "name": "cleanup_t_enum$_State_$8", "nodeType": "YulIdentifier", - "src": "4635:24:2" + "src": "5335:24:2" }, "nodeType": "YulFunctionCall", - "src": "4635:31:2" + "src": "5335:31:2" }, "variableNames": [ { "name": "converted", "nodeType": "YulIdentifier", - "src": "4622:9:2" + "src": "5322:9:2" } ] } @@ -2743,7 +3283,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4592:5:2", + "src": "5292:5:2", "type": "" } ], @@ -2751,16 +3291,16 @@ { "name": "converted", "nodeType": "YulTypedName", - "src": "4602:9:2", + "src": "5302:9:2", "type": "" } ], - "src": "4547:125:2" + "src": "5247:125:2" }, { "body": { "nodeType": "YulBlock", - "src": "4748:71:2", + "src": "5448:71:2", "statements": [ { "expression": { @@ -2768,35 +3308,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "4765:3:2" + "src": "5465:3:2" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4806:5:2" + "src": "5506:5:2" } ], "functionName": { "name": "convert_t_enum$_State_$8_to_t_uint8", "nodeType": "YulIdentifier", - "src": "4770:35:2" + "src": "5470:35:2" }, "nodeType": "YulFunctionCall", - "src": "4770:42:2" + "src": "5470:42:2" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4758:6:2" + "src": "5458:6:2" }, "nodeType": "YulFunctionCall", - "src": "4758:55:2" + "src": "5458:55:2" }, "nodeType": "YulExpressionStatement", - "src": "4758:55:2" + "src": "5458:55:2" } ] }, @@ -2806,54 +3346,54 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4736:5:2", + "src": "5436:5:2", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "4743:3:2", + "src": "5443:3:2", "type": "" } ], - "src": "4678:141:2" + "src": "5378:141:2" }, { "body": { "nodeType": "YulBlock", - "src": "5040:459:2", + "src": "5768:542:2", "statements": [ { "nodeType": "YulAssignment", - "src": "5050:27:2", + "src": "5778:27:2", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5062:9:2" + "src": "5790:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5073:3:2", + "src": "5801:3:2", "type": "", - "value": "160" + "value": "192" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5058:3:2" + "src": "5786:3:2" }, "nodeType": "YulFunctionCall", - "src": "5058:19:2" + "src": "5786:19:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "5050:4:2" + "src": "5778:4:2" } ] }, @@ -2863,19 +3403,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "5131:6:2" + "src": "5859:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5144:9:2" + "src": "5872:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5155:1:2", + "src": "5883:1:2", "type": "", "value": "0" } @@ -2883,22 +3423,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5140:3:2" + "src": "5868:3:2" }, "nodeType": "YulFunctionCall", - "src": "5140:17:2" + "src": "5868:17:2" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "5087:43:2" + "src": "5815:43:2" }, "nodeType": "YulFunctionCall", - "src": "5087:71:2" + "src": "5815:71:2" }, "nodeType": "YulExpressionStatement", - "src": "5087:71:2" + "src": "5815:71:2" }, { "expression": { @@ -2906,19 +3446,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "5212:6:2" + "src": "5940:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5225:9:2" + "src": "5953:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5236:2:2", + "src": "5964:2:2", "type": "", "value": "32" } @@ -2926,22 +3466,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5221:3:2" + "src": "5949:3:2" }, "nodeType": "YulFunctionCall", - "src": "5221:18:2" + "src": "5949:18:2" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "5168:43:2" + "src": "5896:43:2" }, "nodeType": "YulFunctionCall", - "src": "5168:72:2" + "src": "5896:72:2" }, "nodeType": "YulExpressionStatement", - "src": "5168:72:2" + "src": "5896:72:2" }, { "expression": { @@ -2949,19 +3489,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "5294:6:2" + "src": "6022:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5307:9:2" + "src": "6035:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5318:2:2", + "src": "6046:2:2", "type": "", "value": "64" } @@ -2969,22 +3509,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5303:3:2" + "src": "6031:3:2" }, "nodeType": "YulFunctionCall", - "src": "5303:18:2" + "src": "6031:18:2" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "5250:43:2" + "src": "5978:43:2" }, "nodeType": "YulFunctionCall", - "src": "5250:72:2" + "src": "5978:72:2" }, "nodeType": "YulExpressionStatement", - "src": "5250:72:2" + "src": "5978:72:2" }, { "expression": { @@ -2992,19 +3532,19 @@ { "name": "value3", "nodeType": "YulIdentifier", - "src": "5376:6:2" + "src": "6104:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5389:9:2" + "src": "6117:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5400:2:2", + "src": "6128:2:2", "type": "", "value": "96" } @@ -3012,22 +3552,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5385:3:2" + "src": "6113:3:2" }, "nodeType": "YulFunctionCall", - "src": "5385:18:2" + "src": "6113:18:2" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "5332:43:2" + "src": "6060:43:2" }, "nodeType": "YulFunctionCall", - "src": "5332:72:2" + "src": "6060:72:2" }, "nodeType": "YulExpressionStatement", - "src": "5332:72:2" + "src": "6060:72:2" }, { "expression": { @@ -3035,19 +3575,19 @@ { "name": "value4", "nodeType": "YulIdentifier", - "src": "5463:6:2" + "src": "6186:6:2" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5476:9:2" + "src": "6199:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5487:3:2", + "src": "6210:3:2", "type": "", "value": "128" } @@ -3055,62 +3595,111 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5472:3:2" + "src": "6195:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "6195:19:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "6142:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "6142:73:2" + }, + "nodeType": "YulExpressionStatement", + "src": "6142:73:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "6274:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6287:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6298:3:2", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6283:3:2" }, "nodeType": "YulFunctionCall", - "src": "5472:19:2" + "src": "6283:19:2" } ], "functionName": { "name": "abi_encode_t_enum$_State_$8_to_t_uint8_fromStack", "nodeType": "YulIdentifier", - "src": "5414:48:2" + "src": "6225:48:2" }, "nodeType": "YulFunctionCall", - "src": "5414:78:2" + "src": "6225:78:2" }, "nodeType": "YulExpressionStatement", - "src": "5414:78:2" + "src": "6225:78:2" } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed", + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "4980:9:2", + "src": "5700:9:2", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5712:6:2", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "4992:6:2", + "src": "5720:6:2", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "5000:6:2", + "src": "5728:6:2", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "5008:6:2", + "src": "5736:6:2", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "5016:6:2", + "src": "5744:6:2", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "5024:6:2", + "src": "5752:6:2", "type": "" } ], @@ -3118,16 +3707,16 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "5035:4:2", + "src": "5763:4:2", "type": "" } ], - "src": "4825:674:2" + "src": "5525:785:2" }, { "body": { "nodeType": "YulBlock", - "src": "5611:118:2", + "src": "6422:118:2", "statements": [ { "expression": { @@ -3137,12 +3726,12 @@ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "5633:6:2" + "src": "6444:6:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5641:1:2", + "src": "6452:1:2", "type": "", "value": "0" } @@ -3150,16 +3739,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5629:3:2" + "src": "6440:3:2" }, "nodeType": "YulFunctionCall", - "src": "5629:14:2" + "src": "6440:14:2" }, { "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e63", "kind": "string", "nodeType": "YulLiteral", - "src": "5645:34:2", + "src": "6456:34:2", "type": "", "value": "Only the Team can call this func" } @@ -3167,13 +3756,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "5622:6:2" + "src": "6433:6:2" }, "nodeType": "YulFunctionCall", - "src": "5622:58:2" + "src": "6433:58:2" }, "nodeType": "YulExpressionStatement", - "src": "5622:58:2" + "src": "6433:58:2" }, { "expression": { @@ -3183,12 +3772,12 @@ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "5701:6:2" + "src": "6512:6:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5709:2:2", + "src": "6520:2:2", "type": "", "value": "32" } @@ -3196,16 +3785,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5697:3:2" + "src": "6508:3:2" }, "nodeType": "YulFunctionCall", - "src": "5697:15:2" + "src": "6508:15:2" }, { "hexValue": "74696f6e2e", "kind": "string", "nodeType": "YulLiteral", - "src": "5714:7:2", + "src": "6525:7:2", "type": "", "value": "tion." } @@ -3213,13 +3802,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "5690:6:2" + "src": "6501:6:2" }, "nodeType": "YulFunctionCall", - "src": "5690:32:2" + "src": "6501:32:2" }, "nodeType": "YulExpressionStatement", - "src": "5690:32:2" + "src": "6501:32:2" } ] }, @@ -3229,31 +3818,31 @@ { "name": "memPtr", "nodeType": "YulTypedName", - "src": "5603:6:2", + "src": "6414:6:2", "type": "" } ], - "src": "5505:224:2" + "src": "6316:224:2" }, { "body": { "nodeType": "YulBlock", - "src": "5881:220:2", + "src": "6692:220:2", "statements": [ { "nodeType": "YulAssignment", - "src": "5891:74:2", + "src": "6702:74:2", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "5957:3:2" + "src": "6768:3:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5962:2:2", + "src": "6773:2:2", "type": "", "value": "37" } @@ -3261,16 +3850,16 @@ "functionName": { "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "5898:58:2" + "src": "6709:58:2" }, "nodeType": "YulFunctionCall", - "src": "5898:67:2" + "src": "6709:67:2" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "5891:3:2" + "src": "6702:3:2" } ] }, @@ -3280,34 +3869,34 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "6063:3:2" + "src": "6874:3:2" } ], "functionName": { "name": "store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", "nodeType": "YulIdentifier", - "src": "5974:88:2" + "src": "6785:88:2" }, "nodeType": "YulFunctionCall", - "src": "5974:93:2" + "src": "6785:93:2" }, "nodeType": "YulExpressionStatement", - "src": "5974:93:2" + "src": "6785:93:2" }, { "nodeType": "YulAssignment", - "src": "6076:19:2", + "src": "6887:19:2", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "6087:3:2" + "src": "6898:3:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6092:2:2", + "src": "6903:2:2", "type": "", "value": "64" } @@ -3315,16 +3904,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6083:3:2" + "src": "6894:3:2" }, "nodeType": "YulFunctionCall", - "src": "6083:12:2" + "src": "6894:12:2" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", - "src": "6076:3:2" + "src": "6887:3:2" } ] } @@ -3336,7 +3925,7 @@ { "name": "pos", "nodeType": "YulTypedName", - "src": "5869:3:2", + "src": "6680:3:2", "type": "" } ], @@ -3344,31 +3933,31 @@ { "name": "end", "nodeType": "YulTypedName", - "src": "5877:3:2", + "src": "6688:3:2", "type": "" } ], - "src": "5735:366:2" + "src": "6546:366:2" }, { "body": { "nodeType": "YulBlock", - "src": "6278:248:2", + "src": "7089:248:2", "statements": [ { "nodeType": "YulAssignment", - "src": "6288:26:2", + "src": "7099:26:2", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6300:9:2" + "src": "7111:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6311:2:2", + "src": "7122:2:2", "type": "", "value": "32" } @@ -3376,16 +3965,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6296:3:2" + "src": "7107:3:2" }, "nodeType": "YulFunctionCall", - "src": "6296:18:2" + "src": "7107:18:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "6288:4:2" + "src": "7099:4:2" } ] }, @@ -3397,12 +3986,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6335:9:2" + "src": "7146:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6346:1:2", + "src": "7157:1:2", "type": "", "value": "0" } @@ -3410,68 +3999,68 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6331:3:2" + "src": "7142:3:2" }, "nodeType": "YulFunctionCall", - "src": "6331:17:2" + "src": "7142:17:2" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "6354:4:2" + "src": "7165:4:2" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6360:9:2" + "src": "7171:9:2" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "6350:3:2" + "src": "7161:3:2" }, "nodeType": "YulFunctionCall", - "src": "6350:20:2" + "src": "7161:20:2" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "6324:6:2" + "src": "7135:6:2" }, "nodeType": "YulFunctionCall", - "src": "6324:47:2" + "src": "7135:47:2" }, "nodeType": "YulExpressionStatement", - "src": "6324:47:2" + "src": "7135:47:2" }, { "nodeType": "YulAssignment", - "src": "6380:139:2", + "src": "7191:139:2", "value": { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "6514:4:2" + "src": "7325:4:2" } ], "functionName": { "name": "abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "6388:124:2" + "src": "7199:124:2" }, "nodeType": "YulFunctionCall", - "src": "6388:131:2" + "src": "7199:131:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "6380:4:2" + "src": "7191:4:2" } ] } @@ -3483,7 +4072,7 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "6258:9:2", + "src": "7069:9:2", "type": "" } ], @@ -3491,16 +4080,16 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "6273:4:2", + "src": "7084:4:2", "type": "" } ], - "src": "6107:419:2" + "src": "6918:419:2" }, { "body": { "nodeType": "YulBlock", - "src": "6638:121:2", + "src": "7449:121:2", "statements": [ { "expression": { @@ -3510,12 +4099,12 @@ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "6660:6:2" + "src": "7471:6:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6668:1:2", + "src": "7479:1:2", "type": "", "value": "0" } @@ -3523,16 +4112,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6656:3:2" + "src": "7467:3:2" }, "nodeType": "YulFunctionCall", - "src": "6656:14:2" + "src": "7467:14:2" }, { "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066", "kind": "string", "nodeType": "YulLiteral", - "src": "6672:34:2", + "src": "7483:34:2", "type": "", "value": "Only stakeholders can use this f" } @@ -3540,13 +4129,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "6649:6:2" + "src": "7460:6:2" }, "nodeType": "YulFunctionCall", - "src": "6649:58:2" + "src": "7460:58:2" }, "nodeType": "YulExpressionStatement", - "src": "6649:58:2" + "src": "7460:58:2" }, { "expression": { @@ -3556,12 +4145,12 @@ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "6728:6:2" + "src": "7539:6:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6736:2:2", + "src": "7547:2:2", "type": "", "value": "32" } @@ -3569,16 +4158,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6724:3:2" + "src": "7535:3:2" }, "nodeType": "YulFunctionCall", - "src": "6724:15:2" + "src": "7535:15:2" }, { "hexValue": "756e6374696f6e2e", "kind": "string", "nodeType": "YulLiteral", - "src": "6741:10:2", + "src": "7552:10:2", "type": "", "value": "unction." } @@ -3586,13 +4175,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "6717:6:2" + "src": "7528:6:2" }, "nodeType": "YulFunctionCall", - "src": "6717:35:2" + "src": "7528:35:2" }, "nodeType": "YulExpressionStatement", - "src": "6717:35:2" + "src": "7528:35:2" } ] }, @@ -3602,31 +4191,31 @@ { "name": "memPtr", "nodeType": "YulTypedName", - "src": "6630:6:2", + "src": "7441:6:2", "type": "" } ], - "src": "6532:227:2" + "src": "7343:227:2" }, { "body": { "nodeType": "YulBlock", - "src": "6911:220:2", + "src": "7722:220:2", "statements": [ { "nodeType": "YulAssignment", - "src": "6921:74:2", + "src": "7732:74:2", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "6987:3:2" + "src": "7798:3:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6992:2:2", + "src": "7803:2:2", "type": "", "value": "40" } @@ -3634,16 +4223,16 @@ "functionName": { "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "6928:58:2" + "src": "7739:58:2" }, "nodeType": "YulFunctionCall", - "src": "6928:67:2" + "src": "7739:67:2" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "6921:3:2" + "src": "7732:3:2" } ] }, @@ -3653,34 +4242,34 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "7093:3:2" + "src": "7904:3:2" } ], "functionName": { "name": "store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", "nodeType": "YulIdentifier", - "src": "7004:88:2" + "src": "7815:88:2" }, "nodeType": "YulFunctionCall", - "src": "7004:93:2" + "src": "7815:93:2" }, "nodeType": "YulExpressionStatement", - "src": "7004:93:2" + "src": "7815:93:2" }, { "nodeType": "YulAssignment", - "src": "7106:19:2", + "src": "7917:19:2", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "7117:3:2" + "src": "7928:3:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7122:2:2", + "src": "7933:2:2", "type": "", "value": "64" } @@ -3688,16 +4277,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7113:3:2" + "src": "7924:3:2" }, "nodeType": "YulFunctionCall", - "src": "7113:12:2" + "src": "7924:12:2" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", - "src": "7106:3:2" + "src": "7917:3:2" } ] } @@ -3709,7 +4298,7 @@ { "name": "pos", "nodeType": "YulTypedName", - "src": "6899:3:2", + "src": "7710:3:2", "type": "" } ], @@ -3717,31 +4306,31 @@ { "name": "end", "nodeType": "YulTypedName", - "src": "6907:3:2", + "src": "7718:3:2", "type": "" } ], - "src": "6765:366:2" + "src": "7576:366:2" }, { "body": { "nodeType": "YulBlock", - "src": "7308:248:2", + "src": "8119:248:2", "statements": [ { "nodeType": "YulAssignment", - "src": "7318:26:2", + "src": "8129:26:2", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7330:9:2" + "src": "8141:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7341:2:2", + "src": "8152:2:2", "type": "", "value": "32" } @@ -3749,16 +4338,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7326:3:2" + "src": "8137:3:2" }, "nodeType": "YulFunctionCall", - "src": "7326:18:2" + "src": "8137:18:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "7318:4:2" + "src": "8129:4:2" } ] }, @@ -3770,12 +4359,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7365:9:2" + "src": "8176:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7376:1:2", + "src": "8187:1:2", "type": "", "value": "0" } @@ -3783,68 +4372,68 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7361:3:2" + "src": "8172:3:2" }, "nodeType": "YulFunctionCall", - "src": "7361:17:2" + "src": "8172:17:2" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "7384:4:2" + "src": "8195:4:2" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7390:9:2" + "src": "8201:9:2" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "7380:3:2" + "src": "8191:3:2" }, "nodeType": "YulFunctionCall", - "src": "7380:20:2" + "src": "8191:20:2" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "7354:6:2" + "src": "8165:6:2" }, "nodeType": "YulFunctionCall", - "src": "7354:47:2" + "src": "8165:47:2" }, "nodeType": "YulExpressionStatement", - "src": "7354:47:2" + "src": "8165:47:2" }, { "nodeType": "YulAssignment", - "src": "7410:139:2", + "src": "8221:139:2", "value": { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "7544:4:2" + "src": "8355:4:2" } ], "functionName": { "name": "abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "7418:124:2" + "src": "8229:124:2" }, "nodeType": "YulFunctionCall", - "src": "7418:131:2" + "src": "8229:131:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "7410:4:2" + "src": "8221:4:2" } ] } @@ -3856,7 +4445,7 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "7288:9:2", + "src": "8099:9:2", "type": "" } ], @@ -3864,516 +4453,389 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "7303:4:2", + "src": "8114:4:2", "type": "" } ], - "src": "7137:419:2" + "src": "7948:419:2" }, { "body": { "nodeType": "YulBlock", - "src": "7590:152:2", + "src": "8479:130:2", "statements": [ { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7607:1:2", - "type": "", - "value": "0" + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8501:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8509:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8497:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8497:14:2" }, { - "kind": "number", + "hexValue": "455448706f6f6c206973207061757365642e2054686973206f7065726174696f", + "kind": "string", "nodeType": "YulLiteral", - "src": "7610:77:2", + "src": "8513:34:2", "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + "value": "ETHpool is paused. This operatio" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "7600:6:2" + "src": "8490:6:2" }, "nodeType": "YulFunctionCall", - "src": "7600:88:2" + "src": "8490:58:2" }, "nodeType": "YulExpressionStatement", - "src": "7600:88:2" + "src": "8490:58:2" }, { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7704:1:2", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7707:4:2", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7697:6:2" - }, - "nodeType": "YulFunctionCall", - "src": "7697:15:2" - }, - "nodeType": "YulExpressionStatement", - "src": "7697:15:2" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7728:1:2", - "type": "", - "value": "0" + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8569:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8577:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8565:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "8565:15:2" }, { - "kind": "number", + "hexValue": "6e206973206e6f7420616c6c6f7765642e", + "kind": "string", "nodeType": "YulLiteral", - "src": "7731:4:2", + "src": "8582:19:2", "type": "", - "value": "0x24" + "value": "n is not allowed." } ], "functionName": { - "name": "revert", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "7721:6:2" + "src": "8558:6:2" }, "nodeType": "YulFunctionCall", - "src": "7721:15:2" + "src": "8558:44:2" }, "nodeType": "YulExpressionStatement", - "src": "7721:15:2" + "src": "8558:44:2" } ] }, - "name": "panic_error_0x11", + "name": "store_literal_in_memory_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9", "nodeType": "YulFunctionDefinition", - "src": "7562:180:2" + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8471:6:2", + "type": "" + } + ], + "src": "8373:236:2" }, { "body": { "nodeType": "YulBlock", - "src": "7792:261:2", + "src": "8761:220:2", "statements": [ { "nodeType": "YulAssignment", - "src": "7802:25:2", + "src": "8771:74:2", "value": { "arguments": [ { - "name": "x", + "name": "pos", "nodeType": "YulIdentifier", - "src": "7825:1:2" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "7807:17:2" - }, - "nodeType": "YulFunctionCall", - "src": "7807:20:2" - }, - "variableNames": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "7802:1:2" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7836:25:2", - "value": { - "arguments": [ + "src": "8837:3:2" + }, { - "name": "y", - "nodeType": "YulIdentifier", - "src": "7859:1:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "8842:2:2", + "type": "", + "value": "49" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "7841:17:2" + "src": "8778:58:2" }, "nodeType": "YulFunctionCall", - "src": "7841:20:2" + "src": "8778:67:2" }, "variableNames": [ { - "name": "y", + "name": "pos", "nodeType": "YulIdentifier", - "src": "7836:1:2" + "src": "8771:3:2" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "7999:22:2", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "8001:16:2" - }, - "nodeType": "YulFunctionCall", - "src": "8001:18:2" - }, - "nodeType": "YulExpressionStatement", - "src": "8001:18:2" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "name": "x", + "name": "pos", "nodeType": "YulIdentifier", - "src": "7920:1:2" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7927:66:2", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "7995:1:2" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "7923:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "7923:74:2" + "src": "8943:3:2" } ], "functionName": { - "name": "gt", + "name": "store_literal_in_memory_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9", "nodeType": "YulIdentifier", - "src": "7917:2:2" + "src": "8854:88:2" }, "nodeType": "YulFunctionCall", - "src": "7917:81:2" + "src": "8854:93:2" }, - "nodeType": "YulIf", - "src": "7914:107:2" + "nodeType": "YulExpressionStatement", + "src": "8854:93:2" }, { "nodeType": "YulAssignment", - "src": "8031:16:2", + "src": "8956:19:2", "value": { "arguments": [ { - "name": "x", + "name": "pos", "nodeType": "YulIdentifier", - "src": "8042:1:2" + "src": "8967:3:2" }, { - "name": "y", - "nodeType": "YulIdentifier", - "src": "8045:1:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "8972:2:2", + "type": "", + "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "8038:3:2" + "src": "8963:3:2" }, "nodeType": "YulFunctionCall", - "src": "8038:9:2" + "src": "8963:12:2" }, "variableNames": [ { - "name": "sum", + "name": "end", "nodeType": "YulIdentifier", - "src": "8031:3:2" + "src": "8956:3:2" } ] } ] }, - "name": "checked_add_t_uint256", + "name": "abi_encode_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9_to_t_string_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "x", - "nodeType": "YulTypedName", - "src": "7779:1:2", - "type": "" - }, - { - "name": "y", + "name": "pos", "nodeType": "YulTypedName", - "src": "7782:1:2", + "src": "8749:3:2", "type": "" } ], "returnVariables": [ { - "name": "sum", + "name": "end", "nodeType": "YulTypedName", - "src": "7788:3:2", + "src": "8757:3:2", "type": "" } ], - "src": "7748:305:2" + "src": "8615:366:2" }, { "body": { "nodeType": "YulBlock", - "src": "8107:300:2", + "src": "9158:248:2", "statements": [ { "nodeType": "YulAssignment", - "src": "8117:25:2", + "src": "9168:26:2", "value": { "arguments": [ { - "name": "x", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "8140:1:2" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "8122:17:2" - }, - "nodeType": "YulFunctionCall", - "src": "8122:20:2" - }, - "variableNames": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8117:1:2" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8151:25:2", - "value": { - "arguments": [ + "src": "9180:9:2" + }, { - "name": "y", - "nodeType": "YulIdentifier", - "src": "8174:1:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "9191:2:2", + "type": "", + "value": "32" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "add", "nodeType": "YulIdentifier", - "src": "8156:17:2" + "src": "9176:3:2" }, "nodeType": "YulFunctionCall", - "src": "8156:20:2" + "src": "9176:18:2" }, "variableNames": [ { - "name": "y", + "name": "tail", "nodeType": "YulIdentifier", - "src": "8151:1:2" + "src": "9168:4:2" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "8349:22:2", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "8351:16:2" - }, - "nodeType": "YulFunctionCall", - "src": "8351:18:2" - }, - "nodeType": "YulExpressionStatement", - "src": "8351:18:2" - } - ] - }, - "condition": { + "expression": { "arguments": [ { "arguments": [ { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8261:1:2" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8254:6:2" - }, - "nodeType": "YulFunctionCall", - "src": "8254:9:2" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9215:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9226:1:2", + "type": "", + "value": "0" } ], "functionName": { - "name": "iszero", + "name": "add", "nodeType": "YulIdentifier", - "src": "8247:6:2" + "src": "9211:3:2" }, "nodeType": "YulFunctionCall", - "src": "8247:17:2" + "src": "9211:17:2" }, { "arguments": [ { - "name": "y", + "name": "tail", "nodeType": "YulIdentifier", - "src": "8269:1:2" + "src": "9234:4:2" }, { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8276:66:2", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - }, - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8344:1:2" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "8272:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "8272:74:2" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9240:9:2" } ], "functionName": { - "name": "gt", + "name": "sub", "nodeType": "YulIdentifier", - "src": "8266:2:2" + "src": "9230:3:2" }, "nodeType": "YulFunctionCall", - "src": "8266:81:2" + "src": "9230:20:2" } ], "functionName": { - "name": "and", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "8243:3:2" + "src": "9204:6:2" }, "nodeType": "YulFunctionCall", - "src": "8243:105:2" + "src": "9204:47:2" }, - "nodeType": "YulIf", - "src": "8240:131:2" + "nodeType": "YulExpressionStatement", + "src": "9204:47:2" }, { "nodeType": "YulAssignment", - "src": "8381:20:2", + "src": "9260:139:2", "value": { "arguments": [ { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8396:1:2" - }, - { - "name": "y", + "name": "tail", "nodeType": "YulIdentifier", - "src": "8399:1:2" + "src": "9394:4:2" } ], "functionName": { - "name": "mul", + "name": "abi_encode_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9_to_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "8392:3:2" + "src": "9268:124:2" }, "nodeType": "YulFunctionCall", - "src": "8392:9:2" + "src": "9268:131:2" }, "variableNames": [ { - "name": "product", + "name": "tail", "nodeType": "YulIdentifier", - "src": "8381:7:2" + "src": "9260:4:2" } ] } ] }, - "name": "checked_mul_t_uint256", + "name": "abi_encode_tuple_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "x", - "nodeType": "YulTypedName", - "src": "8090:1:2", - "type": "" - }, - { - "name": "y", + "name": "headStart", "nodeType": "YulTypedName", - "src": "8093:1:2", + "src": "9138:9:2", "type": "" } ], "returnVariables": [ { - "name": "product", + "name": "tail", "nodeType": "YulTypedName", - "src": "8099:7:2", + "src": "9153:4:2", "type": "" } ], - "src": "8059:348:2" + "src": "8987:419:2" }, { "body": { "nodeType": "YulBlock", - "src": "8441:152:2", + "src": "9440:152:2", "statements": [ { "expression": { @@ -4381,14 +4843,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8458:1:2", + "src": "9457:1:2", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8461:77:2", + "src": "9460:77:2", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -4396,13 +4858,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "8451:6:2" + "src": "9450:6:2" }, "nodeType": "YulFunctionCall", - "src": "8451:88:2" + "src": "9450:88:2" }, "nodeType": "YulExpressionStatement", - "src": "8451:88:2" + "src": "9450:88:2" }, { "expression": { @@ -4410,28 +4872,28 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8555:1:2", + "src": "9554:1:2", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8558:4:2", + "src": "9557:4:2", "type": "", - "value": "0x12" + "value": "0x11" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "8548:6:2" + "src": "9547:6:2" }, "nodeType": "YulFunctionCall", - "src": "8548:15:2" + "src": "9547:15:2" }, "nodeType": "YulExpressionStatement", - "src": "8548:15:2" + "src": "9547:15:2" }, { "expression": { @@ -4439,14 +4901,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8579:1:2", + "src": "9578:1:2", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8582:4:2", + "src": "9581:4:2", "type": "", "value": "0x24" } @@ -4454,787 +4916,1088 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "8572:6:2" + "src": "9571:6:2" }, "nodeType": "YulFunctionCall", - "src": "8572:15:2" + "src": "9571:15:2" }, "nodeType": "YulExpressionStatement", - "src": "8572:15:2" + "src": "9571:15:2" } ] }, - "name": "panic_error_0x12", + "name": "panic_error_0x11", "nodeType": "YulFunctionDefinition", - "src": "8413:180:2" + "src": "9412:180:2" }, { "body": { "nodeType": "YulBlock", - "src": "8641:143:2", + "src": "9642:261:2", "statements": [ { "nodeType": "YulAssignment", - "src": "8651:25:2", + "src": "9652:25:2", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "8674:1:2" + "src": "9675:1:2" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "8656:17:2" + "src": "9657:17:2" }, "nodeType": "YulFunctionCall", - "src": "8656:20:2" + "src": "9657:20:2" }, "variableNames": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "8651:1:2" + "src": "9652:1:2" } ] }, { "nodeType": "YulAssignment", - "src": "8685:25:2", + "src": "9686:25:2", "value": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "8708:1:2" + "src": "9709:1:2" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "8690:17:2" + "src": "9691:17:2" }, "nodeType": "YulFunctionCall", - "src": "8690:20:2" + "src": "9691:20:2" }, "variableNames": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "8685:1:2" + "src": "9686:1:2" } ] }, { "body": { "nodeType": "YulBlock", - "src": "8732:22:2", + "src": "9849:22:2", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "panic_error_0x12", + "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "8734:16:2" + "src": "9851:16:2" }, "nodeType": "YulFunctionCall", - "src": "8734:18:2" + "src": "9851:18:2" }, "nodeType": "YulExpressionStatement", - "src": "8734:18:2" + "src": "9851:18:2" } ] }, "condition": { "arguments": [ { - "name": "y", + "name": "x", "nodeType": "YulIdentifier", - "src": "8729:1:2" + "src": "9770:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9777:66:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9845:1:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9773:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "9773:74:2" } ], "functionName": { - "name": "iszero", + "name": "gt", "nodeType": "YulIdentifier", - "src": "8722:6:2" + "src": "9767:2:2" }, "nodeType": "YulFunctionCall", - "src": "8722:9:2" + "src": "9767:81:2" }, "nodeType": "YulIf", - "src": "8719:35:2" + "src": "9764:107:2" }, { "nodeType": "YulAssignment", - "src": "8764:14:2", + "src": "9881:16:2", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "8773:1:2" + "src": "9892:1:2" }, { "name": "y", "nodeType": "YulIdentifier", - "src": "8776:1:2" + "src": "9895:1:2" } ], "functionName": { - "name": "div", + "name": "add", "nodeType": "YulIdentifier", - "src": "8769:3:2" + "src": "9888:3:2" }, "nodeType": "YulFunctionCall", - "src": "8769:9:2" + "src": "9888:9:2" }, "variableNames": [ { - "name": "r", + "name": "sum", "nodeType": "YulIdentifier", - "src": "8764:1:2" + "src": "9881:3:2" } ] } ] }, - "name": "checked_div_t_uint256", + "name": "checked_add_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", - "src": "8630:1:2", + "src": "9629:1:2", "type": "" }, { "name": "y", "nodeType": "YulTypedName", - "src": "8633:1:2", + "src": "9632:1:2", "type": "" } ], "returnVariables": [ { - "name": "r", + "name": "sum", "nodeType": "YulTypedName", - "src": "8639:1:2", + "src": "9638:3:2", "type": "" } ], - "src": "8599:185:2" + "src": "9598:305:2" }, { "body": { "nodeType": "YulBlock", - "src": "8818:152:2", + "src": "9954:146:2", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "9964:25:2", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8835:1:2", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8838:77:2", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + "name": "x", + "nodeType": "YulIdentifier", + "src": "9987:1:2" } ], "functionName": { - "name": "mstore", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "8828:6:2" + "src": "9969:17:2" }, "nodeType": "YulFunctionCall", - "src": "8828:88:2" + "src": "9969:20:2" }, - "nodeType": "YulExpressionStatement", - "src": "8828:88:2" + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9964:1:2" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "9998:25:2", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8932:1:2", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8935:4:2", - "type": "", - "value": "0x22" + "name": "y", + "nodeType": "YulIdentifier", + "src": "10021:1:2" } ], "functionName": { - "name": "mstore", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "8925:6:2" + "src": "10003:17:2" }, "nodeType": "YulFunctionCall", - "src": "8925:15:2" + "src": "10003:20:2" }, - "nodeType": "YulExpressionStatement", - "src": "8925:15:2" + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9998:1:2" + } + ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "10045:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10047:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "10047:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "10047:18:2" + } + ] + }, + "condition": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8956:1:2", - "type": "", - "value": "0" + "name": "x", + "nodeType": "YulIdentifier", + "src": "10039:1:2" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8959:4:2", - "type": "", - "value": "0x24" + "name": "y", + "nodeType": "YulIdentifier", + "src": "10042:1:2" } ], "functionName": { - "name": "revert", + "name": "lt", "nodeType": "YulIdentifier", - "src": "8949:6:2" + "src": "10036:2:2" }, "nodeType": "YulFunctionCall", - "src": "8949:15:2" + "src": "10036:8:2" }, - "nodeType": "YulExpressionStatement", - "src": "8949:15:2" - } - ] - }, - "name": "panic_error_0x22", - "nodeType": "YulFunctionDefinition", - "src": "8790:180:2" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9027:269:2", - "statements": [ + "nodeType": "YulIf", + "src": "10033:34:2" + }, { "nodeType": "YulAssignment", - "src": "9037:22:2", + "src": "10077:17:2", "value": { "arguments": [ { - "name": "data", + "name": "x", "nodeType": "YulIdentifier", - "src": "9051:4:2" + "src": "10089:1:2" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9057:1:2", - "type": "", - "value": "2" + "name": "y", + "nodeType": "YulIdentifier", + "src": "10092:1:2" } ], "functionName": { - "name": "div", + "name": "sub", "nodeType": "YulIdentifier", - "src": "9047:3:2" + "src": "10085:3:2" }, "nodeType": "YulFunctionCall", - "src": "9047:12:2" + "src": "10085:9:2" }, "variableNames": [ { - "name": "length", + "name": "diff", "nodeType": "YulIdentifier", - "src": "9037:6:2" + "src": "10077:4:2" } ] - }, + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "9940:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "9943:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "9949:4:2", + "type": "" + } + ], + "src": "9909:191:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10154:300:2", + "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "9068:38:2", + "nodeType": "YulAssignment", + "src": "10164:25:2", "value": { "arguments": [ { - "name": "data", + "name": "x", "nodeType": "YulIdentifier", - "src": "9098:4:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9104:1:2", - "type": "", - "value": "1" + "src": "10187:1:2" } ], "functionName": { - "name": "and", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "9094:3:2" + "src": "10169:17:2" }, "nodeType": "YulFunctionCall", - "src": "9094:12:2" + "src": "10169:20:2" }, - "variables": [ + "variableNames": [ { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "9072:18:2", - "type": "" + "name": "x", + "nodeType": "YulIdentifier", + "src": "10164:1:2" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "9145:51:2", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "9159:27:2", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "9173:6:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9181:4:2", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "9169:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "9169:17:2" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "9159:6:2" - } - ] - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "10198:25:2", + "value": { "arguments": [ { - "name": "outOfPlaceEncoding", + "name": "y", "nodeType": "YulIdentifier", - "src": "9125:18:2" + "src": "10221:1:2" } ], "functionName": { - "name": "iszero", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "9118:6:2" + "src": "10203:17:2" }, "nodeType": "YulFunctionCall", - "src": "9118:26:2" + "src": "10203:20:2" }, - "nodeType": "YulIf", - "src": "9115:81:2" + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10198:1:2" + } + ] }, { "body": { "nodeType": "YulBlock", - "src": "9248:42:2", + "src": "10396:22:2", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "panic_error_0x22", + "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "9262:16:2" + "src": "10398:16:2" }, "nodeType": "YulFunctionCall", - "src": "9262:18:2" + "src": "10398:18:2" }, "nodeType": "YulExpressionStatement", - "src": "9262:18:2" + "src": "10398:18:2" } ] }, "condition": { "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "9212:18:2" - }, { "arguments": [ { - "name": "length", - "nodeType": "YulIdentifier", - "src": "9235:6:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9243:2:2", - "type": "", - "value": "32" + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10308:1:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10301:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "10301:9:2" } ], "functionName": { - "name": "lt", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "9232:2:2" + "src": "10294:6:2" }, "nodeType": "YulFunctionCall", - "src": "9232:14:2" - } - ], - "functionName": { - "name": "eq", + "src": "10294:17:2" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10316:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10323:66:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10391:1:2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10319:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10319:74:2" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10313:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "10313:81:2" + } + ], + "functionName": { + "name": "and", "nodeType": "YulIdentifier", - "src": "9209:2:2" + "src": "10290:3:2" }, "nodeType": "YulFunctionCall", - "src": "9209:38:2" + "src": "10290:105:2" }, "nodeType": "YulIf", - "src": "9206:84:2" + "src": "10287:131:2" + }, + { + "nodeType": "YulAssignment", + "src": "10428:20:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10443:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10446:1:2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "10439:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10439:9:2" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "10428:7:2" + } + ] } ] }, - "name": "extract_byte_array_length", + "name": "checked_mul_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "data", + "name": "x", + "nodeType": "YulTypedName", + "src": "10137:1:2", + "type": "" + }, + { + "name": "y", "nodeType": "YulTypedName", - "src": "9011:4:2", + "src": "10140:1:2", "type": "" } ], "returnVariables": [ { - "name": "length", + "name": "product", "nodeType": "YulTypedName", - "src": "9020:6:2", + "src": "10146:7:2", "type": "" } ], - "src": "8976:320:2" + "src": "10106:348:2" }, { "body": { "nodeType": "YulBlock", - "src": "9408:184:2", + "src": "10488:152:2", "statements": [ { "expression": { "arguments": [ { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "9430:6:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9438:1:2", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9426:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "9426:14:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10505:1:2", + "type": "", + "value": "0" }, { - "hexValue": "506c6561736520666972737420706572666f726d206120776974686472617761", - "kind": "string", + "kind": "number", "nodeType": "YulLiteral", - "src": "9442:34:2", + "src": "10508:77:2", "type": "", - "value": "Please first perform a withdrawa" + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "9419:6:2" + "src": "10498:6:2" }, "nodeType": "YulFunctionCall", - "src": "9419:58:2" + "src": "10498:88:2" }, "nodeType": "YulExpressionStatement", - "src": "9419:58:2" + "src": "10498:88:2" }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "9498:6:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9506:2:2", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9494:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "9494:15:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10602:1:2", + "type": "", + "value": "4" }, { - "hexValue": "6c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973", - "kind": "string", + "kind": "number", "nodeType": "YulLiteral", - "src": "9511:34:2", + "src": "10605:4:2", "type": "", - "value": "l. We will solve in V2, I promis" + "value": "0x12" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "9487:6:2" + "src": "10595:6:2" }, "nodeType": "YulFunctionCall", - "src": "9487:59:2" + "src": "10595:15:2" }, "nodeType": "YulExpressionStatement", - "src": "9487:59:2" + "src": "10595:15:2" }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "9567:6:2" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9575:2:2", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9563:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "9563:15:2" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10626:1:2", + "type": "", + "value": "0" }, { - "hexValue": "652e", - "kind": "string", + "kind": "number", "nodeType": "YulLiteral", - "src": "9580:4:2", + "src": "10629:4:2", "type": "", - "value": "e." + "value": "0x24" } ], "functionName": { - "name": "mstore", + "name": "revert", "nodeType": "YulIdentifier", - "src": "9556:6:2" + "src": "10619:6:2" }, "nodeType": "YulFunctionCall", - "src": "9556:29:2" + "src": "10619:15:2" }, "nodeType": "YulExpressionStatement", - "src": "9556:29:2" + "src": "10619:15:2" } ] }, - "name": "store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "name": "panic_error_0x12", "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "9400:6:2", - "type": "" - } - ], - "src": "9302:290:2" + "src": "10460:180:2" }, { "body": { "nodeType": "YulBlock", - "src": "9744:220:2", + "src": "10688:143:2", "statements": [ { "nodeType": "YulAssignment", - "src": "9754:74:2", + "src": "10698:25:2", "value": { "arguments": [ { - "name": "pos", + "name": "x", "nodeType": "YulIdentifier", - "src": "9820:3:2" - }, + "src": "10721:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10703:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "10703:20:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10698:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10732:25:2", + "value": { + "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9825:2:2", - "type": "", - "value": "66" + "name": "y", + "nodeType": "YulIdentifier", + "src": "10755:1:2" } ], "functionName": { - "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "9761:58:2" + "src": "10737:17:2" }, "nodeType": "YulFunctionCall", - "src": "9761:67:2" + "src": "10737:20:2" }, "variableNames": [ { - "name": "pos", + "name": "y", "nodeType": "YulIdentifier", - "src": "9754:3:2" + "src": "10732:1:2" } ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "10779:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "10781:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "10781:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "10781:18:2" + } + ] + }, + "condition": { "arguments": [ { - "name": "pos", + "name": "y", "nodeType": "YulIdentifier", - "src": "9926:3:2" + "src": "10776:1:2" } ], "functionName": { - "name": "store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "9837:88:2" + "src": "10769:6:2" }, "nodeType": "YulFunctionCall", - "src": "9837:93:2" + "src": "10769:9:2" }, - "nodeType": "YulExpressionStatement", - "src": "9837:93:2" + "nodeType": "YulIf", + "src": "10766:35:2" }, { "nodeType": "YulAssignment", - "src": "9939:19:2", + "src": "10811:14:2", "value": { "arguments": [ { - "name": "pos", + "name": "x", "nodeType": "YulIdentifier", - "src": "9950:3:2" + "src": "10820:1:2" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9955:2:2", - "type": "", - "value": "96" + "name": "y", + "nodeType": "YulIdentifier", + "src": "10823:1:2" } ], "functionName": { - "name": "add", + "name": "div", "nodeType": "YulIdentifier", - "src": "9946:3:2" + "src": "10816:3:2" }, "nodeType": "YulFunctionCall", - "src": "9946:12:2" + "src": "10816:9:2" }, "variableNames": [ { - "name": "end", + "name": "r", "nodeType": "YulIdentifier", - "src": "9939:3:2" + "src": "10811:1:2" } ] } ] }, - "name": "abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack", + "name": "checked_div_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "x", + "nodeType": "YulTypedName", + "src": "10677:1:2", + "type": "" + }, + { + "name": "y", "nodeType": "YulTypedName", - "src": "9732:3:2", + "src": "10680:1:2", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "r", "nodeType": "YulTypedName", - "src": "9740:3:2", + "src": "10686:1:2", "type": "" } ], - "src": "9598:366:2" + "src": "10646:185:2" }, { "body": { "nodeType": "YulBlock", - "src": "10141:248:2", + "src": "10943:124:2", "statements": [ { - "nodeType": "YulAssignment", - "src": "10151:26:2", - "value": { + "expression": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10163:9:2" + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10965:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10973:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10961:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "10961:14:2" }, { - "kind": "number", + "hexValue": "455448706f6f6c20697320656e6465642e204f6e6c7920776974686472617761", + "kind": "string", "nodeType": "YulLiteral", - "src": "10174:2:2", + "src": "10977:34:2", + "type": "", + "value": "ETHpool is ended. Only withdrawa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10954:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "10954:58:2" + }, + "nodeType": "YulExpressionStatement", + "src": "10954:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11033:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11041:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11029:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "11029:15:2" + }, + { + "hexValue": "6c7320616c6c6f7765642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11046:13:2", + "type": "", + "value": "ls allowed." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11022:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "11022:38:2" + }, + "nodeType": "YulExpressionStatement", + "src": "11022:38:2" + } + ] + }, + "name": "store_literal_in_memory_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "10935:6:2", + "type": "" + } + ], + "src": "10837:230:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11219:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11229:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11295:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11300:2:2", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "11236:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "11236:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11229:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11401:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055", + "nodeType": "YulIdentifier", + "src": "11312:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "11312:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "11312:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "11414:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11425:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11430:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11421:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "11421:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11414:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11207:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11215:3:2", + "type": "" + } + ], + "src": "11073:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11616:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11626:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11638:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11649:2:2", "type": "", "value": "32" } @@ -5242,16 +6005,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "10159:3:2" + "src": "11634:3:2" }, "nodeType": "YulFunctionCall", - "src": "10159:18:2" + "src": "11634:18:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "10151:4:2" + "src": "11626:4:2" } ] }, @@ -5263,12 +6026,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10198:9:2" + "src": "11673:9:2" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "10209:1:2", + "src": "11684:1:2", "type": "", "value": "0" } @@ -5276,80 +6039,80 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "10194:3:2" + "src": "11669:3:2" }, "nodeType": "YulFunctionCall", - "src": "10194:17:2" + "src": "11669:17:2" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "10217:4:2" + "src": "11692:4:2" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10223:9:2" + "src": "11698:9:2" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "10213:3:2" + "src": "11688:3:2" }, "nodeType": "YulFunctionCall", - "src": "10213:20:2" + "src": "11688:20:2" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "10187:6:2" + "src": "11662:6:2" }, "nodeType": "YulFunctionCall", - "src": "10187:47:2" + "src": "11662:47:2" }, "nodeType": "YulExpressionStatement", - "src": "10187:47:2" + "src": "11662:47:2" }, { "nodeType": "YulAssignment", - "src": "10243:139:2", + "src": "11718:139:2", "value": { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "10377:4:2" + "src": "11852:4:2" } ], "functionName": { - "name": "abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack", + "name": "abi_encode_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055_to_t_string_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "10251:124:2" + "src": "11726:124:2" }, "nodeType": "YulFunctionCall", - "src": "10251:131:2" + "src": "11726:131:2" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "10243:4:2" + "src": "11718:4:2" } ] } ] }, - "name": "abi_encode_tuple_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "10121:9:2", + "src": "11596:9:2", "type": "" } ], @@ -5357,4628 +6120,5772 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "10136:4:2", + "src": "11611:4:2", "type": "" } ], - "src": "9970:419:2" - } - ] - }, - "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256__to_t_address_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function validator_assert_t_enum$_State_$8(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_State_$8(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_State_$8(value)\n }\n\n function convert_t_enum$_State_$8_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_State_$8(value)\n }\n\n function abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_State_$8_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value4, add(headStart, 128))\n\n }\n\n function store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(memPtr) {\n\n mstore(add(memPtr, 0), \"Only the Team can call this func\")\n\n mstore(add(memPtr, 32), \"tion.\")\n\n }\n\n function abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(memPtr) {\n\n mstore(add(memPtr, 0), \"Only stakeholders can use this f\")\n\n mstore(add(memPtr, 32), \"unction.\")\n\n }\n\n function abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc(memPtr) {\n\n mstore(add(memPtr, 0), \"Please first perform a withdrawa\")\n\n mstore(add(memPtr, 32), \"l. We will solve in V2, I promis\")\n\n mstore(add(memPtr, 64), \"e.\")\n\n }\n\n function abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 66)\n store_literal_in_memory_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc(pos)\n end := add(pos, 96)\n }\n\n function abi_encode_tuple_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", - "id": 2, - "language": "Yul", - "name": "#utility.yul" - } - ], - "sourceMap": "2773:3583:0:-:0;;;3680:288;;;;;;;;;;3728:1;3703:4;:16;3708:10;3703:16;;;;;;;;;;;;;;;:22;;:26;;;;3789:13;3769:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;3837:1;3812:10;:22;;:26;;;;3923:1;3889:10;:31;;:35;;;;3960:1;3934:10;:23;;:27;;;;2773:3583;;7:180:2;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;2773:3583:0;;;;;;;", - "deployedSourceMap": "2773:3583:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5929:120;;;;;;;;;;;;;:::i;:::-;;5786:137;;;;;;;;;;;;;:::i;:::-;;5520:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5638:142;;;;;;;;;;;;;:::i;:::-;;4222:359;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3602:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;4936:425;;;:::i;:::-;;3548:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3651:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;2796:39;;;;;;;;;;;;;;;;;;;:::o;5929:120::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5997:13:::1;5977:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5929:120::o:0;5786:137::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5851:11:::1;5831:10:::0;:17:::1;;;:31;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5786:137::o:0;5520:76::-;5565:4;6158:1;6119:8;:20;6128:10;6119:20;;;;;;;;;;;;;;;:36;;;:40;6110:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;5588:1:::1;5581:8;;5520:76:::0;:::o;5638:142::-;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5761:12:::1;5741:10;:17;;;:32;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;5638:142::o:0;4222:359::-;4280:16;6293:1;6267:4;:16;6272:10;6267:16;;;;;;;;;;;;;;;:22;;;:27;6259:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4334:9:::1;4308:10;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;4381:15;4353:10;:25;;:43;;;;4475:10;:22;;;2967:5;4442:9;:29;;;;:::i;:::-;4441:56;;;;:::i;:::-;4406:10;:31;;;:91;;;;;;;:::i;:::-;;;;;;;;4534:1;4507:10;:23:::0;::::1;;:28;;;;;;;:::i;:::-;;;;;;;;4552:10;:22;;;4545:29;;4222:359:::0;:::o;3602:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4936:425::-;5027:1;4987:8;:20;4996:10;4987:20;;;;;;;;;;;;;;;:36;;;:41;4978:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;5135:9;5109:10;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;5193:9;5154:8;:20;5163:10;5154:20;;;;;;;;;;;;;;;:36;;:48;;;;5262:10;:31;;;5212:8;:20;5221:10;5212:20;;;;;;;;;;;;;;;:47;;:81;;;;5339:15;5303:8;:20;5312:10;5303:20;;;;;;;;;;;;;;;:33;;:51;;;;4936:425::o;3548:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3651:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:2:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:77::-;1434:7;1463:5;1452:16;;1397:77;;;:::o;1480:118::-;1567:24;1585:5;1567:24;:::i;:::-;1562:3;1555:37;1480:118;;:::o;1604:222::-;1697:4;1735:2;1724:9;1720:18;1712:26;;1748:71;1816:1;1805:9;1801:17;1792:6;1748:71;:::i;:::-;1604:222;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:329::-;2725:6;2774:2;2762:9;2753:7;2749:23;2745:32;2742:119;;;2780:79;;:::i;:::-;2742:119;2900:1;2925:53;2970:7;2961:6;2950:9;2946:22;2925:53;:::i;:::-;2915:63;;2871:117;2666:329;;;;:::o;3001:118::-;3088:24;3106:5;3088:24;:::i;:::-;3083:3;3076:37;3001:118;;:::o;3125:533::-;3294:4;3332:2;3321:9;3317:18;3309:26;;3345:71;3413:1;3402:9;3398:17;3389:6;3345:71;:::i;:::-;3463:9;3457:4;3453:20;3448:2;3437:9;3433:18;3426:48;3491:78;3564:4;3555:6;3491:78;:::i;:::-;3483:86;;3579:72;3647:2;3636:9;3632:18;3623:6;3579:72;:::i;:::-;3125:533;;;;;;:::o;3664:442::-;3813:4;3851:2;3840:9;3836:18;3828:26;;3864:71;3932:1;3921:9;3917:17;3908:6;3864:71;:::i;:::-;3945:72;4013:2;4002:9;3998:18;3989:6;3945:72;:::i;:::-;4027;4095:2;4084:9;4080:18;4071:6;4027:72;:::i;:::-;3664:442;;;;;;:::o;4112:180::-;4160:77;4157:1;4150:88;4257:4;4254:1;4247:15;4281:4;4278:1;4271:15;4298:112;4378:1;4371:5;4368:12;4358:46;;4384:18;;:::i;:::-;4358:46;4298:112;:::o;4416:125::-;4460:7;4489:5;4478:16;;4495:40;4529:5;4495:40;:::i;:::-;4416:125;;;:::o;4547:::-;4602:9;4635:31;4660:5;4635:31;:::i;:::-;4622:44;;4547:125;;;:::o;4678:141::-;4770:42;4806:5;4770:42;:::i;:::-;4765:3;4758:55;4678:141;;:::o;4825:674::-;5035:4;5073:3;5062:9;5058:19;5050:27;;5087:71;5155:1;5144:9;5140:17;5131:6;5087:71;:::i;:::-;5168:72;5236:2;5225:9;5221:18;5212:6;5168:72;:::i;:::-;5250;5318:2;5307:9;5303:18;5294:6;5250:72;:::i;:::-;5332;5400:2;5389:9;5385:18;5376:6;5332:72;:::i;:::-;5414:78;5487:3;5476:9;5472:19;5463:6;5414:78;:::i;:::-;4825:674;;;;;;;;:::o;5505:224::-;5645:34;5641:1;5633:6;5629:14;5622:58;5714:7;5709:2;5701:6;5697:15;5690:32;5505:224;:::o;5735:366::-;5877:3;5898:67;5962:2;5957:3;5898:67;:::i;:::-;5891:74;;5974:93;6063:3;5974:93;:::i;:::-;6092:2;6087:3;6083:12;6076:19;;5735:366;;;:::o;6107:419::-;6273:4;6311:2;6300:9;6296:18;6288:26;;6360:9;6354:4;6350:20;6346:1;6335:9;6331:17;6324:47;6388:131;6514:4;6388:131;:::i;:::-;6380:139;;6107:419;;;:::o;6532:227::-;6672:34;6668:1;6660:6;6656:14;6649:58;6741:10;6736:2;6728:6;6724:15;6717:35;6532:227;:::o;6765:366::-;6907:3;6928:67;6992:2;6987:3;6928:67;:::i;:::-;6921:74;;7004:93;7093:3;7004:93;:::i;:::-;7122:2;7117:3;7113:12;7106:19;;6765:366;;;:::o;7137:419::-;7303:4;7341:2;7330:9;7326:18;7318:26;;7390:9;7384:4;7380:20;7376:1;7365:9;7361:17;7354:47;7418:131;7544:4;7418:131;:::i;:::-;7410:139;;7137:419;;;:::o;7562:180::-;7610:77;7607:1;7600:88;7707:4;7704:1;7697:15;7731:4;7728:1;7721:15;7748:305;7788:3;7807:20;7825:1;7807:20;:::i;:::-;7802:25;;7841:20;7859:1;7841:20;:::i;:::-;7836:25;;7995:1;7927:66;7923:74;7920:1;7917:81;7914:107;;;8001:18;;:::i;:::-;7914:107;8045:1;8042;8038:9;8031:16;;7748:305;;;;:::o;8059:348::-;8099:7;8122:20;8140:1;8122:20;:::i;:::-;8117:25;;8156:20;8174:1;8156:20;:::i;:::-;8151:25;;8344:1;8276:66;8272:74;8269:1;8266:81;8261:1;8254:9;8247:17;8243:105;8240:131;;;8351:18;;:::i;:::-;8240:131;8399:1;8396;8392:9;8381:20;;8059:348;;;;:::o;8413:180::-;8461:77;8458:1;8451:88;8558:4;8555:1;8548:15;8582:4;8579:1;8572:15;8599:185;8639:1;8656:20;8674:1;8656:20;:::i;:::-;8651:25;;8690:20;8708:1;8690:20;:::i;:::-;8685:25;;8729:1;8719:35;;8734:18;;:::i;:::-;8719:35;8776:1;8773;8769:9;8764:14;;8599:185;;;;:::o;8790:180::-;8838:77;8835:1;8828:88;8935:4;8932:1;8925:15;8959:4;8956:1;8949:15;8976:320;9020:6;9057:1;9051:4;9047:12;9037:22;;9104:1;9098:4;9094:12;9125:18;9115:81;;9181:4;9173:6;9169:17;9159:27;;9115:81;9243:2;9235:6;9232:14;9212:18;9209:38;9206:84;;;9262:18;;:::i;:::-;9206:84;9027:269;8976:320;;;:::o;9302:290::-;9442:34;9438:1;9430:6;9426:14;9419:58;9511:34;9506:2;9498:6;9494:15;9487:59;9580:4;9575:2;9567:6;9563:15;9556:29;9302:290;:::o;9598:366::-;9740:3;9761:67;9825:2;9820:3;9761:67;:::i;:::-;9754:74;;9837:93;9926:3;9837:93;:::i;:::-;9955:2;9950:3;9946:12;9939:19;;9598:366;;;:::o;9970:419::-;10136:4;10174:2;10163:9;10159:18;10151:26;;10223:9;10217:4;10213:20;10209:1;10198:9;10194:17;10187:47;10251:131;10377:4;10251:131;:::i;:::-;10243:139;;9970:419;;;:::o", - "source": "//SPDX-License-Identifier: GPL-3.0\n\npragma solidity >=0.8.0 <0.9.0;\n// >0.8 to avoid use of SafeMath functions\n//But, if you want it...\n//import \"github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol\";\n//using SafeMath for uint; // \n\n/*\nSummary\nETHPool provides a service where people can deposit ETH and they will receive weekly rewards. \nUsers must be able to take out their deposits along with their portion of rewards at any time. \nNew rewards are deposited manually into the pool by the ETHPool team each week using a contract function.\n\nRequirements\nOnly the team can deposit rewards.\nDeposited rewards go to the pool of users, not to individual users.\nUsers should be able to withdraw their deposits along with their share of rewards considering the time when they deposited.\nExample:\n\nLet say we have user A and B and team T.\n\nA deposits 100, and B deposits 300 for a total of 400 in the pool.\nNow A has 25% of the pool and B has 75%. \nWhen T deposits 200 rewards, A should be able to withdraw 150 and B 450.\n\nWhat if the following happens? \nA deposits then T deposits then B deposits then A withdraws and finally B withdraws. \nA should get their deposit + all the rewards. \nB should only get their deposit because rewards were sent to the pool before they participated.\n*/\n\n/* \n How it works?\n First of all, we need to understand that the reward mechanism cannot be automatic. (No FOR or WHILE allowed!)\n So, the stakeholders by themselves need to calculate their own reward (Don't worry, a function will do for us)\n\n Because the staking cannot be negative, we will save the accumulation of rewards proportional to the pool at the time of deposit.\n For each stakeholder, we will save the composition of the pool at the time of staking.\n To calculate the reward, we will substract the sum of rewards at the current time minus the composition of the pool at the time of staking for each user.\n This is the explanation of why cannot be automatic at the time of deposit rewards.\n\n Some assumptions has been taken:\n - Users withdrawn all of the staking and rewards. No partial withdraw allowed (Well, in fact, can be a full withdraw with a new deposit of the diff)\n - Users cannot add funds to their staking (As above, we can consider a full withdraw, and a new staking)\n - Some constants will be multiplied for an arbitrary big constant (10^18), to reduce rounding errors in division.\n - Can be optimized for gas consumption. But for this challenge and for educational purposes, we can take the risk. And testnet is \"free\".\n - Bugs? Everywhere. Not ready for production or resale.\n\n Credits: https://explorer.callisto.network/address/0xE2E4Cf144F4365AAa023da04918A64072C284201/contracts\n (Thanks Erik!)\n*/\n\ncontract ETHpool {\n string public constant name = \"ETHPool\";\n enum State {Running, Paused, Ended } //staking can be done only if it state is running.\n uint constant ROUNDING_CONSTANT = 10^18; //To minimize rounding errors at divisions\n\n struct TeamMember { //there are no specifications for TEAM, so, I understand that can be a lot of people.\n address _addr;\n string _name; //It's not necessary\n uint _role; // 1 for active Team Members\n }\n\n struct Stakeholder {\n uint _currentBalance;\n uint _compositionAtStartStaking;\n uint _timeStaking;\n }\n\n struct Pool {\n uint poolBalance;\n uint lastRewardMultiplied;\n uint rewardsCount;\n uint lastRewardTime;\n State status;\n }\n\n mapping( address => Stakeholder) public UserList;\n mapping( address => TeamMember) public Team;\n Pool public poolStatus;\n\n constructor(){\n Team[msg.sender]._role = 1; // Team member role assigned.\n poolStatus.status = State.Running;\n poolStatus.poolBalance = 0; // Do not transfer at construction time!\n poolStatus.lastRewardMultiplied = 0;\n poolStatus.rewardsCount = 0;\n }\n\n\n // The main functions: Stake() , DepositRewards() , Withdraw()\n\n // DepositRewards: The team can call this function to deposit rewards to the pool.\n // It will update the last reward of the pool, as rewards*ROUNDING_CONSTANT/PoolBalance\n function DepositRewards() public payable onlyTeam returns(uint poolbalance) {\n poolStatus.poolBalance += msg.value;\n poolStatus.lastRewardTime = block.timestamp;\n poolStatus.lastRewardMultiplied += (msg.value * ROUNDING_CONSTANT) / poolStatus.poolBalance;\n poolStatus.rewardsCount += 1;\n return poolStatus.poolBalance;\n }\n \n // Stake: The users can call \"Stake\" to stake some ETH (or your network coin of value)\n // All network users can perform this function, to become \"USERS\"\n // TODO: We need to check if the user already exists, and **need to perform first a withdrawal next to a new deposit**.\n // FIXME: At now, users can only deposit only one time.\n function Stake() public payable {\n require( UserList[msg.sender]._currentBalance == 0, \"Please first perform a withdrawal. We will solve in V2, I promise.\");\n poolStatus.poolBalance += msg.value;\n UserList[msg.sender]._currentBalance = msg.value;\n UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied;\n UserList[msg.sender]._timeStaking = block.timestamp;\n }\n\n // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being.\n // FIXME: At now, only allows full withdrawals.\n function Withdraw() public onlyUsers returns(uint){\n\n return 1;\n }\n\n //Pool Administration functions\n function pausePool() public onlyTeam { //If something went wrong, and we need time to proceed.\n poolStatus.status = State.Paused;\n }\n\n function endPool() public onlyTeam {\n poolStatus.status = State.Ended; //If the pool dies, and only allow users to withdraw.\n }\n\n function resumePool() public onlyTeam {\n poolStatus.status = State.Running; //Everything is up and running.\n }\n\n //Modifiers section\n modifier onlyUsers() {\n require( UserList[msg.sender]._currentBalance > 0 , \"Only stakeholders can use this function.\");\n _;\n }\n\n modifier onlyTeam() {\n require(Team[msg.sender]._role == 1, \"Only the Team can call this function.\");\n _;\n }\n}\n\n\n\n\n// NOTE: This is just a test contract, please delete me\n/*\ncontract Counter {\n uint256 count = 0;\n\n event CountedTo(uint256 number);\n\n function getCount() public view returns (uint256) {\n return count;\n }\n\n function countUp() public returns (uint256) {\n console.log(\"countUp: count =\", count);\n uint256 newCount = count + 1;\n require(newCount > count, \"Uint256 overflow\");\n count = newCount;\n emit CountedTo(count);\n return count;\n }\n\n function countDown() public returns (uint256) {\n console.log(\"countDown: count =\", count);\n uint256 newCount = count - 1;\n require(newCount < count, \"Uint256 underflow\");\n count = newCount;\n emit CountedTo(count);\n return count;\n }\n}\n*/", - "sourcePath": "T:\\Desarrollos\\Experimentos\\Exactly\\exactly-private\\contracts\\ETHpool.sol", - "ast": { - "absolutePath": "project:/contracts/ETHpool.sol", - "exportedSymbols": { - "ETHpool": [ - 262 - ] - }, - "id": 263, - "license": "GPL-3.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - ">=", - "0.8", - ".0", - "<", - "0.9", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "36:31:0" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ETHpool", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 262, - "linearizedBaseContracts": [ - 262 - ], - "name": "ETHpool", - "nameLocation": "2782:7:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "functionSelector": "06fdde03", - "id": 4, - "mutability": "constant", - "name": "name", - "nameLocation": "2819:4:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "2796:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 2, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2796:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "hexValue": "455448506f6f6c", - "id": 3, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2826:9:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b2b106900d554104599e0c086554bf83e27f672439251b0e995ef2d49c22fe9c", - "typeString": "literal_string \"ETHPool\"" - }, - "value": "ETHPool" - }, - "visibility": "public" + "src": "11445:419:2" }, { - "canonicalName": "ETHpool.State", - "id": 8, - "members": [ - { - "id": 5, - "name": "Running", - "nameLocation": "2853:7:0", - "nodeType": "EnumValue", - "src": "2853:7:0" - }, - { - "id": 6, - "name": "Paused", - "nameLocation": "2862:6:0", - "nodeType": "EnumValue", - "src": "2862:6:0" - }, + "body": { + "nodeType": "YulBlock", + "src": "11976:75:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11998:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11994:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "11994:14:2" + }, + { + "hexValue": "52657761726473206d7573742062652067726561746572207468616e20302e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12010:33:2", + "type": "", + "value": "Rewards must be greater than 0." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11987:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "11987:57:2" + }, + "nodeType": "YulExpressionStatement", + "src": "11987:57:2" + } + ] + }, + "name": "store_literal_in_memory_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "id": 7, - "name": "Ended", - "nameLocation": "2870:5:0", - "nodeType": "EnumValue", - "src": "2870:5:0" + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "11968:6:2", + "type": "" } ], - "name": "State", - "nameLocation": "2846:5:0", - "nodeType": "EnumDefinition", - "src": "2841:36:0" + "src": "11870:181:2" }, { - "constant": true, - "id": 13, - "mutability": "constant", - "name": "ROUNDING_CONSTANT", - "nameLocation": "2947:17:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "2933:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2933:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "commonType": { - "typeIdentifier": "t_rational_24_by_1", - "typeString": "int_const 24" - }, - "id": 12, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2967:2:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" + "body": { + "nodeType": "YulBlock", + "src": "12203:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12213:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12279:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12284:2:2", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "12220:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "12220:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12213:3:2" + } + ] }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "^", - "rightExpression": { - "hexValue": "3138", - "id": 11, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2970:2:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12385:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993", + "nodeType": "YulIdentifier", + "src": "12296:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "12296:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "12296:93:2" }, - "value": "18" - }, - "src": "2967:5:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_24_by_1", - "typeString": "int_const 24" - } + { + "nodeType": "YulAssignment", + "src": "12398:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12409:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12414:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12405:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "12405:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12398:3:2" + } + ] + } + ] }, - "visibility": "internal" - }, - { - "canonicalName": "ETHpool.TeamMember", - "id": 20, - "members": [ - { - "constant": false, - "id": 15, - "mutability": "mutable", - "name": "_addr", - "nameLocation": "3144:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3136:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 14, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3136:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, + "name": "abi_encode_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "constant": false, - "id": 17, - "mutability": "mutable", - "name": "_name", - "nameLocation": "3166:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3159:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - }, - "typeName": { - "id": 16, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3159:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, + "name": "pos", + "nodeType": "YulTypedName", + "src": "12191:3:2", + "type": "" + } + ], + "returnVariables": [ { - "constant": false, - "id": 19, - "mutability": "mutable", - "name": "_role", - "nameLocation": "3207:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3202:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 18, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3202:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" + "name": "end", + "nodeType": "YulTypedName", + "src": "12199:3:2", + "type": "" } ], - "name": "TeamMember", - "nameLocation": "3029:10:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3022:226:0", - "visibility": "public" + "src": "12057:366:2" }, { - "canonicalName": "ETHpool.Stakeholder", - "id": 27, - "members": [ - { - "constant": false, - "id": 22, - "mutability": "mutable", - "name": "_currentBalance", - "nameLocation": "3288:15:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3283:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 21, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3283:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 24, - "mutability": "mutable", - "name": "_compositionAtStartStaking", - "nameLocation": "3318:26:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3313:31:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "body": { + "nodeType": "YulBlock", + "src": "12600:248:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12610:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12622:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12633:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12618:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "12618:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12610:4:2" + } + ] }, - "typeName": { - "id": 23, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3313:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12657:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12668:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12653:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "12653:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12676:4:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12682:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12672:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "12672:20:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12646:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "12646:47:2" + }, + "nodeType": "YulExpressionStatement", + "src": "12646:47:2" }, - "visibility": "internal" - }, + { + "nodeType": "YulAssignment", + "src": "12702:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12836:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "12710:124:2" + }, + "nodeType": "YulFunctionCall", + "src": "12710:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12702:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "constant": false, - "id": 26, - "mutability": "mutable", - "name": "_timeStaking", - "nameLocation": "3359:12:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3354:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 25, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3354:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12580:9:2", + "type": "" } ], - "name": "Stakeholder", - "nameLocation": "3261:11:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3254:124:0", - "visibility": "public" + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12595:4:2", + "type": "" + } + ], + "src": "12429:419:2" }, { - "canonicalName": "ETHpool.Pool", - "id": 39, - "members": [ + "body": { + "nodeType": "YulBlock", + "src": "12960:58:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12982:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12990:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12978:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "12978:14:2" + }, + { + "hexValue": "506f6f6c20697320656d70747921", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12994:16:2", + "type": "", + "value": "Pool is empty!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12971:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "12971:40:2" + }, + "nodeType": "YulExpressionStatement", + "src": "12971:40:2" + } + ] + }, + "name": "store_literal_in_memory_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "constant": false, - "id": 29, - "mutability": "mutable", - "name": "poolBalance", - "nameLocation": "3411:11:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3406:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 28, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3406:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12952:6:2", + "type": "" + } + ], + "src": "12854:164:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13170:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13180:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13246:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13251:2:2", + "type": "", + "value": "14" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13187:58:2" + }, + "nodeType": "YulFunctionCall", + "src": "13187:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13180:3:2" + } + ] }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31, - "mutability": "mutable", - "name": "lastRewardMultiplied", - "nameLocation": "3437:20:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3432:25:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3432:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33, - "mutability": "mutable", - "name": "rewardsCount", - "nameLocation": "3472:12:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3467:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3467:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "mutability": "mutable", - "name": "lastRewardTime", - "nameLocation": "3499:14:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3494:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 34, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3494:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 38, - "mutability": "mutable", - "name": "status", - "nameLocation": "3529:6:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3523:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - }, - "typeName": { - "id": 37, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 36, - "name": "State", - "nodeType": "IdentifierPath", - "referencedDeclaration": 8, - "src": "3523:5:0" + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13352:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12", + "nodeType": "YulIdentifier", + "src": "13263:88:2" + }, + "nodeType": "YulFunctionCall", + "src": "13263:93:2" }, - "referencedDeclaration": 8, - "src": "3523:5:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "visibility": "internal" - } - ], - "name": "Pool", - "nameLocation": "3391:4:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3384:158:0", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "eb63a59e", - "id": 44, - "mutability": "mutable", - "name": "UserList", - "nameLocation": "3588:8:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3548:48:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder)" - }, - "typeName": { - "id": 43, - "keyType": { - "id": 40, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3557:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "3548:32:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder)" - }, - "valueType": { - "id": 42, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41, - "name": "Stakeholder", - "nodeType": "IdentifierPath", - "referencedDeclaration": 27, - "src": "3568:11:0" + "nodeType": "YulExpressionStatement", + "src": "13263:93:2" }, - "referencedDeclaration": 27, - "src": "3568:11:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage_ptr", - "typeString": "struct ETHpool.Stakeholder" + { + "nodeType": "YulAssignment", + "src": "13365:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13376:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13381:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13372:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "13372:12:2" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13365:3:2" + } + ] } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "d515b1ce", - "id": 49, - "mutability": "mutable", - "name": "Team", - "nameLocation": "3641:4:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3602:43:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember)" + ] }, - "typeName": { - "id": 48, - "keyType": { - "id": 45, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3611:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "3602:31:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember)" - }, - "valueType": { - "id": 47, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46, - "name": "TeamMember", - "nodeType": "IdentifierPath", - "referencedDeclaration": 20, - "src": "3622:10:0" - }, - "referencedDeclaration": 20, - "src": "3622:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage_ptr", - "typeString": "struct ETHpool.TeamMember" - } + "name": "abi_encode_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13158:3:2", + "type": "" } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "f0228692", - "id": 52, - "mutability": "mutable", - "name": "poolStatus", - "nameLocation": "3663:10:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3651:22:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool" - }, - "typeName": { - "id": 51, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 50, - "name": "Pool", - "nodeType": "IdentifierPath", - "referencedDeclaration": 39, - "src": "3651:4:0" - }, - "referencedDeclaration": 39, - "src": "3651:4:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage_ptr", - "typeString": "struct ETHpool.Pool" + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13166:3:2", + "type": "" } - }, - "visibility": "public" + ], + "src": "13024:366:2" }, { "body": { - "id": 88, - "nodeType": "Block", - "src": "3693:275:0", + "nodeType": "YulBlock", + "src": "13567:248:2", "statements": [ { - "expression": { - "id": 61, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 55, - "name": "Team", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49, - "src": "3703:4:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + "nodeType": "YulAssignment", + "src": "13577:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13589:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13600:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13585:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "13585:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13577:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13624:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13635:1:2", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13620:3:2" }, - "id": 58, - "indexExpression": { - "expression": { - "id": 56, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "3708:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "nodeType": "YulFunctionCall", + "src": "13620:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13643:4:2" }, - "id": 57, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3708:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13649:9:2" } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13639:3:2" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3703:16:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage", - "typeString": "struct ETHpool.TeamMember storage ref" - } - }, - "id": 59, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_role", - "nodeType": "MemberAccess", - "referencedDeclaration": 19, - "src": "3703:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "nodeType": "YulFunctionCall", + "src": "13639:20:2" } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13613:6:2" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 60, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3728:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3703:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "13613:47:2" }, - "id": 62, - "nodeType": "ExpressionStatement", - "src": "3703:26:0" + "nodeType": "YulExpressionStatement", + "src": "13613:47:2" }, { - "expression": { - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 63, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3769:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 65, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "status", - "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "3769:17:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" + "nodeType": "YulAssignment", + "src": "13669:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13803:4:2" } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13677:124:2" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 66, - "name": "State", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "3789:5:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_State_$8_$", - "typeString": "type(enum ETHpool.State)" - } + "nodeType": "YulFunctionCall", + "src": "13677:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13669:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13547:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13562:4:2", + "type": "" + } + ], + "src": "13396:419:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13947:206:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13957:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13969:9:2" }, - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Running", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3789:13:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13980:2:2", + "type": "", + "value": "64" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13965:3:2" }, - "src": "3769:33:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } + "nodeType": "YulFunctionCall", + "src": "13965:18:2" }, - "id": 69, - "nodeType": "ExpressionStatement", - "src": "3769:33:0" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13957:4:2" + } + ] }, { "expression": { - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 70, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3812:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14037:6:2" }, - "id": 72, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "3812:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 73, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3837:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3812:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75, - "nodeType": "ExpressionStatement", - "src": "3812:26:0" - }, - { - "expression": { - "id": 80, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 76, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3889:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 78, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastRewardMultiplied", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "3889:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14050:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14061:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14046:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "14046:17:2" } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "13993:43:2" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 79, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3923:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3889:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "13993:71:2" }, - "id": 81, - "nodeType": "ExpressionStatement", - "src": "3889:35:0" + "nodeType": "YulExpressionStatement", + "src": "13993:71:2" }, { "expression": { - "id": 86, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 82, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3934:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14118:6:2" }, - "id": 84, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "rewardsCount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33, - "src": "3934:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14131:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14142:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14127:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "14127:18:2" } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "14074:43:2" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 85, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3960:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:27:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14074:72:2" }, - "id": 87, - "nodeType": "ExpressionStatement", - "src": "3934:27:0" + "nodeType": "YulExpressionStatement", + "src": "14074:72:2" } ] }, - "id": 89, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 53, - "nodeType": "ParameterList", - "parameters": [], - "src": "3691:2:0" - }, - "returnParameters": { - "id": 54, - "nodeType": "ParameterList", - "parameters": [], - "src": "3693:0:0" - }, - "scope": 262, - "src": "3680:288:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13911:9:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13923:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13931:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13942:4:2", + "type": "" + } + ], + "src": "13821:332:2" }, { "body": { - "id": 132, - "nodeType": "Block", - "src": "4298:283:0", + "nodeType": "YulBlock", + "src": "14187:152:2", "statements": [ { "expression": { - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 96, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4308:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14204:1:2", + "type": "", + "value": "0" }, - "id": 98, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4308:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14207:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14197:6:2" }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 99, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4334:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "nodeType": "YulFunctionCall", + "src": "14197:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "14197:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14301:1:2", + "type": "", + "value": "4" }, - "id": 100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "4334:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14304:4:2", + "type": "", + "value": "0x22" } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14294:6:2" }, - "src": "4308:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14294:15:2" }, - "id": 102, - "nodeType": "ExpressionStatement", - "src": "4308:35:0" + "nodeType": "YulExpressionStatement", + "src": "14294:15:2" }, { "expression": { - "id": 108, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 103, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4353:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14325:1:2", + "type": "", + "value": "0" }, - "id": 105, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastRewardTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 35, - "src": "4353:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14328:4:2", + "type": "", + "value": "0x24" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14318:6:2" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 106, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "4381:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } + "nodeType": "YulFunctionCall", + "src": "14318:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "14318:15:2" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "14159:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14396:269:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14406:22:2", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14420:4:2" }, - "id": 107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "4381:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14426:1:2", + "type": "", + "value": "2" } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "14416:3:2" }, - "src": "4353:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14416:12:2" }, - "id": 109, - "nodeType": "ExpressionStatement", - "src": "4353:43:0" + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14406:6:2" + } + ] }, { - "expression": { - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 110, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4406:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + "nodeType": "YulVariableDeclaration", + "src": "14437:38:2", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14467:4:2" }, - "id": 112, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastRewardMultiplied", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "4406:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14473:1:2", + "type": "", + "value": "1" } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14463:3:2" }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 113, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4442:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "4442:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 115, - "name": "ROUNDING_CONSTANT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "4454:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14463:12:2" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "14441:18:2", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14514:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14528:27:2", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14542:6:2" }, - "src": "4442:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14550:4:2", + "type": "", + "value": "0x7f" } - } - ], - "id": 117, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4441:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "expression": { - "id": 118, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4475:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14538:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "14538:17:2" }, - "id": 119, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4475:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4441:56:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14528:6:2" + } + ] } - }, - "src": "4406:91:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + ] }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "4406:91:0" - }, - { - "expression": { - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 123, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4507:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 125, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "rewardsCount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33, - "src": "4507:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "14494:18:2" } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14487:6:2" }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "31", - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4534:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4507:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14487:26:2" }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "4507:28:0" + "nodeType": "YulIf", + "src": "14484:81:2" }, { - "expression": { - "expression": { - "id": 129, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4552:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" + "body": { + "nodeType": "YulBlock", + "src": "14617:42:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "14631:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "14631:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "14631:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "14581:18:2" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14604:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14612:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "14601:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "14601:14:2" } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "14578:2:2" }, - "id": 130, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4552:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "14578:38:2" }, - "functionReturnParameters": 95, - "id": 131, - "nodeType": "Return", - "src": "4545:29:0" + "nodeType": "YulIf", + "src": "14575:84:2" } ] }, - "functionSelector": "b9ba5f8b", - "id": 133, - "implemented": true, - "kind": "function", - "modifiers": [ + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "id": 92, - "kind": "modifierInvocation", - "modifierName": { - "id": 91, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "4263:8:0" - }, - "nodeType": "ModifierInvocation", - "src": "4263:8:0" + "name": "data", + "nodeType": "YulTypedName", + "src": "14380:4:2", + "type": "" } ], - "name": "DepositRewards", - "nameLocation": "4231:14:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 90, - "nodeType": "ParameterList", - "parameters": [], - "src": "4245:2:0" - }, - "returnParameters": { - "id": 95, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 94, - "mutability": "mutable", - "name": "poolbalance", - "nameLocation": "4285:11:0", - "nodeType": "VariableDeclaration", - "scope": 133, - "src": "4280:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 93, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4280:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4279:18:0" - }, - "scope": 262, - "src": "4222:359:0", - "stateMutability": "payable", - "virtual": false, - "visibility": "public" + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14389:6:2", + "type": "" + } + ], + "src": "14345:320:2" }, { "body": { - "id": 181, - "nodeType": "Block", - "src": "4968:393:0", + "nodeType": "YulBlock", + "src": "14777:73:2", "statements": [ { "expression": { "arguments": [ { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14799:6:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14807:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14795:3:2" }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 137, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "4987:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 140, - "indexExpression": { - "expression": { - "id": 138, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4996:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4996:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4987:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 141, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_currentBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "4987:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 142, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5027:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4987:41:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "nodeType": "YulFunctionCall", + "src": "14795:14:2" }, { - "hexValue": "506c6561736520666972737420706572666f726d2061207769746864726177616c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973652e", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, + "hexValue": "5374616b65206d7573742062652067726561746572207468616e20302e", "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5030:68:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", - "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" - }, - "value": "Please first perform a withdrawal. We will solve in V2, I promise." + "nodeType": "YulLiteral", + "src": "14811:31:2", + "type": "", + "value": "Stake must be greater than 0." } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", - "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" - } - ], - "id": 136, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "4978:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14788:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "14788:55:2" + }, + "nodeType": "YulExpressionStatement", + "src": "14788:55:2" + } + ] + }, + "name": "store_literal_in_memory_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "14769:6:2", + "type": "" + } + ], + "src": "14671:179:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15002:220:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15012:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15078:3:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15083:2:2", + "type": "", + "value": "29" } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15019:58:2" }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4978:121:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "nodeType": "YulFunctionCall", + "src": "15019:67:2" }, - "id": 146, - "nodeType": "ExpressionStatement", - "src": "4978:121:0" + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15012:3:2" + } + ] }, { "expression": { - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 147, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5109:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 149, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "5109:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15184:3:2" } + ], + "functionName": { + "name": "store_literal_in_memory_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b", + "nodeType": "YulIdentifier", + "src": "15095:88:2" }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 150, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5135:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "nodeType": "YulFunctionCall", + "src": "15095:93:2" + }, + "nodeType": "YulExpressionStatement", + "src": "15095:93:2" + }, + { + "nodeType": "YulAssignment", + "src": "15197:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15208:3:2" }, - "id": 151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "5135:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15213:2:2", + "type": "", + "value": "32" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15204:3:2" }, - "src": "5109:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "15204:12:2" }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "5109:35:0" - }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15197:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14990:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14998:3:2", + "type": "" + } + ], + "src": "14856:366:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15399:248:2", + "statements": [ { - "expression": { - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 154, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5154:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 157, - "indexExpression": { - "expression": { - "id": 155, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5163:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5163:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5154:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 158, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_currentBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "5154:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 159, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5193:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "nodeType": "YulAssignment", + "src": "15409:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15421:9:2" }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "5193:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15432:2:2", + "type": "", + "value": "32" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15417:3:2" }, - "src": "5154:48:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "15417:18:2" }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "5154:48:0" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15409:4:2" + } + ] }, { "expression": { - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 163, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5212:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15456:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15467:1:2", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15452:3:2" }, - "id": 166, - "indexExpression": { - "expression": { - "id": 164, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5221:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "nodeType": "YulFunctionCall", + "src": "15452:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15475:4:2" }, - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5221:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15481:9:2" } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15471:3:2" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5212:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 167, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_compositionAtStartStaking", - "nodeType": "MemberAccess", - "referencedDeclaration": 24, - "src": "5212:47:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 168, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5262:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 169, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastRewardMultiplied", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "5262:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "nodeType": "YulFunctionCall", + "src": "15471:20:2" } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15445:6:2" }, - "src": "5212:81:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "15445:47:2" }, - "id": 171, - "nodeType": "ExpressionStatement", - "src": "5212:81:0" + "nodeType": "YulExpressionStatement", + "src": "15445:47:2" }, { - "expression": { - "id": 179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 172, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5303:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 175, - "indexExpression": { - "expression": { - "id": 173, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5312:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5312:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5303:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 176, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_timeStaking", - "nodeType": "MemberAccess", - "referencedDeclaration": 26, - "src": "5303:33:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 177, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "5339:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5339:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "nodeType": "YulAssignment", + "src": "15501:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15635:4:2" } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15509:124:2" }, - "src": "5303:51:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "15509:131:2" }, - "id": 180, - "nodeType": "ExpressionStatement", - "src": "5303:51:0" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15501:4:2" + } + ] } ] }, - "functionSelector": "de20bc92", - "id": 182, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "Stake", - "nameLocation": "4945:5:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 134, - "nodeType": "ParameterList", - "parameters": [], - "src": "4950:2:0" + "name": "abi_encode_tuple_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15379:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15394:4:2", + "type": "" + } + ], + "src": "15228:419:2" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_string_memory_ptr_t_bool__to_t_string_memory_ptr_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function validator_assert_t_enum$_State_$8(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_State_$8(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_State_$8(value)\n }\n\n function convert_t_enum$_State_$8_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_State_$8(value)\n }\n\n function abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_State_$8_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_enum$_State_$8__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_enum$_State_$8_to_t_uint8_fromStack(value5, add(headStart, 160))\n\n }\n\n function store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(memPtr) {\n\n mstore(add(memPtr, 0), \"Only the Team can call this func\")\n\n mstore(add(memPtr, 32), \"tion.\")\n\n }\n\n function abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(memPtr) {\n\n mstore(add(memPtr, 0), \"Only stakeholders can use this f\")\n\n mstore(add(memPtr, 32), \"unction.\")\n\n }\n\n function abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9(memPtr) {\n\n mstore(add(memPtr, 0), \"ETHpool is paused. This operatio\")\n\n mstore(add(memPtr, 32), \"n is not allowed.\")\n\n }\n\n function abi_encode_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 49)\n store_literal_in_memory_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function store_literal_in_memory_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055(memPtr) {\n\n mstore(add(memPtr, 0), \"ETHpool is ended. Only withdrawa\")\n\n mstore(add(memPtr, 32), \"ls allowed.\")\n\n }\n\n function abi_encode_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993(memPtr) {\n\n mstore(add(memPtr, 0), \"Rewards must be greater than 0.\")\n\n }\n\n function abi_encode_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12(memPtr) {\n\n mstore(add(memPtr, 0), \"Pool is empty!\")\n\n }\n\n function abi_encode_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b(memPtr) {\n\n mstore(add(memPtr, 0), \"Stake must be greater than 0.\")\n\n }\n\n function abi_encode_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "2826:6380:0:-:0;;;3983:370;;;;;;;;;;4031:4;4006;:16;4011:10;4006:16;;;;;;;;;;;;;;;:22;;;:29;;;;;;;;;;;;;;;;;;4095:13;4075:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;4143:1;4118:10;:22;;:26;;;;4223:1;4195:10;:25;;:29;;;;4308:1;4274:10;:31;;:35;;;;4345:1;4319:10;:23;;:27;;;;2826:6380;;7:180:2;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;2826:6380:0;;;;;;;", + "deployedSourceMap": "2826:6380:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8354:122;;;;;;;;;;;;;:::i;:::-;;8201:147;;;;;;;;;;;;;:::i;:::-;;6803:883;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:244;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8051:144;;;;;;;;;;;;;:::i;:::-;;8482:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4607:668;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5616:1028;;;:::i;:::-;;3610:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3713:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;2849:39;;;;;;;;;;;;;;;;;;;:::o;8354:122::-;8844:4;8818:30;;:4;:16;8823:10;8818:16;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:30;;;8810:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8424:13:::1;8404:10;:17;;;:33;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;8354:122::o:0;8201:147::-;8844:4;8818:30;;:4;:16;8823:10;8818:16;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:30;;;8810:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8268:11:::1;8248:10:::0;:17:::1;;;:31;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;8201:147::o:0;6803:883::-;6860:9;8709:1;8670:8;:20;8679:10;8670:20;;;;;;;;;;;;;;;:36;;;:40;8661:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;8975:12:::1;8954:33;;;;;;;;:::i;:::-;;:10;:17;;;;;;;;;;;;:33;;;;;;;;:::i;:::-;;::::0;8945:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6880:20:::2;6903:8:::0;:20:::2;6912:10;6903:20;;;;;;;;;;;;;;;:36;;;6880:59;;6959:23;6985:16;:14;:16::i;:::-;6959:42;;7038:22;7080:18;7064:15;:34;;;;:::i;:::-;7038:60;;7135:15;7109:10;:22;;;:41;;;;;;;:::i;:::-;;;;;;;;7202:18;7173:10;:25;;;:47;;;;;;;:::i;:::-;;;;;;;;7285:1;7246:8:::0;:20:::2;7255:10;7246:20;;;;;;;;;;;;;;;:36;;:40;;;;7376:10;7368:24;;:43;7393:17;7368:43;;;;;;;;;;;;;;;;;;;;;;;7364:316;;;7442:8;:20:::0;7451:10:::2;7442:20;;;;;;;;;;;;;;;;7435:27:::0;::::2;;;;;;;;;;;;;;;;;;;7495:10;7481:43;;;7506:17;7481:43;;;;;;:::i;:::-;;;;;;;;7545:17;7538:24;;;;;;;7364:316;7632:15;7593:8;:20:::0;7602:10:::2;7593:20;;;;;;;;;;;;;;;:36;;:54;;;;7668:1;7661:8;;;;;9051:1;6803:883:::0;:::o;7765:244::-;7821:17;8709:1;8670:8;:20;8679:10;8670:20;;;;;;;;;;;;;;;:36;;;:40;8661:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;3020:5:::1;7932:8;:20:::0;7941:10:::1;7932:20;;;;;;;;;;;;;;;:47;;;7898:10;:31:::0;::::1;;:81;;;;:::i;:::-;7857:8;:20:::0;7866:10:::1;7857:20;;;;;;;;;;;;;;;:36;;;:123;;;;:::i;:::-;7856:145;;;;:::i;:::-;7849:152;;7765:244:::0;:::o;8051:144::-;8844:4;8818:30;;:4;:16;8823:10;8818:16;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:30;;;8810:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8176:12:::1;8156:10;:17;;;:32;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;8051:144::o:0;8482:118::-;8844:4;8818:30;;:4;:16;8823:10;8818:16;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:30;;;8810:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8589:4:::1;8563;:17;8568:11;8563:17;;;;;;;;;;;;;;;:23;;;:30;;;;;;;;;;;;;;;;;;8482:118:::0;;:::o;4607:668::-;4686:16;8844:4;8818:30;;:4;:16;8823:10;8818:16;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:30;;;8810:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8975:12:::1;8954:33;;;;;;;;:::i;:::-;;:10;:17;;;;;;;;;;;;:33;;;;;;;;:::i;:::-;;::::0;8945:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9125:11:::2;9104:32:::0;::::2;;;;;;;:::i;:::-;;:10;:17;;;;;;;;;;;;:32;;;;;;;;:::i;:::-;;::::0;9095:89:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;4735:1:::3;4723:9;:13;4714:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4813:1;4787:10;:22;;;:27;4783:362;;4858:15;4830:10;:25;;:43;;;;4956:10;:22;;;3020:5;4923:9;:29;;;;:::i;:::-;4922:56;;;;:::i;:::-;4887:10;:31:::0;::::3;;:91;;;;;;;:::i;:::-;;;;;;;;5021:9;4992:10;:25;;;:38;;;;;;;:::i;:::-;;;;;;;;5071:1;5044:10;:23;;;:28;;;;;;;:::i;:::-;;;;;;;;4783:362;;;5110:24;;;;;;;;;;:::i;:::-;;;;;;;;4783:362;5159:70;5179:10;:22;;;5203:10;:25;;;5159:70;;;;;;;:::i;:::-;;;;;;;;5246:10;:22;;;5239:29;;4607:668:::0;:::o;3664:43::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5616:1028::-;8975:12;8954:33;;;;;;;;:::i;:::-;;:10;:17;;;;;;;;;;;;:33;;;;;;;;:::i;:::-;;;8945:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;9125:11:::1;9104:32:::0;::::1;;;;;;;:::i;:::-;;:10;:17;;;;;;;;;;;;:32;;;;;;;;:::i;:::-;;::::0;9095:89:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5699:1:::2;5687:9;:13;5679:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5788:1;5748:8:::0;:20:::2;5757:10;5748:20;;;;;;;;;;;;;;;:36;;;:41:::0;5744:819:::2;;5861:9;5822:8;:20:::0;5831:10:::2;5822:20;;;;;;;;;;;;;;;:36;;:48;;;;5934:10;:31:::0;::::2;;5884:8;:20:::0;5893:10:::2;5884:20;;;;;;;;;;;;;;;:47;;:81;;;;6015:15;5979:8;:20:::0;5988:10:::2;5979:20;;;;;;;;;;;;;;;:33;;:51;;;;6070:9;6044:10;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;5744:819;;;6155:15;6190:9;6173:16;:14;:16::i;:::-;:26;;;;:::i;:::-;6155:44;;6286:10;6246:8;:20:::0;6255:10:::2;6246:20;;;;;;;;;;;;;;;:36;;;:50;;;;;;;:::i;:::-;;;;;;;;6360:10;:31:::0;::::2;;6310:8;:20:::0;6319:10:::2;6310:20;;;;;;;;;;;;;;;:47;;:81;;;;6460:15;6424:8;:20:::0;6433:10:::2;6424:20;;;;;;;;;;;;;;;:33;;:51;;;;6515:10;6489;:22;;;:36;;;;;;;:::i;:::-;;;;;;;;6104:459;5744:819;6588:10;6577:60;;;6600:8;:20:::0;6609:10:::2;6600:20;;;;;;;;;;;;;;;:36;;;6577:60;;;;;;:::i;:::-;;;;;;;;5616:1028::o:0;3610:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3713:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:2:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:77::-;1434:7;1463:5;1452:16;;1397:77;;;:::o;1480:118::-;1567:24;1585:5;1567:24;:::i;:::-;1562:3;1555:37;1480:118;;:::o;1604:222::-;1697:4;1735:2;1724:9;1720:18;1712:26;;1748:71;1816:1;1805:9;1801:17;1792:6;1748:71;:::i;:::-;1604:222;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:90::-;2700:7;2743:5;2736:13;2729:21;2718:32;;2666:90;;;:::o;2762:116::-;2832:21;2847:5;2832:21;:::i;:::-;2825:5;2822:32;2812:60;;2868:1;2865;2858:12;2812:60;2762:116;:::o;2884:133::-;2927:5;2965:6;2952:20;2943:29;;2981:30;3005:5;2981:30;:::i;:::-;2884:133;;;;:::o;3023:468::-;3088:6;3096;3145:2;3133:9;3124:7;3120:23;3116:32;3113:119;;;3151:79;;:::i;:::-;3113:119;3271:1;3296:53;3341:7;3332:6;3321:9;3317:22;3296:53;:::i;:::-;3286:63;;3242:117;3398:2;3424:50;3466:7;3457:6;3446:9;3442:22;3424:50;:::i;:::-;3414:60;;3369:115;3023:468;;;;;:::o;3497:329::-;3556:6;3605:2;3593:9;3584:7;3580:23;3576:32;3573:119;;;3611:79;;:::i;:::-;3573:119;3731:1;3756:53;3801:7;3792:6;3781:9;3777:22;3756:53;:::i;:::-;3746:63;;3702:117;3497:329;;;;:::o;3832:109::-;3913:21;3928:5;3913:21;:::i;:::-;3908:3;3901:34;3832:109;;:::o;3947:411::-;4082:4;4120:2;4109:9;4105:18;4097:26;;4169:9;4163:4;4159:20;4155:1;4144:9;4140:17;4133:47;4197:78;4270:4;4261:6;4197:78;:::i;:::-;4189:86;;4285:66;4347:2;4336:9;4332:18;4323:6;4285:66;:::i;:::-;3947:411;;;;;:::o;4364:442::-;4513:4;4551:2;4540:9;4536:18;4528:26;;4564:71;4632:1;4621:9;4617:17;4608:6;4564:71;:::i;:::-;4645:72;4713:2;4702:9;4698:18;4689:6;4645:72;:::i;:::-;4727;4795:2;4784:9;4780:18;4771:6;4727:72;:::i;:::-;4364:442;;;;;;:::o;4812:180::-;4860:77;4857:1;4850:88;4957:4;4954:1;4947:15;4981:4;4978:1;4971:15;4998:112;5078:1;5071:5;5068:12;5058:46;;5084:18;;:::i;:::-;5058:46;4998:112;:::o;5116:125::-;5160:7;5189:5;5178:16;;5195:40;5229:5;5195:40;:::i;:::-;5116:125;;;:::o;5247:::-;5302:9;5335:31;5360:5;5335:31;:::i;:::-;5322:44;;5247:125;;;:::o;5378:141::-;5470:42;5506:5;5470:42;:::i;:::-;5465:3;5458:55;5378:141;;:::o;5525:785::-;5763:4;5801:3;5790:9;5786:19;5778:27;;5815:71;5883:1;5872:9;5868:17;5859:6;5815:71;:::i;:::-;5896:72;5964:2;5953:9;5949:18;5940:6;5896:72;:::i;:::-;5978;6046:2;6035:9;6031:18;6022:6;5978:72;:::i;:::-;6060;6128:2;6117:9;6113:18;6104:6;6060:72;:::i;:::-;6142:73;6210:3;6199:9;6195:19;6186:6;6142:73;:::i;:::-;6225:78;6298:3;6287:9;6283:19;6274:6;6225:78;:::i;:::-;5525:785;;;;;;;;;:::o;6316:224::-;6456:34;6452:1;6444:6;6440:14;6433:58;6525:7;6520:2;6512:6;6508:15;6501:32;6316:224;:::o;6546:366::-;6688:3;6709:67;6773:2;6768:3;6709:67;:::i;:::-;6702:74;;6785:93;6874:3;6785:93;:::i;:::-;6903:2;6898:3;6894:12;6887:19;;6546:366;;;:::o;6918:419::-;7084:4;7122:2;7111:9;7107:18;7099:26;;7171:9;7165:4;7161:20;7157:1;7146:9;7142:17;7135:47;7199:131;7325:4;7199:131;:::i;:::-;7191:139;;6918:419;;;:::o;7343:227::-;7483:34;7479:1;7471:6;7467:14;7460:58;7552:10;7547:2;7539:6;7535:15;7528:35;7343:227;:::o;7576:366::-;7718:3;7739:67;7803:2;7798:3;7739:67;:::i;:::-;7732:74;;7815:93;7904:3;7815:93;:::i;:::-;7933:2;7928:3;7924:12;7917:19;;7576:366;;;:::o;7948:419::-;8114:4;8152:2;8141:9;8137:18;8129:26;;8201:9;8195:4;8191:20;8187:1;8176:9;8172:17;8165:47;8229:131;8355:4;8229:131;:::i;:::-;8221:139;;7948:419;;;:::o;8373:236::-;8513:34;8509:1;8501:6;8497:14;8490:58;8582:19;8577:2;8569:6;8565:15;8558:44;8373:236;:::o;8615:366::-;8757:3;8778:67;8842:2;8837:3;8778:67;:::i;:::-;8771:74;;8854:93;8943:3;8854:93;:::i;:::-;8972:2;8967:3;8963:12;8956:19;;8615:366;;;:::o;8987:419::-;9153:4;9191:2;9180:9;9176:18;9168:26;;9240:9;9234:4;9230:20;9226:1;9215:9;9211:17;9204:47;9268:131;9394:4;9268:131;:::i;:::-;9260:139;;8987:419;;;:::o;9412:180::-;9460:77;9457:1;9450:88;9557:4;9554:1;9547:15;9581:4;9578:1;9571:15;9598:305;9638:3;9657:20;9675:1;9657:20;:::i;:::-;9652:25;;9691:20;9709:1;9691:20;:::i;:::-;9686:25;;9845:1;9777:66;9773:74;9770:1;9767:81;9764:107;;;9851:18;;:::i;:::-;9764:107;9895:1;9892;9888:9;9881:16;;9598:305;;;;:::o;9909:191::-;9949:4;9969:20;9987:1;9969:20;:::i;:::-;9964:25;;10003:20;10021:1;10003:20;:::i;:::-;9998:25;;10042:1;10039;10036:8;10033:34;;;10047:18;;:::i;:::-;10033:34;10092:1;10089;10085:9;10077:17;;9909:191;;;;:::o;10106:348::-;10146:7;10169:20;10187:1;10169:20;:::i;:::-;10164:25;;10203:20;10221:1;10203:20;:::i;:::-;10198:25;;10391:1;10323:66;10319:74;10316:1;10313:81;10308:1;10301:9;10294:17;10290:105;10287:131;;;10398:18;;:::i;:::-;10287:131;10446:1;10443;10439:9;10428:20;;10106:348;;;;:::o;10460:180::-;10508:77;10505:1;10498:88;10605:4;10602:1;10595:15;10629:4;10626:1;10619:15;10646:185;10686:1;10703:20;10721:1;10703:20;:::i;:::-;10698:25;;10737:20;10755:1;10737:20;:::i;:::-;10732:25;;10776:1;10766:35;;10781:18;;:::i;:::-;10766:35;10823:1;10820;10816:9;10811:14;;10646:185;;;;:::o;10837:230::-;10977:34;10973:1;10965:6;10961:14;10954:58;11046:13;11041:2;11033:6;11029:15;11022:38;10837:230;:::o;11073:366::-;11215:3;11236:67;11300:2;11295:3;11236:67;:::i;:::-;11229:74;;11312:93;11401:3;11312:93;:::i;:::-;11430:2;11425:3;11421:12;11414:19;;11073:366;;;:::o;11445:419::-;11611:4;11649:2;11638:9;11634:18;11626:26;;11698:9;11692:4;11688:20;11684:1;11673:9;11669:17;11662:47;11726:131;11852:4;11726:131;:::i;:::-;11718:139;;11445:419;;;:::o;11870:181::-;12010:33;12006:1;11998:6;11994:14;11987:57;11870:181;:::o;12057:366::-;12199:3;12220:67;12284:2;12279:3;12220:67;:::i;:::-;12213:74;;12296:93;12385:3;12296:93;:::i;:::-;12414:2;12409:3;12405:12;12398:19;;12057:366;;;:::o;12429:419::-;12595:4;12633:2;12622:9;12618:18;12610:26;;12682:9;12676:4;12672:20;12668:1;12657:9;12653:17;12646:47;12710:131;12836:4;12710:131;:::i;:::-;12702:139;;12429:419;;;:::o;12854:164::-;12994:16;12990:1;12982:6;12978:14;12971:40;12854:164;:::o;13024:366::-;13166:3;13187:67;13251:2;13246:3;13187:67;:::i;:::-;13180:74;;13263:93;13352:3;13263:93;:::i;:::-;13381:2;13376:3;13372:12;13365:19;;13024:366;;;:::o;13396:419::-;13562:4;13600:2;13589:9;13585:18;13577:26;;13649:9;13643:4;13639:20;13635:1;13624:9;13620:17;13613:47;13677:131;13803:4;13677:131;:::i;:::-;13669:139;;13396:419;;;:::o;13821:332::-;13942:4;13980:2;13969:9;13965:18;13957:26;;13993:71;14061:1;14050:9;14046:17;14037:6;13993:71;:::i;:::-;14074:72;14142:2;14131:9;14127:18;14118:6;14074:72;:::i;:::-;13821:332;;;;;:::o;14159:180::-;14207:77;14204:1;14197:88;14304:4;14301:1;14294:15;14328:4;14325:1;14318:15;14345:320;14389:6;14426:1;14420:4;14416:12;14406:22;;14473:1;14467:4;14463:12;14494:18;14484:81;;14550:4;14542:6;14538:17;14528:27;;14484:81;14612:2;14604:6;14601:14;14581:18;14578:38;14575:84;;14631:18;;:::i;:::-;14575:84;14396:269;14345:320;;;:::o;14671:179::-;14811:31;14807:1;14799:6;14795:14;14788:55;14671:179;:::o;14856:366::-;14998:3;15019:67;15083:2;15078:3;15019:67;:::i;:::-;15012:74;;15095:93;15184:3;15095:93;:::i;:::-;15213:2;15208:3;15204:12;15197:19;;14856:366;;;:::o;15228:419::-;15394:4;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15228:419;;;:::o", + "source": "//SPDX-License-Identifier: GPL-3.0\n\npragma solidity >=0.8.0 <0.9.0;\n// >0.8 to avoid use of SafeMath functions\n//But, if you want it...\n//import \"github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol\";\n//using SafeMath for uint; // \n//Better use Pausable Library, but it's only for fun\n\n/*\nSummary\nETHPool provides a service where people can deposit ETH and they will receive weekly rewards. \nUsers must be able to take out their deposits along with their portion of rewards at any time. \nNew rewards are deposited manually into the pool by the ETHPool team each week using a contract function.\n\nRequirements\nOnly the team can deposit rewards.\nDeposited rewards go to the pool of users, not to individual users.\nUsers should be able to withdraw their deposits along with their share of rewards considering the time when they deposited.\nExample:\n\nLet say we have user A and B and team T.\n\nA deposits 100, and B deposits 300 for a total of 400 in the pool.\nNow A has 25% of the pool and B has 75%. \nWhen T deposits 200 rewards, A should be able to withdraw 150 and B 450.\n\nWhat if the following happens? \nA deposits then T deposits then B deposits then A withdraws and finally B withdraws. \nA should get their deposit + all the rewards. \nB should only get their deposit because rewards were sent to the pool before they participated.\n*/\n\n/* \n How it works?\n First of all, we need to understand that the reward mechanism cannot be automatic. (No FOR or WHILE allowed!)\n So, the stakeholders by themselves need to calculate their own reward (Don't worry, a function will do for us)\n\n Because the staking cannot be negative, we will save the accumulation of rewards proportional to the pool at the time of deposit.\n For each stakeholder, we will save the composition of the pool at the time of staking.\n To calculate the reward, we will substract the sum of rewards at the current time minus the composition of the pool at the time of staking for each user.\n This is the explanation of why cannot be automatic at the time of deposit rewards.\n\n Some assumptions has been taken:\n - Users withdrawn all of the staking and rewards. No partial withdraw allowed (Well, in fact, can be a full withdraw with a new deposit of the diff)\n - Users cannot add funds to their staking (As above, we can consider a full withdraw, and a new staking)\n - Some constants will be multiplied for an arbitrary big constant (10^18), to reduce rounding errors in division.\n - Can be optimized for gas consumption. But for this challenge and for educational purposes, we can take the risk. And testnet is \"free\".\n - Bugs? Everywhere. Not ready for production or resale.\n\n Credits: https://explorer.callisto.network/address/0xE2E4Cf144F4365AAa023da04918A64072C284201/contracts\n (Thanks Erik!)\n*/\n\ncontract ETHpool {\n string public constant name = \"ETHpool\";\n enum State {Running, Paused, Ended } //staking can be done only if it state is running.\n uint constant ROUNDING_CONSTANT = 10e18; //To minimize rounding errors at divisions\n\n struct TeamMember { //there are no specifications for TEAM, so, I understand that can be a lot of people.\n string _name; //It's not necessary\n bool _role; // True for active Team Members\n }\n\n struct Stakeholder {\n uint _currentBalance;\n uint _compositionAtStartStaking;\n uint _timeStaking;\n }\n\n struct Pool {\n uint poolBalance;\n uint rewardsBalance;\n uint lastRewardMultiplied;\n uint rewardsCount;\n uint lastRewardTime;\n State status;\n }\n\n mapping( address => Stakeholder) public UserList;\n mapping( address => TeamMember) public Team;\n Pool public poolStatus;\n\n //Some events to get data outside of the blockchain\n event StakeEvent(address indexed _from, uint _value);\n event WithdrawEvent(address indexed _to, uint _value);\n event DepositRewardsEvent(uint _poolBalance, uint _rewards);\n\n\n\n constructor(){\n Team[msg.sender]._role = true; // Team member role assigned.\n poolStatus.status = State.Running;\n poolStatus.poolBalance = 0; // Do not transfer at construction time!\n poolStatus.rewardsBalance = 0; // Do not transfer at construction time\n poolStatus.lastRewardMultiplied = 0;\n poolStatus.rewardsCount = 0;\n }\n\n\n // The main functions: Stake() , DepositRewards() , Withdraw()\n\n // DepositRewards: The team can call this function to deposit rewards to the pool.\n // It will update the last reward of the pool, as rewards*ROUNDING_CONSTANT/PoolBalance\n function DepositRewards() external payable onlyTeam notPaused notEnded returns(uint poolbalance) {\n require( msg.value > 0, \"Rewards must be greater than 0.\" );\n if( poolStatus.poolBalance != 0) {\n poolStatus.lastRewardTime = block.timestamp;\n poolStatus.lastRewardMultiplied += (msg.value * ROUNDING_CONSTANT) / poolStatus.poolBalance;\n poolStatus.rewardsBalance += msg.value;\n poolStatus.rewardsCount += 1;\n }\n else{\n revert(\"Pool is empty!\");\n }\n emit DepositRewardsEvent(poolStatus.poolBalance, poolStatus.rewardsBalance);\n return poolStatus.poolBalance;\n }\n \n // Stake: The users can call \"Stake\" to stake some ETH (or your network coin of value)\n // All network users can perform this function, to become \"USERS\"\n // TODO: We need to check if the user already exists, and **need to perform first a withdrawal next to a new deposit**.\n // In V2, it will be an automatic claim.\n\n function Stake() external notPaused notEnded payable {\n require(msg.value > 0, \"Stake must be greater than 0.\");\n if( UserList[msg.sender]._currentBalance == 0 ) { //first staking\n UserList[msg.sender]._currentBalance = msg.value;\n UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied;\n UserList[msg.sender]._timeStaking = block.timestamp;\n poolStatus.poolBalance += msg.value;\n }\n else { //User add more funds to their stake\n uint newStaking = computeRewards()+msg.value; //Add old rewards plus new funds\n UserList[msg.sender]._currentBalance += newStaking;\n UserList[msg.sender]._compositionAtStartStaking = poolStatus.lastRewardMultiplied; //compute from now\n UserList[msg.sender]._timeStaking = block.timestamp;\n poolStatus.poolBalance += newStaking; //do not forget old funds!\n }\n emit StakeEvent(msg.sender, UserList[msg.sender]._currentBalance);\n }\n\n // Withdraw: Allows users to withdraw their deposits and rewards proportional at the time being.\n // FIXME: At now, only allows full withdrawals.\n function Withdraw() external onlyUsers notPaused returns(uint sent){\n uint balanceFromPool = UserList[msg.sender]._currentBalance; //deposit\n uint balanceFromRewards = computeRewards(); // rewards\n uint allowedToWithdraw = balanceFromPool+balanceFromRewards ;\n poolStatus.poolBalance -= balanceFromPool; // From pool\n poolStatus.rewardsBalance -= balanceFromRewards; // From rewards\n UserList[msg.sender]._currentBalance = 0;\n\n // Did you reentrant? (yes) what did it cost? (everything)\n if (payable(msg.sender).send(allowedToWithdraw)) { \n delete UserList[msg.sender];\n emit WithdrawEvent(msg.sender,allowedToWithdraw);\n return allowedToWithdraw;\n } else {\n UserList[msg.sender]._currentBalance = balanceFromPool;\n return 0;\n }\n }\n\n // Viewer functions: Allows users and team to see some computations.\n function computeRewards() public view onlyUsers returns(uint withdrawable){\n return (UserList[msg.sender]._currentBalance * ( poolStatus.lastRewardMultiplied - UserList[msg.sender]._compositionAtStartStaking)) / ROUNDING_CONSTANT ;\n }\n\n //Pool Administration functions\n function pausePool() external onlyTeam { //If something went wrong, and we need time to proceed.\n poolStatus.status = State.Paused;\n }\n\n function endPool() external onlyTeam {\n poolStatus.status = State.Ended; //If the pool dies. Only allow users to withdraw their funds.\n }\n\n function resumePool() external onlyTeam {\n poolStatus.status = State.Running; //Everything is up and running.\n }\n\n function modifyTeam(address teamAddress , bool role) external onlyTeam {\n Team[teamAddress]._role = role;\n }\n\n //Modifiers section\n modifier onlyUsers() {\n require( UserList[msg.sender]._currentBalance > 0 , \"Only stakeholders can use this function.\");\n _;\n }\n\n modifier onlyTeam() {\n require(Team[msg.sender]._role == true, \"Only the Team can call this function.\");\n _;\n }\n\n modifier notPaused() {\n require( poolStatus.status != State.Paused, \"ETHpool is paused. This operation is not allowed.\");\n _;\n }\n\n modifier notEnded() {\n require( poolStatus.status != State.Ended, \"ETHpool is ended. Only withdrawals allowed.\");\n _; \n }\n}", + "sourcePath": "T:\\Desarrollos\\Experimentos\\Exactly\\exactly-private\\contracts\\ETHpool.sol", + "ast": { + "absolutePath": "project:/contracts/ETHpool.sol", + "exportedSymbols": { + "ETHpool": [ + 519 + ] + }, + "id": 520, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "36:31:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ETHpool", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 519, + "linearizedBaseContracts": [ + 519 + ], + "name": "ETHpool", + "nameLocation": "2835:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "06fdde03", + "id": 4, + "mutability": "constant", + "name": "name", + "nameLocation": "2872:4:0", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "2849:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, - "returnParameters": { - "id": 135, - "nodeType": "ParameterList", - "parameters": [], - "src": "4968:0:0" + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2849:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "455448706f6f6c", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2879:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_33b544d45538fe7ededd99443ce651494393ca61ca8f1ce87f840a9674fdbf0f", + "typeString": "literal_string \"ETHpool\"" + }, + "value": "ETHpool" }, - "scope": 262, - "src": "4936:425:0", - "stateMutability": "payable", - "virtual": false, "visibility": "public" }, { - "body": { - "id": 191, - "nodeType": "Block", - "src": "5570:26:0", - "statements": [ - { - "expression": { - "hexValue": "31", - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5588:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "functionReturnParameters": 188, - "id": 190, - "nodeType": "Return", - "src": "5581:8:0" - } - ] - }, - "functionSelector": "57ea89b6", - "id": 192, - "implemented": true, - "kind": "function", - "modifiers": [ + "canonicalName": "ETHpool.State", + "id": 8, + "members": [ { - "id": 185, - "kind": "modifierInvocation", - "modifierName": { - "id": 184, - "name": "onlyUsers", - "nodeType": "IdentifierPath", - "referencedDeclaration": 246, - "src": "5547:9:0" - }, - "nodeType": "ModifierInvocation", - "src": "5547:9:0" + "id": 5, + "name": "Running", + "nameLocation": "2906:7:0", + "nodeType": "EnumValue", + "src": "2906:7:0" + }, + { + "id": 6, + "name": "Paused", + "nameLocation": "2915:6:0", + "nodeType": "EnumValue", + "src": "2915:6:0" + }, + { + "id": 7, + "name": "Ended", + "nameLocation": "2923:5:0", + "nodeType": "EnumValue", + "src": "2923:5:0" } ], - "name": "Withdraw", - "nameLocation": "5529:8:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 183, - "nodeType": "ParameterList", - "parameters": [], - "src": "5537:2:0" - }, - "returnParameters": { - "id": 188, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 187, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 192, - "src": "5565:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 186, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5565:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5564:6:0" - }, - "scope": 262, - "src": "5520:76:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "name": "State", + "nameLocation": "2899:5:0", + "nodeType": "EnumDefinition", + "src": "2894:36:0" }, { - "body": { - "id": 204, - "nodeType": "Block", - "src": "5675:105:0", - "statements": [ - { - "expression": { - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 197, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5741:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 199, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "status", - "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5741:17:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 200, - "name": "State", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "5761:5:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_State_$8_$", - "typeString": "type(enum ETHpool.State)" - } - }, - "id": 201, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Paused", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "5761:12:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "src": "5741:32:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "id": 203, - "nodeType": "ExpressionStatement", - "src": "5741:32:0" - } - ] + "constant": true, + "id": 11, + "mutability": "constant", + "name": "ROUNDING_CONSTANT", + "nameLocation": "3000:17:0", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "2986:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "functionSelector": "aa09d5b7", - "id": 205, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 195, - "kind": "modifierInvocation", - "modifierName": { - "id": 194, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5666:8:0" - }, - "nodeType": "ModifierInvocation", - "src": "5666:8:0" + "typeName": { + "id": 9, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2986:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "name": "pausePool", - "nameLocation": "5647:9:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "5656:2:0" }, - "returnParameters": { - "id": 196, - "nodeType": "ParameterList", - "parameters": [], - "src": "5675:0:0" + "value": { + "hexValue": "3130653138", + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3020:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000_by_1", + "typeString": "int_const 10000000000000000000" + }, + "value": "10e18" }, - "scope": 262, - "src": "5638:142:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "visibility": "internal" }, { - "body": { - "id": 217, - "nodeType": "Block", - "src": "5821:102:0", - "statements": [ - { - "expression": { - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 210, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5831:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 212, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "status", - "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5831:17:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 213, - "name": "State", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "5851:5:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_State_$8_$", - "typeString": "type(enum ETHpool.State)" - } - }, - "id": 214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Ended", - "nodeType": "MemberAccess", - "referencedDeclaration": 7, - "src": "5851:11:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "src": "5831:31:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "id": 216, - "nodeType": "ExpressionStatement", - "src": "5831:31:0" - } - ] - }, - "functionSelector": "2d42cf7d", - "id": 218, - "implemented": true, - "kind": "function", - "modifiers": [ + "canonicalName": "ETHpool.TeamMember", + "id": 16, + "members": [ { - "id": 208, - "kind": "modifierInvocation", - "modifierName": { - "id": 207, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5812:8:0" + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "_name", + "nameLocation": "3196:5:0", + "nodeType": "VariableDeclaration", + "scope": 16, + "src": "3189:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" }, - "nodeType": "ModifierInvocation", - "src": "5812:8:0" + "typeName": { + "id": 12, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3189:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "_role", + "nameLocation": "3237:5:0", + "nodeType": "VariableDeclaration", + "scope": 16, + "src": "3232:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3232:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" } ], - "name": "endPool", - "nameLocation": "5795:7:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 206, - "nodeType": "ParameterList", - "parameters": [], - "src": "5802:2:0" - }, - "returnParameters": { - "id": 209, - "nodeType": "ParameterList", - "parameters": [], - "src": "5821:0:0" - }, - "scope": 262, - "src": "5786:137:0", - "stateMutability": "nonpayable", - "virtual": false, + "name": "TeamMember", + "nameLocation": "3082:10:0", + "nodeType": "StructDefinition", + "scope": 519, + "src": "3075:206:0", "visibility": "public" }, { - "body": { - "id": 230, - "nodeType": "Block", - "src": "5967:82:0", - "statements": [ - { - "expression": { - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 223, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5977:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 225, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "status", - "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5977:17:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 226, - "name": "State", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "5997:5:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_State_$8_$", - "typeString": "type(enum ETHpool.State)" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Running", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "5997:13:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "src": "5977:33:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "id": 229, - "nodeType": "ExpressionStatement", - "src": "5977:33:0" - } - ] - }, - "functionSelector": "11ec106b", - "id": 231, - "implemented": true, - "kind": "function", - "modifiers": [ + "canonicalName": "ETHpool.Stakeholder", + "id": 23, + "members": [ { - "id": 221, - "kind": "modifierInvocation", - "modifierName": { - "id": 220, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5958:8:0" + "constant": false, + "id": 18, + "mutability": "mutable", + "name": "_currentBalance", + "nameLocation": "3321:15:0", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "3316:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "nodeType": "ModifierInvocation", - "src": "5958:8:0" + "typeName": { + "id": 17, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3316:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "_compositionAtStartStaking", + "nameLocation": "3351:26:0", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "3346:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 19, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3346:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "_timeStaking", + "nameLocation": "3392:12:0", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "3387:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3387:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "name": "resumePool", - "nameLocation": "5938:10:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 219, - "nodeType": "ParameterList", - "parameters": [], - "src": "5948:2:0" - }, - "returnParameters": { - "id": 222, - "nodeType": "ParameterList", - "parameters": [], - "src": "5967:0:0" - }, - "scope": 262, - "src": "5929:120:0", - "stateMutability": "nonpayable", - "virtual": false, + "name": "Stakeholder", + "nameLocation": "3294:11:0", + "nodeType": "StructDefinition", + "scope": 519, + "src": "3287:124:0", "visibility": "public" }, { - "body": { - "id": 245, - "nodeType": "Block", - "src": "6100:123:0", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 234, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "6119:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 237, - "indexExpression": { - "expression": { - "id": 235, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "6128:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "6128:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6119:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 238, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_currentBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "6119:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6158:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6119:40:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066756e6374696f6e2e", - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6162:42:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", - "typeString": "literal_string \"Only stakeholders can use this function.\"" - }, - "value": "Only stakeholders can use this function." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", - "typeString": "literal_string \"Only stakeholders can use this function.\"" - } - ], - "id": 233, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "6110:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6110:95:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 243, - "nodeType": "ExpressionStatement", - "src": "6110:95:0" - }, - { - "id": 244, - "nodeType": "PlaceholderStatement", - "src": "6215:1:0" + "canonicalName": "ETHpool.Pool", + "id": 37, + "members": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "poolBalance", + "nameLocation": "3444:11:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3439:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 27, + "mutability": "mutable", + "name": "rewardsBalance", + "nameLocation": "3470:14:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3465:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3465:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "lastRewardMultiplied", + "nameLocation": "3499:20:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3494:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 28, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3494:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "rewardsCount", + "nameLocation": "3534:12:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3529:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3529:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "lastRewardTime", + "nameLocation": "3561:14:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3556:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3556:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "mutability": "mutable", + "name": "status", + "nameLocation": "3591:6:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "3585:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + }, + "typeName": { + "id": 35, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 34, + "name": "State", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8, + "src": "3585:5:0" + }, + "referencedDeclaration": 8, + "src": "3585:5:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "visibility": "internal" + } + ], + "name": "Pool", + "nameLocation": "3424:4:0", + "nodeType": "StructDefinition", + "scope": 519, + "src": "3417:187:0", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "eb63a59e", + "id": 42, + "mutability": "mutable", + "name": "UserList", + "nameLocation": "3650:8:0", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "3610:48:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "typeName": { + "id": 41, + "keyType": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3619:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ] + }, + "nodeType": "Mapping", + "src": "3610:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder)" + }, + "valueType": { + "id": 40, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 39, + "name": "Stakeholder", + "nodeType": "IdentifierPath", + "referencedDeclaration": 23, + "src": "3630:11:0" + }, + "referencedDeclaration": 23, + "src": "3630:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage_ptr", + "typeString": "struct ETHpool.Stakeholder" + } + } }, - "id": 246, - "name": "onlyUsers", - "nameLocation": "6088:9:0", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 232, - "nodeType": "ParameterList", - "parameters": [], - "src": "6097:2:0" + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d515b1ce", + "id": 47, + "mutability": "mutable", + "name": "Team", + "nameLocation": "3703:4:0", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "3664:43:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$16_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" }, - "src": "6079:144:0", - "virtual": false, - "visibility": "internal" + "typeName": { + "id": 46, + "keyType": { + "id": 43, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3673:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3664:31:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$16_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember)" + }, + "valueType": { + "id": 45, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 44, + "name": "TeamMember", + "nodeType": "IdentifierPath", + "referencedDeclaration": 16, + "src": "3684:10:0" + }, + "referencedDeclaration": 16, + "src": "3684:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$16_storage_ptr", + "typeString": "struct ETHpool.TeamMember" + } + } + }, + "visibility": "public" }, { - "body": { - "id": 260, - "nodeType": "Block", - "src": "6249:105:0", - "statements": [ + "constant": false, + "functionSelector": "f0228692", + "id": 50, + "mutability": "mutable", + "name": "poolStatus", + "nameLocation": "3725:10:0", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "3713:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool" + }, + "typeName": { + "id": 49, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 48, + "name": "Pool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 37, + "src": "3713:4:0" + }, + "referencedDeclaration": 37, + "src": "3713:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage_ptr", + "typeString": "struct ETHpool.Pool" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "b58845b0a64f92dd8d1ba04f905319d6be2021b57783b3d10155e7e36a84e128", + "id": 56, + "name": "StakeEvent", + "nameLocation": "3804:10:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "constant": false, + "id": 52, + "indexed": true, + "mutability": "mutable", + "name": "_from", + "nameLocation": "3831:5:0", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "3815:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 51, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3815:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 54, + "indexed": false, + "mutability": "mutable", + "name": "_value", + "nameLocation": "3843:6:0", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "3838:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 53, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3838:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3814:36:0" + }, + "src": "3798:53:0" + }, + { + "anonymous": false, + "eventSelector": "5dba113b49cfa7c90315e8e604e6b506f7abcb909b01dcb19ec39005086e68fc", + "id": 62, + "name": "WithdrawEvent", + "nameLocation": "3862:13:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "indexed": true, + "mutability": "mutable", + "name": "_to", + "nameLocation": "3892:3:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "3876:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 57, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3876:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 60, + "indexed": false, + "mutability": "mutable", + "name": "_value", + "nameLocation": "3902:6:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "3897:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 59, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3897:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3875:34:0" + }, + "src": "3856:54:0" + }, + { + "anonymous": false, + "eventSelector": "277795e41191c7435317bb3d7b4884a9412d1a36f88b2a6053edbdf534a88e02", + "id": 68, + "name": "DepositRewardsEvent", + "nameLocation": "3921:19:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "indexed": false, + "mutability": "mutable", + "name": "_poolBalance", + "nameLocation": "3946:12:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "3941:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 63, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3941:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66, + "indexed": false, + "mutability": "mutable", + "name": "_rewards", + "nameLocation": "3965:8:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "3960:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3960:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3940:34:0" + }, + "src": "3915:60:0" + }, + { + "body": { + "id": 110, + "nodeType": "Block", + "src": "3996:357:0", + "statements": [ + { + "expression": { + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 71, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4006:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$16_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } }, - "id": 255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 74, + "indexExpression": { "expression": { - "baseExpression": { - "id": 249, - "name": "Team", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49, - "src": "6267:4:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" - } - }, - "id": 252, - "indexExpression": { - "expression": { - "id": 250, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "6272:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "6272:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6267:16:0", + "id": 72, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4011:3:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage", - "typeString": "struct ETHpool.TeamMember storage ref" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 253, + "id": 73, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "_role", + "memberName": "sender", "nodeType": "MemberAccess", - "referencedDeclaration": 19, - "src": "6267:22:0", + "src": "4011:10:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "31", - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6293:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6267:27:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6374696f6e2e", - "id": 256, "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", + "isLValue": true, + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "6296:39:0", + "nodeType": "IndexAccess", + "src": "4006:16:0", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", - "typeString": "literal_string \"Only the Team can call this function.\"" - }, - "value": "Only the Team can call this function." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", - "typeString": "literal_string \"Only the Team can call this function.\"" + "typeIdentifier": "t_struct$_TeamMember_$16_storage", + "typeString": "struct ETHpool.TeamMember storage ref" } - ], - "id": 248, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "6259:7:0", + }, + "id": 75, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "4006:22:0", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 257, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4031:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4006:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 78, + "nodeType": "ExpressionStatement", + "src": "4006:29:0" + }, + { + "expression": { + "id": 84, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6259:77:0", - "tryCall": false, + "leftHandSide": { + "expression": { + "id": 79, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4075:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 81, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 36, + "src": "4075:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 82, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "4095:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Running", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "4095:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "4075:33:0", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" } }, - "id": 258, + "id": 85, "nodeType": "ExpressionStatement", - "src": "6259:77:0" + "src": "4075:33:0" }, { - "id": 259, - "nodeType": "PlaceholderStatement", - "src": "6346:1:0" - } - ] - }, - "id": 261, - "name": "onlyTeam", - "nameLocation": "6238:8:0", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 247, - "nodeType": "ParameterList", - "parameters": [], - "src": "6246:2:0" - }, - "src": "6229:125:0", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 263, - "src": "2773:3583:0", - "usedErrors": [] - } - ], - "src": "36:7112:0" - }, - "legacyAST": { - "absolutePath": "project:/contracts/ETHpool.sol", - "exportedSymbols": { - "ETHpool": [ - 262 - ] - }, - "id": 263, - "license": "GPL-3.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - ">=", - "0.8", - ".0", - "<", - "0.9", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "36:31:0" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ETHpool", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 262, - "linearizedBaseContracts": [ - 262 - ], - "name": "ETHpool", - "nameLocation": "2782:7:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "functionSelector": "06fdde03", - "id": 4, - "mutability": "constant", - "name": "name", - "nameLocation": "2819:4:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "2796:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 2, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2796:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "hexValue": "455448506f6f6c", - "id": 3, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2826:9:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b2b106900d554104599e0c086554bf83e27f672439251b0e995ef2d49c22fe9c", - "typeString": "literal_string \"ETHPool\"" - }, - "value": "ETHPool" - }, - "visibility": "public" - }, - { - "canonicalName": "ETHpool.State", - "id": 8, - "members": [ - { - "id": 5, - "name": "Running", - "nameLocation": "2853:7:0", - "nodeType": "EnumValue", - "src": "2853:7:0" - }, - { - "id": 6, - "name": "Paused", - "nameLocation": "2862:6:0", - "nodeType": "EnumValue", - "src": "2862:6:0" - }, - { - "id": 7, - "name": "Ended", - "nameLocation": "2870:5:0", - "nodeType": "EnumValue", - "src": "2870:5:0" - } - ], - "name": "State", - "nameLocation": "2846:5:0", - "nodeType": "EnumDefinition", - "src": "2841:36:0" - }, - { - "constant": true, - "id": 13, - "mutability": "constant", - "name": "ROUNDING_CONSTANT", - "nameLocation": "2947:17:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "2933:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2933:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "commonType": { - "typeIdentifier": "t_rational_24_by_1", - "typeString": "int_const 24" - }, - "id": 12, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2967:2:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "^", - "rightExpression": { - "hexValue": "3138", - "id": 11, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2970:2:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "2967:5:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_24_by_1", - "typeString": "int_const 24" - } - }, - "visibility": "internal" - }, - { - "canonicalName": "ETHpool.TeamMember", - "id": 20, - "members": [ - { - "constant": false, - "id": 15, - "mutability": "mutable", - "name": "_addr", - "nameLocation": "3144:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3136:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 14, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3136:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 17, - "mutability": "mutable", - "name": "_name", - "nameLocation": "3166:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3159:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - }, - "typeName": { - "id": 16, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3159:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 19, - "mutability": "mutable", - "name": "_role", - "nameLocation": "3207:5:0", - "nodeType": "VariableDeclaration", - "scope": 20, - "src": "3202:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 18, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3202:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "name": "TeamMember", - "nameLocation": "3029:10:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3022:226:0", - "visibility": "public" - }, - { - "canonicalName": "ETHpool.Stakeholder", - "id": 27, - "members": [ - { - "constant": false, - "id": 22, - "mutability": "mutable", - "name": "_currentBalance", - "nameLocation": "3288:15:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3283:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 21, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3283:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 24, - "mutability": "mutable", - "name": "_compositionAtStartStaking", - "nameLocation": "3318:26:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3313:31:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 23, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3313:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "expression": { + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 86, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4118:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 88, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "4118:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4143:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4118:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 91, + "nodeType": "ExpressionStatement", + "src": "4118:26:0" }, - "visibility": "internal" - }, - { - "constant": false, - "id": 26, - "mutability": "mutable", - "name": "_timeStaking", - "nameLocation": "3359:12:0", - "nodeType": "VariableDeclaration", - "scope": 27, - "src": "3354:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "expression": { + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 92, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4195:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 94, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "4195:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4223:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4195:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 97, + "nodeType": "ExpressionStatement", + "src": "4195:29:0" }, - "typeName": { - "id": 25, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3354:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + { + "expression": { + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 98, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4274:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4274:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4308:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4274:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 103, + "nodeType": "ExpressionStatement", + "src": "4274:35:0" }, - "visibility": "internal" - } - ], - "name": "Stakeholder", - "nameLocation": "3261:11:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3254:124:0", - "visibility": "public" - }, - { - "canonicalName": "ETHpool.Pool", - "id": 39, - "members": [ - { - "constant": false, - "id": 29, - "mutability": "mutable", - "name": "poolBalance", - "nameLocation": "3411:11:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3406:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 28, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3406:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31, - "mutability": "mutable", - "name": "lastRewardMultiplied", - "nameLocation": "3437:20:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3432:25:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3432:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33, - "mutability": "mutable", - "name": "rewardsCount", - "nameLocation": "3472:12:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3467:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3467:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "mutability": "mutable", - "name": "lastRewardTime", - "nameLocation": "3499:14:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3494:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 34, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3494:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 38, - "mutability": "mutable", - "name": "status", - "nameLocation": "3529:6:0", - "nodeType": "VariableDeclaration", - "scope": 39, - "src": "3523:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - }, - "typeName": { - "id": 37, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 36, - "name": "State", - "nodeType": "IdentifierPath", - "referencedDeclaration": 8, - "src": "3523:5:0" + { + "expression": { + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 104, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4319:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 106, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "4319:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4345:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4319:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "referencedDeclaration": 8, - "src": "3523:5:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "visibility": "internal" - } - ], - "name": "Pool", - "nameLocation": "3391:4:0", - "nodeType": "StructDefinition", - "scope": 262, - "src": "3384:158:0", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "eb63a59e", - "id": 44, - "mutability": "mutable", - "name": "UserList", - "nameLocation": "3588:8:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3548:48:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder)" - }, - "typeName": { - "id": 43, - "keyType": { - "id": 40, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3557:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "3548:32:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder)" - }, - "valueType": { - "id": 42, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 41, - "name": "Stakeholder", - "nodeType": "IdentifierPath", - "referencedDeclaration": 27, - "src": "3568:11:0" - }, - "referencedDeclaration": 27, - "src": "3568:11:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage_ptr", - "typeString": "struct ETHpool.Stakeholder" + "id": 109, + "nodeType": "ExpressionStatement", + "src": "4319:27:0" } - } + ] + }, + "id": 111, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [], + "src": "3994:2:0" + }, + "returnParameters": { + "id": 70, + "nodeType": "ParameterList", + "parameters": [], + "src": "3996:0:0" }, + "scope": 519, + "src": "3983:370:0", + "stateMutability": "nonpayable", + "virtual": false, "visibility": "public" }, { - "constant": false, - "functionSelector": "d515b1ce", - "id": 49, - "mutability": "mutable", - "name": "Team", - "nameLocation": "3641:4:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3602:43:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember)" - }, - "typeName": { - "id": 48, - "keyType": { - "id": 45, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3611:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "3602:31:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember)" + "body": { + "id": 184, + "nodeType": "Block", + "src": "4704:571:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 123, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4723:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4723:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4735:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4723:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "52657761726473206d7573742062652067726561746572207468616e20302e", + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4738:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993", + "typeString": "literal_string \"Rewards must be greater than 0.\"" + }, + "value": "Rewards must be greater than 0." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_07b361e00a40d14412aefb062ec3a5b21a5a357aad74a24a1c5679be7fdaa993", + "typeString": "literal_string \"Rewards must be greater than 0.\"" + } + ], + "id": 122, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "4714:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4714:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 129, + "nodeType": "ExpressionStatement", + "src": "4714:59:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 130, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4787:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 131, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "4787:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4813:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4787:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 172, + "nodeType": "Block", + "src": "5096:49:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "506f6f6c20697320656d70747921", + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5117:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12", + "typeString": "literal_string \"Pool is empty!\"" + }, + "value": "Pool is empty!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_bcc280cff6a9e9b93cb698c0ecaafaa9b9bcf1ef79f855f86d90446a4a1f2a12", + "typeString": "literal_string \"Pool is empty!\"" + } + ], + "id": 168, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967277, + 4294967277 + ], + "referencedDeclaration": 4294967277, + "src": "5110:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5110:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 171, + "nodeType": "ExpressionStatement", + "src": "5110:24:0" + } + ] + }, + "id": 173, + "nodeType": "IfStatement", + "src": "4783:362:0", + "trueBody": { + "id": 167, + "nodeType": "Block", + "src": "4816:267:0", + "statements": [ + { + "expression": { + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 134, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4830:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 136, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "4830:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 137, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "4858:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4858:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4830:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 140, + "nodeType": "ExpressionStatement", + "src": "4830:43:0" + }, + { + "expression": { + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 141, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4887:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "4887:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 144, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4923:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "4923:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 146, + "name": "ROUNDING_CONSTANT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "4935:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4923:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 148, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4922:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 149, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4956:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 150, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "4956:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4922:56:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4887:91:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "4887:91:0" + }, + { + "expression": { + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 154, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "4992:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "4992:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 157, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5021:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5021:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4992:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 160, + "nodeType": "ExpressionStatement", + "src": "4992:38:0" + }, + { + "expression": { + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 161, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "5044:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "rewardsCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 31, + "src": "5044:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5071:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5044:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 166, + "nodeType": "ExpressionStatement", + "src": "5044:28:0" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 175, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "5179:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 176, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "5179:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 177, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "5203:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "rewardsBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "5203:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 174, + "name": "DepositRewardsEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "5159:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5159:70:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 180, + "nodeType": "EmitStatement", + "src": "5154:75:0" + }, + { + "expression": { + "expression": { + "id": 181, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "5246:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "5246:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 121, + "id": 183, + "nodeType": "Return", + "src": "5239:29:0" + } + ] + }, + "functionSelector": "b9ba5f8b", + "id": 185, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 114, + "kind": "modifierInvocation", + "modifierName": { + "id": 113, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 492, + "src": "4650:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "4650:8:0" }, - "valueType": { - "id": 47, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46, - "name": "TeamMember", + { + "id": 116, + "kind": "modifierInvocation", + "modifierName": { + "id": 115, + "name": "notPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 505, + "src": "4659:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "4659:9:0" + }, + { + "id": 118, + "kind": "modifierInvocation", + "modifierName": { + "id": 117, + "name": "notEnded", "nodeType": "IdentifierPath", - "referencedDeclaration": 20, - "src": "3622:10:0" + "referencedDeclaration": 518, + "src": "4669:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "4669:8:0" + } + ], + "name": "DepositRewards", + "nameLocation": "4616:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [], + "src": "4630:2:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "poolbalance", + "nameLocation": "4691:11:0", + "nodeType": "VariableDeclaration", + "scope": 185, + "src": "4686:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4686:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4685:18:0" + }, + "scope": 519, + "src": "4607:668:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 294, + "nodeType": "Block", + "src": "5669:975:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 193, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5687:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5687:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5699:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5687:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5374616b65206d7573742062652067726561746572207468616e20302e", + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5702:31:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b", + "typeString": "literal_string \"Stake must be greater than 0.\"" + }, + "value": "Stake must be greater than 0." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_05ede4cef51b42b42ae16acb634cc6499f98b710b0e5c5d29d1ef04228f8705b", + "typeString": "literal_string \"Stake must be greater than 0.\"" + } + ], + "id": 192, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5679:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5679:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 199, + "nodeType": "ExpressionStatement", + "src": "5679:55:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 200, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "5748:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 203, + "indexExpression": { + "expression": { + "id": 201, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5757:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5757:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5748:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 204, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "5748:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5788:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5748:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 282, + "nodeType": "Block", + "src": "6104:459:0", + "statements": [ + { + "assignments": [ + 243 + ], + "declarations": [ + { + "constant": false, + "id": 243, + "mutability": "mutable", + "name": "newStaking", + "nameLocation": "6160:10:0", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "6155:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 242, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6155:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 249, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 244, + "name": "computeRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "6173:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6173:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 246, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6190:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6190:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6173:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6155:44:0" + }, + { + "expression": { + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 250, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "6246:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 253, + "indexExpression": { + "expression": { + "id": 251, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6255:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6255:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6246:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "6246:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 255, + "name": "newStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "6286:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6246:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 257, + "nodeType": "ExpressionStatement", + "src": "6246:50:0" + }, + { + "expression": { + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 258, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "6310:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 261, + "indexExpression": { + "expression": { + "id": 259, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6319:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6319:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6310:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_compositionAtStartStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 20, + "src": "6310:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 263, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "6360:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "6360:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6310:81:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 266, + "nodeType": "ExpressionStatement", + "src": "6310:81:0" + }, + { + "expression": { + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 267, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "6424:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 270, + "indexExpression": { + "expression": { + "id": 268, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6433:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6433:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6424:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_timeStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "6424:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 272, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "6460:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "6460:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6424:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 275, + "nodeType": "ExpressionStatement", + "src": "6424:51:0" + }, + { + "expression": { + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 276, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "6489:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 278, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "6489:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 279, + "name": "newStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "6515:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6489:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "6489:36:0" + } + ] + }, + "id": 283, + "nodeType": "IfStatement", + "src": "5744:819:0", + "trueBody": { + "id": 241, + "nodeType": "Block", + "src": "5792:298:0", + "statements": [ + { + "expression": { + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 207, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "5822:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 210, + "indexExpression": { + "expression": { + "id": 208, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5831:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5831:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5822:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 211, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "5822:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 212, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5861:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "5861:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5822:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "5822:48:0" + }, + { + "expression": { + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 216, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "5884:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 219, + "indexExpression": { + "expression": { + "id": 217, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5893:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5893:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5884:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 220, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_compositionAtStartStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 20, + "src": "5884:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 221, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "5934:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "5934:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5884:81:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 224, + "nodeType": "ExpressionStatement", + "src": "5884:81:0" + }, + { + "expression": { + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 225, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "5979:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 228, + "indexExpression": { + "expression": { + "id": 226, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "5988:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5988:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5979:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_timeStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "5979:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 230, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "6015:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "6015:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5979:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 233, + "nodeType": "ExpressionStatement", + "src": "5979:51:0" + }, + { + "expression": { + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 234, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "6044:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 236, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "poolBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 25, + "src": "6044:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 237, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6070:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6070:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6044:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "6044:35:0" + } + ] + } }, - "referencedDeclaration": 20, - "src": "3622:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage_ptr", - "typeString": "struct ETHpool.TeamMember" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "f0228692", - "id": 52, - "mutability": "mutable", - "name": "poolStatus", - "nameLocation": "3663:10:0", - "nodeType": "VariableDeclaration", - "scope": 262, - "src": "3651:22:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool" - }, - "typeName": { - "id": 51, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 50, - "name": "Pool", - "nodeType": "IdentifierPath", - "referencedDeclaration": 39, - "src": "3651:4:0" - }, - "referencedDeclaration": 39, - "src": "3651:4:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage_ptr", - "typeString": "struct ETHpool.Pool" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 88, - "nodeType": "Block", - "src": "3693:275:0", - "statements": [ { - "expression": { - "id": 61, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 55, - "name": "Team", + "eventCall": { + "arguments": [ + { + "expression": { + "id": 285, + "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49, - "src": "3703:4:0", + "referencedDeclaration": 4294967281, + "src": "6588:3:0", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", - "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 58, - "indexExpression": { - "expression": { - "id": 56, - "name": "msg", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6588:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "baseExpression": { + "id": 287, + "name": "UserList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "3708:3:0", + "referencedDeclaration": 42, + "src": "6600:8:0", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 290, + "indexExpression": { + "expression": { + "id": 288, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6609:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6609:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 57, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3708:10:0", + "nodeType": "IndexAccess", + "src": "6600:20:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" } }, + "id": 291, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3703:16:0", + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "6600:36:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage", - "typeString": "struct ETHpool.TeamMember storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "id": 59, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_role", - "nodeType": "MemberAccess", - "referencedDeclaration": 19, - "src": "3703:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 60, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3728:1:0", + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 284, + "name": "StakeEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 56, + "src": "6577:10:0", "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } }, - "src": "3703:26:0", + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6577:60:0", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 62, - "nodeType": "ExpressionStatement", - "src": "3703:26:0" + "id": 293, + "nodeType": "EmitStatement", + "src": "6572:65:0" + } + ] + }, + "functionSelector": "de20bc92", + "id": 295, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 188, + "kind": "modifierInvocation", + "modifierName": { + "id": 187, + "name": "notPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 505, + "src": "5642:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "5642:9:0" + }, + { + "id": 190, + "kind": "modifierInvocation", + "modifierName": { + "id": 189, + "name": "notEnded", + "nodeType": "IdentifierPath", + "referencedDeclaration": 518, + "src": "5652:8:0" }, + "nodeType": "ModifierInvocation", + "src": "5652:8:0" + } + ], + "name": "Stake", + "nameLocation": "5625:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [], + "src": "5630:2:0" + }, + "returnParameters": { + "id": 191, + "nodeType": "ParameterList", + "parameters": [], + "src": "5669:0:0" + }, + "scope": 519, + "src": "5616:1028:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 378, + "nodeType": "Block", + "src": "6870:816:0", + "statements": [ { - "expression": { - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 63, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3769:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 65, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "status", - "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "3769:17:0", + "assignments": [ + 305 + ], + "declarations": [ + { + "constant": false, + "id": 305, + "mutability": "mutable", + "name": "balanceFromPool", + "nameLocation": "6885:15:0", + "nodeType": "VariableDeclaration", + "scope": 378, + "src": "6880:20:0", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 66, - "name": "State", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "3789:5:0", + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 304, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6880:4:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_State_$8_$", - "typeString": "type(enum ETHpool.State)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Running", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3789:13:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" - } - }, - "src": "3769:33:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_State_$8", - "typeString": "enum ETHpool.State" + "visibility": "internal" } - }, - "id": 69, - "nodeType": "ExpressionStatement", - "src": "3769:33:0" - }, - { - "expression": { - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 70, - "name": "poolStatus", + ], + "id": 311, + "initialValue": { + "expression": { + "baseExpression": { + "id": 306, + "name": "UserList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3812:10:0", + "referencedDeclaration": 42, + "src": "6903:8:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 309, + "indexExpression": { + "expression": { + "id": 307, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6912:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6912:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 72, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "3812:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 73, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "3837:1:0", + "nodeType": "IndexAccess", + "src": "6903:20:0", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } }, - "src": "3812:26:0", + "id": 310, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "6903:36:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 75, - "nodeType": "ExpressionStatement", - "src": "3812:26:0" + "nodeType": "VariableDeclarationStatement", + "src": "6880:59:0" }, { - "expression": { - "id": 80, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 76, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3889:10:0", + "assignments": [ + 313 + ], + "declarations": [ + { + "constant": false, + "id": 313, + "mutability": "mutable", + "name": "balanceFromRewards", + "nameLocation": "6964:18:0", + "nodeType": "VariableDeclaration", + "scope": 378, + "src": "6959:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 312, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6959:4:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 78, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastRewardMultiplied", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "3889:31:0", + "visibility": "internal" + } + ], + "id": 316, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 314, + "name": "computeRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "6985:14:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 79, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3923:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3889:35:0", + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6985:16:0", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 81, - "nodeType": "ExpressionStatement", - "src": "3889:35:0" + "nodeType": "VariableDeclarationStatement", + "src": "6959:42:0" }, { - "expression": { - "id": 86, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 82, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "3934:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 84, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "rewardsCount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33, - "src": "3934:23:0", + "assignments": [ + 318 + ], + "declarations": [ + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "allowedToWithdraw", + "nameLocation": "7043:17:0", + "nodeType": "VariableDeclaration", + "scope": 378, + "src": "7038:22:0", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 85, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3960:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" }, - "value": "0" - }, - "src": "3934:27:0", - "typeDescriptions": { + "typeName": { + "id": 317, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7038:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 322, + "initialValue": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "id": 87, - "nodeType": "ExpressionStatement", - "src": "3934:27:0" - } - ] - }, - "id": 89, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 53, - "nodeType": "ParameterList", - "parameters": [], - "src": "3691:2:0" - }, - "returnParameters": { - "id": 54, - "nodeType": "ParameterList", - "parameters": [], - "src": "3693:0:0" - }, - "scope": 262, - "src": "3680:288:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 132, - "nodeType": "Block", - "src": "4298:283:0", - "statements": [ - { - "expression": { - "id": 101, + }, + "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 96, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4308:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 98, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4308:22:0", + "leftExpression": { + "id": 319, + "name": "balanceFromPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "7064:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 99, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4334:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "4334:9:0", + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 320, + "name": "balanceFromRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "7080:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4308:35:0", + "src": "7064:34:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 102, - "nodeType": "ExpressionStatement", - "src": "4308:35:0" + "nodeType": "VariableDeclarationStatement", + "src": "7038:60:0" }, { "expression": { - "id": 108, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 103, + "id": 323, "name": "poolStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4353:10:0", + "referencedDeclaration": 50, + "src": "7109:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeIdentifier": "t_struct$_Pool_$37_storage", "typeString": "struct ETHpool.Pool storage ref" } }, - "id": 105, + "id": 325, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberName": "lastRewardTime", + "memberName": "poolBalance", "nodeType": "MemberAccess", - "referencedDeclaration": 35, - "src": "4353:25:0", + "referencedDeclaration": 25, + "src": "7109:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", - "operator": "=", + "operator": "-=", "rightHandSide": { - "expression": { - "id": 106, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "4381:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "4381:15:0", + "id": 326, + "name": "balanceFromPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "7135:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4353:43:0", + "src": "7109:41:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 109, + "id": 328, "nodeType": "ExpressionStatement", - "src": "4353:43:0" + "src": "7109:41:0" }, { "expression": { - "id": 121, + "id": 333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 110, + "id": 329, "name": "poolStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4406:10:0", + "referencedDeclaration": 50, + "src": "7173:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeIdentifier": "t_struct$_Pool_$37_storage", "typeString": "struct ETHpool.Pool storage ref" } }, - "id": 112, + "id": 331, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberName": "lastRewardMultiplied", + "memberName": "rewardsBalance", "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "4406:31:0", + "referencedDeclaration": 27, + "src": "7173:25:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", - "operator": "+=", + "operator": "-=", "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 113, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4442:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "4442:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 115, - "name": "ROUNDING_CONSTANT", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "4454:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4442:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 117, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4441:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "expression": { - "id": 118, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4475:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 119, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4475:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4441:56:0", + "id": 332, + "name": "balanceFromRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "7202:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4406:91:0", + "src": "7173:47:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 122, + "id": 334, "nodeType": "ExpressionStatement", - "src": "4406:91:0" + "src": "7173:47:0" }, { "expression": { - "id": 127, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 123, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4507:10:0", + "baseExpression": { + "id": 335, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "7246:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 338, + "indexExpression": { + "expression": { + "id": 336, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7255:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7255:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7246:20:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" } }, - "id": 125, + "id": 339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberName": "rewardsCount", + "memberName": "_currentBalance", "nodeType": "MemberAccess", - "referencedDeclaration": 33, - "src": "4507:23:0", + "referencedDeclaration": 18, + "src": "7246:36:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", - "operator": "+=", + "operator": "=", "rightHandSide": { - "hexValue": "31", - "id": 126, + "hexValue": "30", + "id": 340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4534:1:0", + "src": "7285:1:0", "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "1" + "value": "0" }, - "src": "4507:28:0", + "src": "7246:40:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 128, + "id": 342, "nodeType": "ExpressionStatement", - "src": "4507:28:0" - }, - { - "expression": { - "expression": { - "id": 129, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "4552:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 130, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "4552:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 95, - "id": 131, - "nodeType": "Return", - "src": "4545:29:0" - } - ] - }, - "functionSelector": "b9ba5f8b", - "id": 133, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 92, - "kind": "modifierInvocation", - "modifierName": { - "id": 91, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "4263:8:0" + "src": "7246:40:0" }, - "nodeType": "ModifierInvocation", - "src": "4263:8:0" - } - ], - "name": "DepositRewards", - "nameLocation": "4231:14:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 90, - "nodeType": "ParameterList", - "parameters": [], - "src": "4245:2:0" - }, - "returnParameters": { - "id": 95, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 94, - "mutability": "mutable", - "name": "poolbalance", - "nameLocation": "4285:11:0", - "nodeType": "VariableDeclaration", - "scope": 133, - "src": "4280:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 93, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4280:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4279:18:0" - }, - "scope": 262, - "src": "4222:359:0", - "stateMutability": "payable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 181, - "nodeType": "Block", - "src": "4968:393:0", - "statements": [ { - "expression": { + "condition": { "arguments": [ { - "commonType": { + "id": 349, + "name": "allowedToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7393:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 345, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7376:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7376:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7368:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7368:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } }, - "id": 143, + "id": 347, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftExpression": { - "expression": { + "names": [], + "nodeType": "FunctionCall", + "src": "7368:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "send", + "nodeType": "MemberAccess", + "src": "7368:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) returns (bool)" + } + }, + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7368:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 376, + "nodeType": "Block", + "src": "7579:101:0", + "statements": [ + { + "expression": { + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 366, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "7593:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 369, + "indexExpression": { + "expression": { + "id": 367, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7602:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7602:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7593:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "7593:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 371, + "name": "balanceFromPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "7632:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7593:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "7593:54:0" + }, + { + "expression": { + "hexValue": "30", + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7668:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 303, + "id": 375, + "nodeType": "Return", + "src": "7661:8:0" + } + ] + }, + "id": 377, + "nodeType": "IfStatement", + "src": "7364:316:0", + "trueBody": { + "id": 365, + "nodeType": "Block", + "src": "7413:160:0", + "statements": [ + { + "expression": { + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "7435:27:0", + "subExpression": { "baseExpression": { - "id": 137, + "id": 351, "name": "UserList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "4987:8:0", + "referencedDeclaration": 42, + "src": "7442:8:0", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" } }, - "id": 140, + "id": 354, "indexExpression": { "expression": { - "id": 138, + "id": 352, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "4996:3:0", + "src": "7451:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 139, + "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "4996:10:0", + "src": "7451:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9987,618 +11894,522 @@ "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": false, + "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4987:20:0", + "src": "7442:20:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", "typeString": "struct ETHpool.Stakeholder storage ref" } }, - "id": 141, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_currentBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "4987:36:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 142, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5027:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4987:41:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "id": 356, + "nodeType": "ExpressionStatement", + "src": "7435:27:0" }, { - "hexValue": "506c6561736520666972737420706572666f726d2061207769746864726177616c2e2057652077696c6c20736f6c766520696e2056322c20492070726f6d6973652e", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5030:68:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", - "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" - }, - "value": "Please first perform a withdrawal. We will solve in V2, I promise." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_98e8087a5adaec902111f20a23b5f3ffefbdcaa9fb53a2a89ed65a03099591dc", - "typeString": "literal_string \"Please first perform a withdrawal. We will solve in V2, I promise.\"" - } - ], - "id": 136, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "4978:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4978:121:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 146, - "nodeType": "ExpressionStatement", - "src": "4978:121:0" - }, - { - "expression": { - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 147, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5109:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 149, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "poolBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "5109:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 150, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5135:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "5135:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5109:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "5109:35:0" - }, - { - "expression": { - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 154, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5154:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 157, - "indexExpression": { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 358, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7495:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7495:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 360, + "name": "allowedToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7506:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "id": 155, - "name": "msg", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 357, + "name": "WithdrawEvent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5163:3:0", + "referencedDeclaration": 62, + "src": "7481:13:0", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "id": 156, + "id": 361, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5163:10:0", + "names": [], + "nodeType": "FunctionCall", + "src": "7481:43:0", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5154:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 158, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_currentBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "5154:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 159, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5193:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } + "id": 362, + "nodeType": "EmitStatement", + "src": "7476:48:0" }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "src": "5193:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5154:48:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "5154:48:0" - }, - { - "expression": { - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 163, - "name": "UserList", + { + "expression": { + "id": 363, + "name": "allowedToWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5212:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 166, - "indexExpression": { - "expression": { - "id": 164, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5221:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5221:10:0", + "referencedDeclaration": 318, + "src": "7545:17:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5212:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" - } - }, - "id": 167, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_compositionAtStartStaking", - "nodeType": "MemberAccess", - "referencedDeclaration": 24, - "src": "5212:47:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 168, - "name": "poolStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5262:10:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", - "typeString": "struct ETHpool.Pool storage ref" - } - }, - "id": 169, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastRewardMultiplied", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "5262:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "functionReturnParameters": 303, + "id": 364, + "nodeType": "Return", + "src": "7538:24:0" } - }, - "src": "5212:81:0", + ] + } + } + ] + }, + "functionSelector": "57ea89b6", + "id": 379, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 298, + "kind": "modifierInvocation", + "modifierName": { + "id": 297, + "name": "onlyUsers", + "nodeType": "IdentifierPath", + "referencedDeclaration": 477, + "src": "6832:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "6832:9:0" + }, + { + "id": 300, + "kind": "modifierInvocation", + "modifierName": { + "id": 299, + "name": "notPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 505, + "src": "6842:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "6842:9:0" + } + ], + "name": "Withdraw", + "nameLocation": "6812:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [], + "src": "6820:2:0" + }, + "returnParameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "sent", + "nameLocation": "6865:4:0", + "nodeType": "VariableDeclaration", + "scope": 379, + "src": "6860:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 301, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6860:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 171, - "nodeType": "ExpressionStatement", - "src": "5212:81:0" - }, + "visibility": "internal" + } + ], + "src": "6859:11:0" + }, + "scope": 519, + "src": "6803:883:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 405, + "nodeType": "Block", + "src": "7839:170:0", + "statements": [ { "expression": { - "id": 179, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 172, - "name": "UserList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "5303:8:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", - "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" - } - }, - "id": 175, - "indexExpression": { - "expression": { - "id": 173, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5312:3:0", + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 386, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "7857:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 389, + "indexExpression": { + "expression": { + "id": 387, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7866:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7866:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7857:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 390, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_currentBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 18, + "src": "7857:36:0", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5312:10:0", + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 391, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "7898:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastRewardMultiplied", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "7898:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 393, + "name": "UserList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "7932:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", + "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" + } + }, + "id": 396, + "indexExpression": { + "expression": { + "id": 394, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "7941:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7941:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7932:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", + "typeString": "struct ETHpool.Stakeholder storage ref" + } + }, + "id": 397, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_compositionAtStartStaking", + "nodeType": "MemberAccess", + "referencedDeclaration": 20, + "src": "7932:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7898:81:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 399, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7896:84:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7857:123:0", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5303:20:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", - "typeString": "struct ETHpool.Stakeholder storage ref" } - }, - "id": 176, + ], + "id": 401, "isConstant": false, - "isLValue": true, + "isInlineArray": false, + "isLValue": false, "isPure": false, - "lValueRequested": true, - "memberName": "_timeStaking", - "nodeType": "MemberAccess", - "referencedDeclaration": 26, - "src": "5303:33:0", + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7856:125:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 177, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "5339:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5339:15:0", + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 402, + "name": "ROUNDING_CONSTANT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "7984:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5303:51:0", + "src": "7856:145:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 180, - "nodeType": "ExpressionStatement", - "src": "5303:51:0" - } - ] - }, - "functionSelector": "de20bc92", - "id": 182, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "Stake", - "nameLocation": "4945:5:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 134, - "nodeType": "ParameterList", - "parameters": [], - "src": "4950:2:0" - }, - "returnParameters": { - "id": 135, - "nodeType": "ParameterList", - "parameters": [], - "src": "4968:0:0" - }, - "scope": 262, - "src": "4936:425:0", - "stateMutability": "payable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 191, - "nodeType": "Block", - "src": "5570:26:0", - "statements": [ - { - "expression": { - "hexValue": "31", - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5588:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "functionReturnParameters": 188, - "id": 190, + "functionReturnParameters": 385, + "id": 404, "nodeType": "Return", - "src": "5581:8:0" + "src": "7849:152:0" } ] }, - "functionSelector": "57ea89b6", - "id": 192, + "functionSelector": "7c1b7f8a", + "id": 406, "implemented": true, "kind": "function", "modifiers": [ { - "id": 185, + "id": 382, "kind": "modifierInvocation", "modifierName": { - "id": 184, + "id": 381, "name": "onlyUsers", "nodeType": "IdentifierPath", - "referencedDeclaration": 246, - "src": "5547:9:0" + "referencedDeclaration": 477, + "src": "7803:9:0" }, "nodeType": "ModifierInvocation", - "src": "5547:9:0" + "src": "7803:9:0" } ], - "name": "Withdraw", - "nameLocation": "5529:8:0", + "name": "computeRewards", + "nameLocation": "7774:14:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 183, + "id": 380, "nodeType": "ParameterList", "parameters": [], - "src": "5537:2:0" + "src": "7788:2:0" }, "returnParameters": { - "id": 188, + "id": 385, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 384, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "withdrawable", + "nameLocation": "7826:12:0", "nodeType": "VariableDeclaration", - "scope": 192, - "src": "5565:4:0", + "scope": 406, + "src": "7821:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10606,10 +12417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 383, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "5565:4:0", + "src": "7821:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10618,49 +12429,49 @@ "visibility": "internal" } ], - "src": "5564:6:0" + "src": "7820:19:0" }, - "scope": 262, - "src": "5520:76:0", - "stateMutability": "nonpayable", + "scope": 519, + "src": "7765:244:0", + "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 204, + "id": 418, "nodeType": "Block", - "src": "5675:105:0", + "src": "8090:105:0", "statements": [ { "expression": { - "id": 202, + "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 197, + "id": 411, "name": "poolStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5741:10:0", + "referencedDeclaration": 50, + "src": "8156:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeIdentifier": "t_struct$_Pool_$37_storage", "typeString": "struct ETHpool.Pool storage ref" } }, - "id": 199, + "id": 413, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "status", "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5741:17:0", + "referencedDeclaration": 36, + "src": "8156:17:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" @@ -10670,18 +12481,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 200, + "id": 414, "name": "State", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "5761:5:0", + "src": "8176:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_State_$8_$", "typeString": "type(enum ETHpool.State)" } }, - "id": 201, + "id": 415, "isConstant": false, "isLValue": false, "isPure": true, @@ -10689,99 +12500,99 @@ "memberName": "Paused", "nodeType": "MemberAccess", "referencedDeclaration": 6, - "src": "5761:12:0", + "src": "8176:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "src": "5741:32:0", + "src": "8156:32:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "id": 203, + "id": 417, "nodeType": "ExpressionStatement", - "src": "5741:32:0" + "src": "8156:32:0" } ] }, "functionSelector": "aa09d5b7", - "id": 205, + "id": 419, "implemented": true, "kind": "function", "modifiers": [ { - "id": 195, + "id": 409, "kind": "modifierInvocation", "modifierName": { - "id": 194, + "id": 408, "name": "onlyTeam", "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5666:8:0" + "referencedDeclaration": 492, + "src": "8081:8:0" }, "nodeType": "ModifierInvocation", - "src": "5666:8:0" + "src": "8081:8:0" } ], "name": "pausePool", - "nameLocation": "5647:9:0", + "nameLocation": "8060:9:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 193, + "id": 407, "nodeType": "ParameterList", "parameters": [], - "src": "5656:2:0" + "src": "8069:2:0" }, "returnParameters": { - "id": 196, + "id": 410, "nodeType": "ParameterList", "parameters": [], - "src": "5675:0:0" + "src": "8090:0:0" }, - "scope": 262, - "src": "5638:142:0", + "scope": 519, + "src": "8051:144:0", "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "external" }, { "body": { - "id": 217, + "id": 431, "nodeType": "Block", - "src": "5821:102:0", + "src": "8238:110:0", "statements": [ { "expression": { - "id": 215, + "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 210, + "id": 424, "name": "poolStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5831:10:0", + "referencedDeclaration": 50, + "src": "8248:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeIdentifier": "t_struct$_Pool_$37_storage", "typeString": "struct ETHpool.Pool storage ref" } }, - "id": 212, + "id": 426, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "status", "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5831:17:0", + "referencedDeclaration": 36, + "src": "8248:17:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" @@ -10791,18 +12602,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 213, + "id": 427, "name": "State", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "5851:5:0", + "src": "8268:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_State_$8_$", "typeString": "type(enum ETHpool.State)" } }, - "id": 214, + "id": 428, "isConstant": false, "isLValue": false, "isPure": true, @@ -10810,99 +12621,99 @@ "memberName": "Ended", "nodeType": "MemberAccess", "referencedDeclaration": 7, - "src": "5851:11:0", + "src": "8268:11:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "src": "5831:31:0", + "src": "8248:31:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "id": 216, + "id": 430, "nodeType": "ExpressionStatement", - "src": "5831:31:0" + "src": "8248:31:0" } ] }, "functionSelector": "2d42cf7d", - "id": 218, + "id": 432, "implemented": true, "kind": "function", "modifiers": [ { - "id": 208, + "id": 422, "kind": "modifierInvocation", "modifierName": { - "id": 207, + "id": 421, "name": "onlyTeam", "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5812:8:0" + "referencedDeclaration": 492, + "src": "8229:8:0" }, "nodeType": "ModifierInvocation", - "src": "5812:8:0" + "src": "8229:8:0" } ], "name": "endPool", - "nameLocation": "5795:7:0", + "nameLocation": "8210:7:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 206, + "id": 420, "nodeType": "ParameterList", "parameters": [], - "src": "5802:2:0" + "src": "8217:2:0" }, "returnParameters": { - "id": 209, + "id": 423, "nodeType": "ParameterList", "parameters": [], - "src": "5821:0:0" + "src": "8238:0:0" }, - "scope": 262, - "src": "5786:137:0", + "scope": 519, + "src": "8201:147:0", "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "external" }, { "body": { - "id": 230, + "id": 444, "nodeType": "Block", - "src": "5967:82:0", + "src": "8394:82:0", "statements": [ { "expression": { - "id": 228, + "id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 223, + "id": 437, "name": "poolStatus", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52, - "src": "5977:10:0", + "referencedDeclaration": 50, + "src": "8404:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Pool_$39_storage", + "typeIdentifier": "t_struct$_Pool_$37_storage", "typeString": "struct ETHpool.Pool storage ref" } }, - "id": 225, + "id": 439, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "status", "nodeType": "MemberAccess", - "referencedDeclaration": 38, - "src": "5977:17:0", + "referencedDeclaration": 36, + "src": "8404:17:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" @@ -10912,18 +12723,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 226, + "id": 440, "name": "State", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, - "src": "5997:5:0", + "src": "8424:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_State_$8_$", "typeString": "type(enum ETHpool.State)" } }, - "id": 227, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, @@ -10931,69 +12742,256 @@ "memberName": "Running", "nodeType": "MemberAccess", "referencedDeclaration": 5, - "src": "5997:13:0", + "src": "8424:13:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "src": "5977:33:0", + "src": "8404:33:0", "typeDescriptions": { "typeIdentifier": "t_enum$_State_$8", "typeString": "enum ETHpool.State" } }, - "id": 229, + "id": 443, + "nodeType": "ExpressionStatement", + "src": "8404:33:0" + } + ] + }, + "functionSelector": "11ec106b", + "id": 445, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 435, + "kind": "modifierInvocation", + "modifierName": { + "id": 434, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 492, + "src": "8385:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "8385:8:0" + } + ], + "name": "resumePool", + "nameLocation": "8363:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [], + "src": "8373:2:0" + }, + "returnParameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [], + "src": "8394:0:0" + }, + "scope": 519, + "src": "8354:122:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 461, + "nodeType": "Block", + "src": "8553:47:0", + "statements": [ + { + "expression": { + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 454, + "name": "Team", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "8563:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$16_storage_$", + "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" + } + }, + "id": 456, + "indexExpression": { + "id": 455, + "name": "teamAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "8568:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8563:17:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TeamMember_$16_storage", + "typeString": "struct ETHpool.TeamMember storage ref" + } + }, + "id": 457, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_role", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "8563:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 458, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "8589:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8563:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 460, "nodeType": "ExpressionStatement", - "src": "5977:33:0" + "src": "8563:30:0" + } + ] + }, + "functionSelector": "ac0679a6", + "id": 462, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 452, + "kind": "modifierInvocation", + "modifierName": { + "id": 451, + "name": "onlyTeam", + "nodeType": "IdentifierPath", + "referencedDeclaration": 492, + "src": "8544:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "8544:8:0" + } + ], + "name": "modifyTeam", + "nameLocation": "8491:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "teamAddress", + "nameLocation": "8510:11:0", + "nodeType": "VariableDeclaration", + "scope": 462, + "src": "8502:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8502:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 449, + "mutability": "mutable", + "name": "role", + "nameLocation": "8529:4:0", + "nodeType": "VariableDeclaration", + "scope": 462, + "src": "8524:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8524:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" } - ] - }, - "functionSelector": "11ec106b", - "id": 231, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 221, - "kind": "modifierInvocation", - "modifierName": { - "id": 220, - "name": "onlyTeam", - "nodeType": "IdentifierPath", - "referencedDeclaration": 261, - "src": "5958:8:0" - }, - "nodeType": "ModifierInvocation", - "src": "5958:8:0" - } - ], - "name": "resumePool", - "nameLocation": "5938:10:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 219, - "nodeType": "ParameterList", - "parameters": [], - "src": "5948:2:0" + ], + "src": "8501:33:0" }, "returnParameters": { - "id": 222, + "id": 453, "nodeType": "ParameterList", "parameters": [], - "src": "5967:0:0" + "src": "8553:0:0" }, - "scope": 262, - "src": "5929:120:0", + "scope": 519, + "src": "8482:118:0", "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "external" }, { "body": { - "id": 245, + "id": 476, "nodeType": "Block", - "src": "6100:123:0", + "src": "8651:123:0", "statements": [ { "expression": { @@ -11003,7 +13001,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 240, + "id": 471, "isConstant": false, "isLValue": false, "isPure": false, @@ -11011,39 +13009,39 @@ "leftExpression": { "expression": { "baseExpression": { - "id": 234, + "id": 465, "name": "UserList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "6119:8:0", + "referencedDeclaration": 42, + "src": "8670:8:0", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$27_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Stakeholder_$23_storage_$", "typeString": "mapping(address => struct ETHpool.Stakeholder storage ref)" } }, - "id": 237, + "id": 468, "indexExpression": { "expression": { - "id": 235, + "id": 466, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "6128:3:0", + "src": "8679:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 236, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "6128:10:0", + "src": "8679:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11054,21 +13052,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6119:20:0", + "src": "8670:20:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Stakeholder_$27_storage", + "typeIdentifier": "t_struct$_Stakeholder_$23_storage", "typeString": "struct ETHpool.Stakeholder storage ref" } }, - "id": 238, + "id": 469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "_currentBalance", "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "6119:36:0", + "referencedDeclaration": 18, + "src": "8670:36:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11078,21 +13076,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 239, + "id": 470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6158:1:0", + "src": "8709:1:0", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "6119:40:0", + "src": "8670:40:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11100,14 +13098,14 @@ }, { "hexValue": "4f6e6c79207374616b65686f6c646572732063616e2075736520746869732066756e6374696f6e2e", - "id": 241, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6162:42:0", + "src": "8713:42:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_65cf49bb6119b71c8bb66dd5c8bcb70b360e603c8c362e9623afd68faad0b328", "typeString": "literal_string \"Only stakeholders can use this function.\"" @@ -11126,7 +13124,7 @@ "typeString": "literal_string \"Only stakeholders can use this function.\"" } ], - "id": 233, + "id": 464, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -11134,13 +13132,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "6110:7:0", + "src": "8661:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 242, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -11148,53 +13146,53 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6110:95:0", + "src": "8661:95:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 243, + "id": 474, "nodeType": "ExpressionStatement", - "src": "6110:95:0" + "src": "8661:95:0" }, { - "id": 244, + "id": 475, "nodeType": "PlaceholderStatement", - "src": "6215:1:0" + "src": "8766:1:0" } ] }, - "id": 246, + "id": 477, "name": "onlyUsers", - "nameLocation": "6088:9:0", + "nameLocation": "8639:9:0", "nodeType": "ModifierDefinition", "parameters": { - "id": 232, + "id": 463, "nodeType": "ParameterList", "parameters": [], - "src": "6097:2:0" + "src": "8648:2:0" }, - "src": "6079:144:0", + "src": "8630:144:0", "virtual": false, "visibility": "internal" }, { "body": { - "id": 260, + "id": 491, "nodeType": "Block", - "src": "6249:105:0", + "src": "8800:108:0", "statements": [ { "expression": { "arguments": [ { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 255, + "id": 486, "isConstant": false, "isLValue": false, "isPure": false, @@ -11202,39 +13200,39 @@ "leftExpression": { "expression": { "baseExpression": { - "id": 249, + "id": 480, "name": "Team", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49, - "src": "6267:4:0", + "referencedDeclaration": 47, + "src": "8818:4:0", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$20_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TeamMember_$16_storage_$", "typeString": "mapping(address => struct ETHpool.TeamMember storage ref)" } }, - "id": 252, + "id": 483, "indexExpression": { "expression": { - "id": 250, + "id": 481, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "6272:3:0", + "src": "8823:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 251, + "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "6272:10:0", + "src": "8823:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11245,45 +13243,45 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6267:16:0", + "src": "8818:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_TeamMember_$20_storage", + "typeIdentifier": "t_struct$_TeamMember_$16_storage", "typeString": "struct ETHpool.TeamMember storage ref" } }, - "id": 253, + "id": 484, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "_role", "nodeType": "MemberAccess", - "referencedDeclaration": 19, - "src": "6267:22:0", + "referencedDeclaration": 15, + "src": "8818:22:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "hexValue": "31", - "id": 254, + "hexValue": "74727565", + "id": 485, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "6293:1:0", + "src": "8844:4:0", "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "value": "1" + "value": "true" }, - "src": "6267:27:0", + "src": "8818:30:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11291,14 +13289,14 @@ }, { "hexValue": "4f6e6c7920746865205465616d2063616e2063616c6c20746869732066756e6374696f6e2e", - "id": 256, + "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6296:39:0", + "src": "8850:39:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_77ce0874b137b60e93c01f56799e55f28d65db359f40d58d0f38dfc1b136e76f", "typeString": "literal_string \"Only the Team can call this function.\"" @@ -11317,7 +13315,7 @@ "typeString": "literal_string \"Only the Team can call this function.\"" } ], - "id": 248, + "id": 479, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -11325,13 +13323,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "6259:7:0", + "src": "8810:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 257, + "id": 488, "isConstant": false, "isLValue": false, "isPure": false, @@ -11339,60 +13337,393 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6259:77:0", + "src": "8810:80:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 258, + "id": 489, "nodeType": "ExpressionStatement", - "src": "6259:77:0" + "src": "8810:80:0" }, { - "id": 259, + "id": 490, "nodeType": "PlaceholderStatement", - "src": "6346:1:0" + "src": "8900:1:0" } ] }, - "id": 261, + "id": 492, "name": "onlyTeam", - "nameLocation": "6238:8:0", + "nameLocation": "8789:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 478, + "nodeType": "ParameterList", + "parameters": [], + "src": "8797:2:0" + }, + "src": "8780:128:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 504, + "nodeType": "Block", + "src": "8935:124:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 495, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "8954:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 36, + "src": "8954:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 497, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "8975:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 6, + "src": "8975:12:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "8954:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "455448706f6f6c206973207061757365642e2054686973206f7065726174696f6e206973206e6f7420616c6c6f7765642e", + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8989:51:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9", + "typeString": "literal_string \"ETHpool is paused. This operation is not allowed.\"" + }, + "value": "ETHpool is paused. This operation is not allowed." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d2355db99aa8f3f89b73eba5cd61e14fe5279a0cb8f0d810ce5eb08bae9c5db9", + "typeString": "literal_string \"ETHpool is paused. This operation is not allowed.\"" + } + ], + "id": 494, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "8945:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8945:96:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "8945:96:0" + }, + { + "id": 503, + "nodeType": "PlaceholderStatement", + "src": "9051:1:0" + } + ] + }, + "id": 505, + "name": "notPaused", + "nameLocation": "8923:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [], + "src": "8932:2:0" + }, + "src": "8914:145:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 517, + "nodeType": "Block", + "src": "9085:119:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 508, + "name": "poolStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "9104:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Pool_$37_storage", + "typeString": "struct ETHpool.Pool storage ref" + } + }, + "id": 509, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 36, + "src": "9104:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 510, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "9125:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$8_$", + "typeString": "type(enum ETHpool.State)" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Ended", + "nodeType": "MemberAccess", + "referencedDeclaration": 7, + "src": "9125:11:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$8", + "typeString": "enum ETHpool.State" + } + }, + "src": "9104:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "455448706f6f6c20697320656e6465642e204f6e6c79207769746864726177616c7320616c6c6f7765642e", + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9138:45:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055", + "typeString": "literal_string \"ETHpool is ended. Only withdrawals allowed.\"" + }, + "value": "ETHpool is ended. Only withdrawals allowed." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1ed09dc327bb64f37a652f240dba7a4d6793962c301287c466770b5076492055", + "typeString": "literal_string \"ETHpool is ended. Only withdrawals allowed.\"" + } + ], + "id": 507, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9095:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9095:89:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 515, + "nodeType": "ExpressionStatement", + "src": "9095:89:0" + }, + { + "id": 516, + "nodeType": "PlaceholderStatement", + "src": "9194:1:0" + } + ] + }, + "id": 518, + "name": "notEnded", + "nameLocation": "9074:8:0", "nodeType": "ModifierDefinition", "parameters": { - "id": 247, + "id": 506, "nodeType": "ParameterList", "parameters": [], - "src": "6246:2:0" + "src": "9082:2:0" }, - "src": "6229:125:0", + "src": "9065:139:0", "virtual": false, "visibility": "internal" } ], - "scope": 263, - "src": "2773:3583:0", + "scope": 520, + "src": "2826:6380:0", "usedErrors": [] } ], - "src": "36:7112:0" + "src": "36:9170:0" }, "compiler": { "name": "solc", - "version": "0.8.11+commit.d7f03943.Emscripten.clang" + "version": "0.8.13+commit.abaa5c0e.Emscripten.clang" }, "networks": { + "3": { + "events": {}, + "links": {}, + "address": "0x40985d7C0357e31332860FfdeA279e23Ec0d5fC3", + "transactionHash": "0x3f42621b376c1f549753dee72d834fefe4bc2d4fdc311c7d403afc79d9bc891d" + }, "5777": { "events": {}, "links": {}, - "address": "0x03fd716EC2B75489849FBf4E689C648DDD32e495", - "transactionHash": "0x69bfd59ebaec9ae5c2c11b5b9b167536d9027d22c7898d173bbe1fc4d6d9f3de" + "address": "0xF86028676549f778d2b4EC618f9C69d4b24B9016", + "transactionHash": "0x7616a4ae5d47c32894bc5361b05c6b0426721fc83cbdbb2efda54752161f28b9" } }, - "schemaVersion": "3.4.4", - "updatedAt": "2022-02-13T21:51:47.661Z", + "schemaVersion": "3.4.7", + "updatedAt": "2022-04-13T20:54:09.400Z", + "networkType": "ethereum", "devdoc": { "kind": "dev", "methods": {}, diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index a17d4c89..00ef147a 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -12,7 +12,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -25,7 +26,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -41,9 +43,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/Migrations.sol\":{\"keccak256\":\"0x7eaedbb1a3e4e0f585d9063393872f88ded247ca3c3c3c8492ea18e7629a6411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3eb571cee910095df65a06a1c1d3f89187c72a3c184ef87a7538d9aa39ad07\",\"dweb:/ipfs/QmdqR3vrSSGR49qFGZr49Mb39z7dgD6tSzEDoaqtM31o61\"]}},\"version\":1}", - "bytecode": "0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b50610327806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea2646970667358221220353cb1298ecaaf65fe00ddfd9e11ec1e26a6b97a78dc65de1604cb8b8a399ab364736f6c634300080b0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea2646970667358221220353cb1298ecaaf65fe00ddfd9e11ec1e26a6b97a78dc65de1604cb8b8a399ab364736f6c634300080b0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/Migrations.sol\":{\"keccak256\":\"0x7eaedbb1a3e4e0f585d9063393872f88ded247ca3c3c3c8492ea18e7629a6411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3eb571cee910095df65a06a1c1d3f89187c72a3c184ef87a7538d9aa39ad07\",\"dweb:/ipfs/QmdqR3vrSSGR49qFGZr49Mb39z7dgD6tSzEDoaqtM31o61\"]}},\"version\":1}", + "bytecode": "0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b50610327806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea26469706673582212202772102c6bf65909b8a1ed2bbf4af4f042e10a1097612ea089ae207eeb38038964736f6c634300080d0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd57614610082575b600080fd5b61004e61009e565b60405161005b9190610179565b60405180910390f35b61006c6100a4565b60405161007991906101d5565b60405180910390f35b61009c60048036038101906100979190610221565b6100c8565b005b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906102d1565b60405180910390fd5b8060018190555050565b6000819050919050565b61017381610160565b82525050565b600060208201905061018e600083018461016a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101bf82610194565b9050919050565b6101cf816101b4565b82525050565b60006020820190506101ea60008301846101c6565b92915050565b600080fd5b6101fe81610160565b811461020957600080fd5b50565b60008135905061021b816101f5565b92915050565b600060208284031215610237576102366101f0565b5b60006102458482850161020c565b91505092915050565b600082825260208201905092915050565b7f546869732066756e6374696f6e206973207265737472696374656420746f207460008201527f686520636f6e74726163742773206f776e657200000000000000000000000000602082015250565b60006102bb60338361024e565b91506102c68261025f565b604082019050919050565b600060208201905081810360008301526102ea816102ae565b905091905056fea26469706673582212202772102c6bf65909b8a1ed2bbf4af4f042e10a1097612ea089ae207eeb38038964736f6c634300080d0033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ @@ -1511,15 +1513,15 @@ "absolutePath": "project:/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 295 + 552 ] }, - "id": 296, + "id": 553, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { - "id": 264, + "id": 521, "literals": [ "solidity", ">=", @@ -1539,9 +1541,9 @@ "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, - "id": 295, + "id": 552, "linearizedBaseContracts": [ - 295 + 552 ], "name": "Migrations", "nameLocation": "75:10:1", @@ -1550,12 +1552,12 @@ { "constant": false, "functionSelector": "8da5cb5b", - "id": 268, + "id": 525, "mutability": "mutable", "name": "owner", "nameLocation": "105:5:1", "nodeType": "VariableDeclaration", - "scope": 295, + "scope": 552, "src": "90:33:1", "stateVariable": true, "storageLocation": "default", @@ -1564,7 +1566,7 @@ "typeString": "address" }, "typeName": { - "id": 265, + "id": 522, "name": "address", "nodeType": "ElementaryTypeName", "src": "90:7:1", @@ -1576,7 +1578,7 @@ }, "value": { "expression": { - "id": 266, + "id": 523, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1587,7 +1589,7 @@ "typeString": "msg" } }, - "id": 267, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -1605,12 +1607,12 @@ { "constant": false, "functionSelector": "445df0ac", - "id": 270, + "id": 527, "mutability": "mutable", "name": "last_completed_migration", "nameLocation": "139:24:1", "nodeType": "VariableDeclaration", - "scope": 295, + "scope": 552, "src": "127:36:1", "stateVariable": true, "storageLocation": "default", @@ -1619,7 +1621,7 @@ "typeString": "uint256" }, "typeName": { - "id": 269, + "id": 526, "name": "uint", "nodeType": "ElementaryTypeName", "src": "127:4:1", @@ -1632,7 +1634,7 @@ }, { "body": { - "id": 281, + "id": 538, "nodeType": "Block", "src": "190:119:1", "statements": [ @@ -1644,14 +1646,14 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 276, + "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 273, + "id": 530, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1662,7 +1664,7 @@ "typeString": "msg" } }, - "id": 274, + "id": 531, "isConstant": false, "isLValue": false, "isPure": false, @@ -1678,11 +1680,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 275, + "id": 532, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 268, + "referencedDeclaration": 525, "src": "225:5:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1697,7 +1699,7 @@ }, { "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", - "id": 277, + "id": 534, "isConstant": false, "isLValue": false, "isPure": true, @@ -1723,7 +1725,7 @@ "typeString": "literal_string \"This function is restricted to the contract's owner\"" } ], - "id": 272, + "id": 529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1737,7 +1739,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 278, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, @@ -1752,23 +1754,23 @@ "typeString": "tuple()" } }, - "id": 279, + "id": 536, "nodeType": "ExpressionStatement", "src": "196:101:1" }, { - "id": 280, + "id": 537, "nodeType": "PlaceholderStatement", "src": "303:1:1" } ] }, - "id": 282, + "id": 539, "name": "restricted", "nameLocation": "177:10:1", "nodeType": "ModifierDefinition", "parameters": { - "id": 271, + "id": 528, "nodeType": "ParameterList", "parameters": [], "src": "187:2:1" @@ -1779,23 +1781,23 @@ }, { "body": { - "id": 293, + "id": 550, "nodeType": "Block", "src": "369:47:1", "statements": [ { "expression": { - "id": 291, + "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 289, + "id": 546, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 270, + "referencedDeclaration": 527, "src": "375:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1805,11 +1807,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 290, + "id": 547, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 284, + "referencedDeclaration": 541, "src": "402:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1822,25 +1824,25 @@ "typeString": "uint256" } }, - "id": 292, + "id": 549, "nodeType": "ExpressionStatement", "src": "375:36:1" } ] }, "functionSelector": "fdacd576", - "id": 294, + "id": 551, "implemented": true, "kind": "function", "modifiers": [ { - "id": 287, + "id": 544, "kind": "modifierInvocation", "modifierName": { - "id": 286, + "id": 543, "name": "restricted", "nodeType": "IdentifierPath", - "referencedDeclaration": 282, + "referencedDeclaration": 539, "src": "358:10:1" }, "nodeType": "ModifierInvocation", @@ -1851,17 +1853,17 @@ "nameLocation": "322:12:1", "nodeType": "FunctionDefinition", "parameters": { - "id": 285, + "id": 542, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 284, + "id": 541, "mutability": "mutable", "name": "completed", "nameLocation": "340:9:1", "nodeType": "VariableDeclaration", - "scope": 294, + "scope": 551, "src": "335:14:1", "stateVariable": false, "storageLocation": "default", @@ -1870,7 +1872,7 @@ "typeString": "uint256" }, "typeName": { - "id": 283, + "id": 540, "name": "uint", "nodeType": "ElementaryTypeName", "src": "335:4:1", @@ -1885,416 +1887,19 @@ "src": "334:16:1" }, "returnParameters": { - "id": 288, + "id": 545, "nodeType": "ParameterList", "parameters": [], "src": "369:0:1" }, - "scope": 295, + "scope": 552, "src": "313:103:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], - "scope": 296, - "src": "66:352:1", - "usedErrors": [] - } - ], - "src": "32:387:1" - }, - "legacyAST": { - "absolutePath": "project:/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 295 - ] - }, - "id": 296, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 264, - "literals": [ - "solidity", - ">=", - "0.4", - ".22", - "<", - "0.9", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "32:32:1" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "Migrations", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 295, - "linearizedBaseContracts": [ - 295 - ], - "name": "Migrations", - "nameLocation": "75:10:1", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "8da5cb5b", - "id": 268, - "mutability": "mutable", - "name": "owner", - "nameLocation": "105:5:1", - "nodeType": "VariableDeclaration", - "scope": 295, - "src": "90:33:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 265, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "90:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": { - "expression": { - "id": 266, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "113:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "113:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "445df0ac", - "id": 270, - "mutability": "mutable", - "name": "last_completed_migration", - "nameLocation": "139:24:1", - "nodeType": "VariableDeclaration", - "scope": 295, - "src": "127:36:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 269, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "127:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 281, - "nodeType": "Block", - "src": "190:119:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 273, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "211:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "211:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 275, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 268, - "src": "225:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "211:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "238:53:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", - "typeString": "literal_string \"This function is restricted to the contract's owner\"" - }, - "value": "This function is restricted to the contract's owner" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", - "typeString": "literal_string \"This function is restricted to the contract's owner\"" - } - ], - "id": 272, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "196:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "196:101:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 279, - "nodeType": "ExpressionStatement", - "src": "196:101:1" - }, - { - "id": 280, - "nodeType": "PlaceholderStatement", - "src": "303:1:1" - } - ] - }, - "id": 282, - "name": "restricted", - "nameLocation": "177:10:1", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 271, - "nodeType": "ParameterList", - "parameters": [], - "src": "187:2:1" - }, - "src": "168:141:1", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 293, - "nodeType": "Block", - "src": "369:47:1", - "statements": [ - { - "expression": { - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 289, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 270, - "src": "375:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 290, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 284, - "src": "402:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "375:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 292, - "nodeType": "ExpressionStatement", - "src": "375:36:1" - } - ] - }, - "functionSelector": "fdacd576", - "id": 294, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 287, - "kind": "modifierInvocation", - "modifierName": { - "id": 286, - "name": "restricted", - "nodeType": "IdentifierPath", - "referencedDeclaration": 282, - "src": "358:10:1" - }, - "nodeType": "ModifierInvocation", - "src": "358:10:1" - } - ], - "name": "setCompleted", - "nameLocation": "322:12:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 285, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 284, - "mutability": "mutable", - "name": "completed", - "nameLocation": "340:9:1", - "nodeType": "VariableDeclaration", - "scope": 294, - "src": "335:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 283, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "335:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "334:16:1" - }, - "returnParameters": { - "id": 288, - "nodeType": "ParameterList", - "parameters": [], - "src": "369:0:1" - }, - "scope": 295, - "src": "313:103:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "scope": 296, + "scope": 553, "src": "66:352:1", "usedErrors": [] } @@ -2303,18 +1908,25 @@ }, "compiler": { "name": "solc", - "version": "0.8.11+commit.d7f03943.Emscripten.clang" + "version": "0.8.13+commit.abaa5c0e.Emscripten.clang" }, "networks": { + "3": { + "events": {}, + "links": {}, + "address": "0xCf1447E03Bec1A2403CC07b86773B1643919779b", + "transactionHash": "0xb8f790fa63d78fee1975dd191bddb5991a54eb2290bc71d790dec44d777ecfb7" + }, "5777": { "events": {}, "links": {}, - "address": "0x08aD9e0a2711DB54fF953cbc2aaDECacc6e6F402", - "transactionHash": "0x63174e45b7581ded259f60ac9f29ec2be3b8c2e09774e25411ff00aa33f96649" + "address": "0x55B85361AC7a324712F9F195859CCA45CE393262", + "transactionHash": "0xb4841978ab15a9d7a8bc47c12a22997649c2f6ef90b883987415a2224ff6e0af" } }, - "schemaVersion": "3.4.4", - "updatedAt": "2022-02-13T21:51:47.676Z", + "schemaVersion": "3.4.7", + "updatedAt": "2022-04-13T20:54:09.408Z", + "networkType": "ethereum", "devdoc": { "kind": "dev", "methods": {}, diff --git a/query_contract/README.md b/query_contract/README.md index d2bfaf79..0382d747 100644 --- a/query_contract/README.md +++ b/query_contract/README.md @@ -17,7 +17,7 @@ It will return data about the balance of the pool (total staked), of the rewards - Web3.py installed > pip install Web3 > or -> pip install -r requirements.txt (it will install a lot of bloatware, you're noticed) +> pip install -r requirements.txt (it will install a lot of bloatware, you have been warned) Example: @@ -46,7 +46,18 @@ Example: _Contract verified at: https://ropsten.etherscan.io/address/0x40985d7c0357e31332860ffdea279e23ec0d5fc3#code_ -At the time being, numbers are 0 because some issues with Ropsten faucets. +At the time being, numbers are 0 because some issues with Ropsten faucets. In local scenarios, it appears like the following output: + +> py .\queryEthPool.py +> Connected? True +> Balance of Wallet Test: 0 ropstenETH +> Ahora vamos al contrato... +> Pool Balance: 400 +> Rewards Balance: 200 +> Last Reward Multiplied: 5000000000000000000 +> Rewards count: 1 +> Last Reward Time: 1649883959 +> Status: 0 ### Interact with the contract diff --git a/query_contract/queryEthPool.py b/query_contract/queryEthPool.py index 5a48e00f..6579ce3c 100644 --- a/query_contract/queryEthPool.py +++ b/query_contract/queryEthPool.py @@ -51,6 +51,10 @@ INFURA_RPC_URL = "https://ropsten.infura.io/v3/"+infura_key +#Local: +#INFURA_RPC_URL = "http://127.0.0.1:8545" +#CONTRACT_ADDRESS = "0xF86028676549f778d2b4EC618f9C69d4b24B9016" + #Address: #GAS LIMITS: @@ -85,47 +89,6 @@ def getBalanceOfPool( instance ): def checkAddress(addr): return w3.isAddress(addr) -def transferTokens( addr , amount ): - if BE_VERBOSE: print( addr," --> ", amount) - contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) - if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) - account = setupAccount() - if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) - trnxToken = sendTokenToAddr(contractInstance,addr,amount=amount,fromAddress=account.address) - if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) - receipt = w3.eth.wait_for_transaction_receipt(trnxToken) - return (receipt,w3.toHex(trnxToken)) - -def closeAuction( auctionID ): - if BE_VERBOSE: print( "AuctionID"," --> ", auctionID) - contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) - if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) - account = setupAccount() - if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) - trnxToken = callCloseAuction(contractInstance,auctionId=auctionID,fromAddress=account.address) - if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) - receipt = w3.eth.wait_for_transaction_receipt(trnxToken) - return (receipt,w3.toHex(trnxToken)) - -def closeAuctionNOWAIT( auctionID ): - if BE_VERBOSE: print( "AuctionID"," --> ", auctionID) - contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) - if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) - account = setupAccount() - if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) - trnxToken = callCloseAuction(contractInstance,auctionId=auctionID,fromAddress=account.address) - if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) - #receipt = w3.eth.wait_for_transaction_receipt(trnxToken) - return w3.toHex(trnxToken) - -def transferClo( addr , amount ): - if BE_VERBOSE: print( addr," --> ", amount) - account = setupAccount() - if BE_VERBOSE: print( "WALLET LOADED --> ", account.address) - trnxToken = sendCloToAddr(addr,fromAddress=account.address) - if BE_VERBOSE: print( "TX SENT (HASH) --> ", w3.toHex(trnxToken)) - receipt = w3.eth.wait_for_transaction_receipt(trnxToken) - return (receipt,w3.toHex(trnxToken)) def getABI(fromFile=None): if(fromFile is None): @@ -137,47 +100,6 @@ def getABI(fromFile=None): info_json = json.load(f) return info_json -def callTokenHolders(addr): - if BE_VERBOSE: print( addr," --> ", "tokenHolders") - contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) - if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) - tokenHoldersResponse = contractInstance.functions.tokenHolders(addr).call() - return tokenHoldersResponse - -def callAuctions(auctionId): - if BE_VERBOSE: print( auctionId," --> ", "auctionId") - contractInstance = loadContract(abi=CONTRACT_ABI,contractAddress=CONTRACT_ADDRESS) - if BE_VERBOSE: print( "CONTRACT LOADED --> ", contractInstance) - auctionsResponse = contractInstance.functions.auctions(auctionId).call() - return auctionsResponse - -def sendCloToAddr(addr, fromAddress=None): - # simple example (Web3.py determines gas and fee) - #transaction = { - # 'to': addr, - # 'from': fromAddress, - # 'value': w3.toWei('1','gwei') - #} - #print(transaction) - #return w3.eth.send_transaction(transaction) - #get the nonce. Prevents one from sending the transaction twice - nonce = w3.eth.getTransactionCount(fromAddress) - - #build a transaction in a dictionary - tx = { - 'nonce': nonce, - 'to': addr, - 'value': w3.toWei(1, 'ether'), - 'gas': GASLIMIT_CLO_TRANSFER, - 'gasPrice': int(w3.eth.gas_price*1.1) - } - #sign the transaction - signed_tx = w3.eth.account.sign_transaction(tx, PK) - - #send transaction - tx_hash = w3.eth.sendRawTransaction(signed_tx.rawTransaction) - return tx_hash - def setupAccount(): #acct = Account.privateKeyToAccount(PK) acct = w3.eth.account.from_key(PK) @@ -185,22 +107,6 @@ def setupAccount(): #w3.eth.default_account = acct return acct -def sendTokenToAddr(instance,addr, amount,fromAddress=None): - nonce = w3.eth.getTransactionCount(fromAddress) - tx = { - 'nonce': nonce, - #'to': addr, - #'value': w3.toWei(1, 'ether'), - 'gas': GASLIMIT_TOKEN_TRANSFER, - 'gasPrice': int(w3.eth.gas_price*1.1) - } - transaction = instance.functions.transfer(addr,amount).buildTransaction(tx) - signed_txn = w3.eth.account.sign_transaction(transaction, PK) - txn_hash = w3.eth.sendRawTransaction(signed_txn.rawTransaction) - return txn_hash - - - w3 = connectToCallisto() if __name__ == "__main__": From b29d96c3dcecac0f3bef6ca05748d181db061e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Nahuel?= Date: Wed, 13 Apr 2022 18:13:28 -0300 Subject: [PATCH 12/12] First functional draft of the ETHpool challenge --- query_contract/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/query_contract/README.md b/query_contract/README.md index 0382d747..86a66016 100644 --- a/query_contract/README.md +++ b/query_contract/README.md @@ -49,14 +49,23 @@ _Contract verified at: https://ropsten.etherscan.io/address/0x40985d7c0357e31332 At the time being, numbers are 0 because some issues with Ropsten faucets. In local scenarios, it appears like the following output: > py .\queryEthPool.py +> > Connected? True +> > Balance of Wallet Test: 0 ropstenETH +> > Ahora vamos al contrato... +> > Pool Balance: 400 +> > Rewards Balance: 200 +> > Last Reward Multiplied: 5000000000000000000 +> > Rewards count: 1 +> > Last Reward Time: 1649883959 +> > Status: 0 ### Interact with the contract