diff --git a/src/abis/BEBadge.json b/src/abis/BEBadge.json index f8ae6d3..4e34689 100644 --- a/src/abis/BEBadge.json +++ b/src/abis/BEBadge.json @@ -83,25 +83,6 @@ "name": "Lock", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -440,19 +421,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -472,13 +440,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -584,6 +545,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "supplyLimt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "symbol", @@ -695,19 +669,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -748,11 +709,11 @@ "inputs": [ { "internalType": "address", - "name": "factory", + "name": "to", "type": "address" } ], - "name": "setMintFactory", + "name": "setMintRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -761,11 +722,24 @@ "inputs": [ { "internalType": "address", - "name": "factory", + "name": "to", "type": "address" } ], - "name": "removeMintFactory", + "name": "removeMintRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "setBurnRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -778,7 +752,7 @@ "type": "address" } ], - "name": "grantBurnRole", + "name": "removeBurnRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -787,20 +761,7 @@ "inputs": [ { "internalType": "address", - "name": "proxy", - "type": "address" - } - ], - "name": "revokeBurnProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", + "name": "to", "type": "address" } ], @@ -817,7 +778,7 @@ "type": "address" } ], - "name": "revokeLockRole", + "name": "removeLockRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -918,7 +879,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"BatchMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"UnLock\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"batchMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"grantBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantLockRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"removeMintFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"revokeBurnProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeLockRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"setMintFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(address,uint256)\":{\"details\":\"Burns `tokenId`. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantBurnRole(address)\":{\"details\":\"Add factory to burn item\"},\"grantLockRole(address)\":{\"details\":\"Add address to lock item\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isLocked(uint256)\":{\"details\":\"Get lock status\"},\"lock(uint256)\":{\"details\":\"Lock token to use in game or for rental\"},\"mint(address,uint256)\":{\"details\":\"Creates a new token for `to`. Its token ID will be automatically assigned (and available on the emitted {IERC721-Transfer} event), and the token URI autogenerated based on the base URI passed at construction. See {ERC721-_mint}. Requirements: - the caller must have the `MINTER_ROLE`.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeMintFactory(address)\":{\"details\":\"Remove factory\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeBurnProxy(address)\":{\"details\":\"Remove proxy\"},\"revokeLockRole(address)\":{\"details\":\"Remove address for lock item\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setMintFactory(address)\":{\"details\":\"Add factory to mint item\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(uint256)\":{\"details\":\"Unlock token to use blockchain or sale on marketplace\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/BEBadge.sol\":\"BEBadge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/BEBadge.sol\":{\"keccak256\":\"0xb19110f02ee6776dc13e136c16f4cc6d1ac19f0f02385bae52355207321077d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830d4ec01c9b33eab3174ffeabb0277b1e8c89581c983b2f78e125234820db33\",\"dweb:/ipfs/Qmcp6whpxEThzjVnM6tGDpsVGSZnDSZd2TipTDD1RxSVia\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"BatchMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"UnLock\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"batchMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"grantLockRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"removeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeLockRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(address,uint256)\":{\"details\":\"Burns `tokenId`. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantLockRole(address)\":{\"details\":\"Add address for lock item\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isLocked(uint256)\":{\"details\":\"Get lock status\"},\"lock(uint256)\":{\"details\":\"Lock token to use in game or for rental\"},\"mint(address,uint256)\":{\"details\":\"Creates a new token for `to`. Its token ID will be automatically assigned (and available on the emitted {IERC721-Transfer} event), and the token URI autogenerated based on the base URI passed at construction. See {ERC721-_mint}. Requirements: - the caller must have the `MINTER_ROLE`.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeBurnRole(address)\":{\"details\":\"Remove burn role to address\"},\"removeLockRole(address)\":{\"details\":\"Remove address for lock item\"},\"removeMintRole(address)\":{\"details\":\"Remove mint role to address\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBurnRole(address)\":{\"details\":\"grant burn role to address\"},\"setMintRole(address)\":{\"details\":\"Grant mint role to address\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unlock(uint256)\":{\"details\":\"Unlock token to use blockchain or sale on marketplace\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/BEBadge.sol\":\"BEBadge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/BEBadge.sol\":{\"keccak256\":\"0x62990c226e21a61b66e3ca3328f84ee5aaafac52ec7bdd419c24dfea7829d60b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa4738833c060b1a5f06d5959f202cdb8e1983bd730faa1b5a91b3b6dca54a5e\",\"dweb:/ipfs/Qmf6jBTmcfgjtqnxFs6vBDpzqjwh5KACQaKQqJRSR7a3Nm\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "immutableReferences": {}, @@ -926,7 +887,7 @@ "deployedGeneratedSources": [], "sourceMap": "", "deployedSourceMap": "", - "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\nabstract contract BEBadge is AccessControl, ERC721Enumerable, Ownable {\n mapping(uint256 => bool) public lockedTokens;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant LOCK_ROLE = keccak256(\"LOCK_ROLE\");\n\n event Lock(uint256 indexed tokenId);\n event UnLock(uint256 indexed tokenId);\n event BatchMint(address indexed to, uint256[] tokenIds);\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Creates a new token for `to`. Its token ID will be automatically\n * assigned (and available on the emitted {IERC721-Transfer} event), and the token\n * URI autogenerated based on the base URI passed at construction.\n *\n * See {ERC721-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(\n address to,\n uint256 tokenId\n ) external virtual onlyRole(MINTER_ROLE) {\n require(!_exists(tokenId), \"Must have unique tokenId\");\n _mint(to, tokenId);\n }\n\n function batchMint(\n address to,\n uint256[] calldata tokenIds\n ) external onlyRole(MINTER_ROLE) {\n require(tokenIds.length <= 100, \"tokenIds too many\");\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _mint(to, tokenIds[i]);\n }\n emit BatchMint(to, tokenIds);\n }\n\n /**\n * @dev Add factory to mint item\n */\n function setMintFactory(address factory) external onlyOwner {\n _grantRole(MINTER_ROLE, factory);\n }\n\n /**\n * @dev Remove factory\n */\n function removeMintFactory(address factory) external onlyOwner {\n _revokeRole(MINTER_ROLE, factory);\n }\n\n /**\n * @dev Add factory to burn item\n */\n function grantBurnRole(address proxy) external onlyOwner {\n _grantRole(BURN_ROLE, proxy);\n }\n\n /**\n * @dev Remove proxy\n */\n function revokeBurnProxy(address proxy) external onlyOwner {\n _revokeRole(BURN_ROLE, proxy);\n }\n\n /**\n * @dev Add address to lock item\n */\n function grantLockRole(address account) external onlyOwner {\n _grantRole(LOCK_ROLE, account);\n }\n\n /**\n * @dev Remove address for lock item\n */\n function revokeLockRole(address account) external onlyOwner {\n _revokeRole(LOCK_ROLE, account);\n }\n\n /**\n * @dev Lock token to use in game or for rental\n */\n function lock(uint256 tokenId) external onlyRole(LOCK_ROLE) {\n require(_exists(tokenId), \"Must be valid tokenId\");\n require(!lockedTokens[tokenId], \"Token has already locked\");\n lockedTokens[tokenId] = true;\n emit Lock(tokenId);\n }\n\n /**\n * @dev Unlock token to use blockchain or sale on marketplace\n */\n function unlock(uint256 tokenId) external onlyRole(LOCK_ROLE) {\n require(_exists(tokenId), \"Must be valid tokenId\");\n require(lockedTokens[tokenId], \"Token has already unlocked\");\n lockedTokens[tokenId] = false;\n emit UnLock(tokenId);\n }\n\n /**\n * @dev Get lock status\n */\n function isLocked(uint256 tokenId) external view returns (bool) {\n return lockedTokens[tokenId];\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(string calldata baseTokenURI) external onlyOwner {\n _baseTokenURI = baseTokenURI;\n }\n\n /**\n * @dev See {IERC165-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721Enumerable) {\n require(!lockedTokens[tokenId], \"Can not transfer locked token\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Burns `tokenId`.\n *\n * Requirements:\n *\n * - The caller must own `tokenId` or be an approved operator.\n */\n function burn(\n address owner,\n uint256 tokenId\n ) external virtual onlyRole(BURN_ROLE) {\n require(_exists(tokenId), \"TokenId not exists\");\n require(!lockedTokens[tokenId], \"Can not burn locked token\");\n require(\n ownerOf(tokenId) == owner,\n \"current address is not owner of this item now\"\n );\n _burn(tokenId);\n }\n}\n", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\nabstract contract BEBadge is AccessControl, ERC721Enumerable {\n mapping(uint256 => bool) public lockedTokens;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant LOCK_ROLE = keccak256(\"LOCK_ROLE\");\n uint256 public immutable supplyLimt;\n\n event Lock(uint256 indexed tokenId);\n event UnLock(uint256 indexed tokenId);\n event BatchMint(address indexed to, uint256[] tokenIds);\n\n constructor(\n string memory name_,\n string memory symbol_,\n uint256 supplyLimt_\n ) ERC721(name_, symbol_) {\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setupRole(MINTER_ROLE, msg.sender);\n _setupRole(BURN_ROLE, msg.sender);\n _setupRole(LOCK_ROLE, msg.sender);\n supplyLimt = supplyLimt_;\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Creates a new token for `to`. Its token ID will be automatically\n * assigned (and available on the emitted {IERC721-Transfer} event), and the token\n * URI autogenerated based on the base URI passed at construction.\n *\n * See {ERC721-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(\n address to,\n uint256 tokenId\n ) external virtual onlyRole(MINTER_ROLE) {\n if (supplyLimt > 0) {\n require(totalSupply() < supplyLimt, \"Exceed the total supply\");\n }\n _mint(to, tokenId);\n }\n\n function batchMint(\n address to,\n uint256[] calldata tokenIds\n ) external onlyRole(MINTER_ROLE) {\n if (supplyLimt > 0) {\n require(\n (totalSupply() + tokenIds.length) <= supplyLimt,\n \"Exceed the total supply\"\n );\n }\n require(tokenIds.length <= 100, \"tokenIds too many\");\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _mint(to, tokenIds[i]);\n }\n emit BatchMint(to, tokenIds);\n }\n\n /**\n * @dev Grant mint role to address\n */\n function setMintRole(address to) external {\n grantRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Remove mint role to address\n */\n function removeMintRole(address to) external {\n revokeRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev grant burn role to address\n */\n function setBurnRole(address to) external {\n grantRole(BURN_ROLE, to);\n }\n\n /**\n * @dev Remove burn role to address\n */\n function removeBurnRole(address proxy) external {\n revokeRole(BURN_ROLE, proxy);\n }\n\n /**\n * @dev Add address for lock item\n */\n function grantLockRole(address to) external {\n grantRole(LOCK_ROLE, to);\n }\n\n /**\n * @dev Remove address for lock item\n */\n function removeLockRole(address account) external {\n revokeRole(LOCK_ROLE, account);\n }\n\n /**\n * @dev Lock token to use in game or for rental\n */\n function lock(uint256 tokenId) external onlyRole(LOCK_ROLE) {\n require(_exists(tokenId), \"Must be valid tokenId\");\n require(!lockedTokens[tokenId], \"Token has already locked\");\n lockedTokens[tokenId] = true;\n emit Lock(tokenId);\n }\n\n /**\n * @dev Unlock token to use blockchain or sale on marketplace\n */\n function unlock(uint256 tokenId) external onlyRole(LOCK_ROLE) {\n require(_exists(tokenId), \"Must be valid tokenId\");\n require(lockedTokens[tokenId], \"Token has already unlocked\");\n lockedTokens[tokenId] = false;\n emit UnLock(tokenId);\n }\n\n /**\n * @dev Get lock status\n */\n function isLocked(uint256 tokenId) external view returns (bool) {\n return lockedTokens[tokenId];\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyRole(DEFAULT_ADMIN_ROLE) {\n _baseTokenURI = baseTokenURI;\n }\n\n /**\n * @dev See {IERC165-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721Enumerable) {\n require(!lockedTokens[tokenId], \"Can not transfer locked token\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Burns `tokenId`.\n *\n * Requirements:\n *\n * - The caller must own `tokenId` or be an approved operator.\n */\n function burn(\n address owner,\n uint256 tokenId\n ) external virtual onlyRole(BURN_ROLE) {\n require(_exists(tokenId), \"TokenId not exists\");\n require(!lockedTokens[tokenId], \"Can not burn locked token\");\n require(\n ownerOf(tokenId) == owner,\n \"current address is not owner of this item now\"\n );\n _burn(tokenId);\n }\n}\n", "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/tokens/erc721/BEBadge.sol", "ast": { "absolutePath": "project:/contracts/tokens/erc721/BEBadge.sol", @@ -935,95 +896,80 @@ 308 ], "Address": [ - 2177 + 2072 ], "BEBadge": [ - 2831 + 2778 ], "Context": [ - 2199 + 2094 ], "ERC165": [ - 2426 + 2321 ], "ERC721": [ - 1352 + 1247 ], "ERC721Enumerable": [ - 1824 + 1719 ], "IAccessControl": [ 381 ], "IERC165": [ - 2438 + 2333 ], "IERC721": [ - 1468 + 1363 ], "IERC721Enumerable": [ - 1855 + 1750 ], "IERC721Metadata": [ - 1882 + 1777 ], "IERC721Receiver": [ - 1486 - ], - "Ownable": [ - 486 + 1381 ], "Strings": [ - 2402 + 2297 ] }, - "id": 2832, + "id": 2779, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { - "id": 2440, + "id": 2335, "literals": [ "solidity", "0.8", ".10" ], "nodeType": "PragmaDirective", - "src": "32:23:14" - }, - { - "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", - "file": "@openzeppelin/contracts/access/Ownable.sol", - "id": 2441, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2832, - "sourceUnit": 487, - "src": "56:52:14", - "symbolAliases": [], - "unitAlias": "" + "src": "32:23:13" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol", "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol", - "id": 2442, + "id": 2336, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", - "scope": 2832, - "sourceUnit": 1825, - "src": "109:78:14", + "scope": 2779, + "sourceUnit": 1720, + "src": "56:78:13", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol", "file": "@openzeppelin/contracts/access/AccessControl.sol", - "id": 2443, + "id": 2337, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", - "scope": 2832, + "scope": 2779, "sourceUnit": 309, - "src": "188:58:14", + "src": "135:58:13", "symbolAliases": [], "unitAlias": "" }, @@ -1032,74 +978,61 @@ "baseContracts": [ { "baseName": { - "id": 2444, + "id": 2338, "name": "AccessControl", "nodeType": "IdentifierPath", "referencedDeclaration": 308, - "src": "277:13:14" + "src": "224:13:13" }, - "id": 2445, + "id": 2339, "nodeType": "InheritanceSpecifier", - "src": "277:13:14" + "src": "224:13:13" }, { "baseName": { - "id": 2446, + "id": 2340, "name": "ERC721Enumerable", "nodeType": "IdentifierPath", - "referencedDeclaration": 1824, - "src": "292:16:14" + "referencedDeclaration": 1719, + "src": "239:16:13" }, - "id": 2447, + "id": 2341, "nodeType": "InheritanceSpecifier", - "src": "292:16:14" - }, - { - "baseName": { - "id": 2448, - "name": "Ownable", - "nodeType": "IdentifierPath", - "referencedDeclaration": 486, - "src": "310:7:14" - }, - "id": 2449, - "nodeType": "InheritanceSpecifier", - "src": "310:7:14" + "src": "239:16:13" } ], "canonicalName": "BEBadge", "contractDependencies": [], "contractKind": "contract", - "fullyImplemented": false, - "id": 2831, + "fullyImplemented": true, + "id": 2778, "linearizedBaseContracts": [ - 2831, - 486, - 1824, - 1855, - 1352, - 1882, - 1468, + 2778, + 1719, + 1750, + 1247, + 1777, + 1363, 308, - 2426, - 2438, + 2321, + 2333, 381, - 2199 + 2094 ], "name": "BEBadge", - "nameLocation": "266:7:14", + "nameLocation": "213:7:13", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "dcec3294", - "id": 2453, + "id": 2345, "mutability": "mutable", "name": "lockedTokens", - "nameLocation": "354:12:14", + "nameLocation": "292:12:13", "nodeType": "VariableDeclaration", - "scope": 2831, - "src": "322:44:14", + "scope": 2778, + "src": "260:44:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1107,28 +1040,28 @@ "typeString": "mapping(uint256 => bool)" }, "typeName": { - "id": 2452, + "id": 2344, "keyType": { - "id": 2450, + "id": 2342, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "330:7:14", + "src": "268:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "322:24:14", + "src": "260:24:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" }, "valueType": { - "id": 2451, + "id": 2343, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "341:4:14", + "src": "279:4:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1139,13 +1072,13 @@ }, { "constant": false, - "id": 2456, + "id": 2348, "mutability": "mutable", "name": "_baseTokenURI", - "nameLocation": "385:13:14", + "nameLocation": "323:13:13", "nodeType": "VariableDeclaration", - "scope": 2831, - "src": "370:72:14", + "scope": 2778, + "src": "308:72:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1153,10 +1086,10 @@ "typeString": "string" }, "typeName": { - "id": 2454, + "id": 2346, "name": "string", "nodeType": "ElementaryTypeName", - "src": "370:6:14", + "src": "308:6:13", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1164,14 +1097,14 @@ }, "value": { "hexValue": "68747470733a2f2f6d61726b65742e636562672e67616d65732f6170692f6e66742f696e666f2f", - "id": 2455, + "id": 2347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "401:41:14", + "src": "339:41:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a22360c1a10c8323f2bd626125be4905616eb83f03cca72bba7f9692c4900800", "typeString": "literal_string \"https://market.cebg.games/api/nft/info/\"" @@ -1183,13 +1116,13 @@ { "constant": true, "functionSelector": "d5391393", - "id": 2461, + "id": 2353, "mutability": "constant", "name": "MINTER_ROLE", - "nameLocation": "470:11:14", + "nameLocation": "408:11:13", "nodeType": "VariableDeclaration", - "scope": 2831, - "src": "446:62:14", + "scope": 2778, + "src": "384:62:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1197,10 +1130,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2457, + "id": 2349, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "446:7:14", + "src": "384:7:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1210,14 +1143,14 @@ "arguments": [ { "hexValue": "4d494e5445525f524f4c45", - "id": 2459, + "id": 2351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "494:13:14", + "src": "432:13:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", "typeString": "literal_string \"MINTER_ROLE\"" @@ -1232,18 +1165,18 @@ "typeString": "literal_string \"MINTER_ROLE\"" } ], - "id": 2458, + "id": 2350, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "484:9:14", + "src": "422:9:13", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2460, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": true, @@ -1251,7 +1184,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "484:24:14", + "src": "422:24:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1263,13 +1196,13 @@ { "constant": true, "functionSelector": "b930908f", - "id": 2466, + "id": 2358, "mutability": "constant", "name": "BURN_ROLE", - "nameLocation": "536:9:14", + "nameLocation": "474:9:13", "nodeType": "VariableDeclaration", - "scope": 2831, - "src": "512:58:14", + "scope": 2778, + "src": "450:58:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1277,10 +1210,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2462, + "id": 2354, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "512:7:14", + "src": "450:7:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1290,14 +1223,14 @@ "arguments": [ { "hexValue": "4255524e5f524f4c45", - "id": 2464, + "id": 2356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "558:11:14", + "src": "496:11:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22", "typeString": "literal_string \"BURN_ROLE\"" @@ -1312,18 +1245,18 @@ "typeString": "literal_string \"BURN_ROLE\"" } ], - "id": 2463, + "id": 2355, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "548:9:14", + "src": "486:9:13", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2465, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": true, @@ -1331,7 +1264,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "548:22:14", + "src": "486:22:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1343,13 +1276,13 @@ { "constant": true, "functionSelector": "2f286b1b", - "id": 2471, + "id": 2363, "mutability": "constant", "name": "LOCK_ROLE", - "nameLocation": "598:9:14", + "nameLocation": "536:9:13", "nodeType": "VariableDeclaration", - "scope": 2831, - "src": "574:58:14", + "scope": 2778, + "src": "512:58:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1357,10 +1290,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2467, + "id": 2359, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "574:7:14", + "src": "512:7:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1370,14 +1303,14 @@ "arguments": [ { "hexValue": "4c4f434b5f524f4c45", - "id": 2469, + "id": 2361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "620:11:14", + "src": "558:11:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ee67e84f062f26b2e1ed715b7ab5b471f8978a749ac5fc5bc774f49acca5e751", "typeString": "literal_string \"LOCK_ROLE\"" @@ -1392,18 +1325,18 @@ "typeString": "literal_string \"LOCK_ROLE\"" } ], - "id": 2468, + "id": 2360, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "610:9:14", + "src": "548:9:13", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2470, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, @@ -1411,7 +1344,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "610:22:14", + "src": "548:22:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1420,26 +1353,54 @@ }, "visibility": "public" }, + { + "constant": false, + "functionSelector": "bc982c0d", + "id": 2365, + "mutability": "immutable", + "name": "supplyLimt", + "nameLocation": "599:10:13", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "574:35:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "574:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, { "anonymous": false, - "id": 2475, + "id": 2369, "name": "Lock", - "nameLocation": "643:4:14", + "nameLocation": "620:4:13", "nodeType": "EventDefinition", "parameters": { - "id": 2474, + "id": 2368, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2473, + "id": 2367, "indexed": true, "mutability": "mutable", "name": "tokenId", - "nameLocation": "664:7:14", + "nameLocation": "641:7:13", "nodeType": "VariableDeclaration", - "scope": 2475, - "src": "648:23:14", + "scope": 2369, + "src": "625:23:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1447,10 +1408,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2472, + "id": 2366, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "648:7:14", + "src": "625:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1459,30 +1420,30 @@ "visibility": "internal" } ], - "src": "647:25:14" + "src": "624:25:13" }, - "src": "637:36:14" + "src": "614:36:13" }, { "anonymous": false, - "id": 2479, + "id": 2373, "name": "UnLock", - "nameLocation": "682:6:14", + "nameLocation": "659:6:13", "nodeType": "EventDefinition", "parameters": { - "id": 2478, + "id": 2372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2477, + "id": 2371, "indexed": true, "mutability": "mutable", "name": "tokenId", - "nameLocation": "705:7:14", + "nameLocation": "682:7:13", "nodeType": "VariableDeclaration", - "scope": 2479, - "src": "689:23:14", + "scope": 2373, + "src": "666:23:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1490,10 +1451,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2476, + "id": 2370, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "689:7:14", + "src": "666:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1502,30 +1463,30 @@ "visibility": "internal" } ], - "src": "688:25:14" + "src": "665:25:13" }, - "src": "676:38:14" + "src": "653:38:13" }, { "anonymous": false, - "id": 2486, + "id": 2380, "name": "BatchMint", - "nameLocation": "723:9:14", + "nameLocation": "700:9:13", "nodeType": "EventDefinition", "parameters": { - "id": 2485, + "id": 2379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2481, + "id": 2375, "indexed": true, "mutability": "mutable", "name": "to", - "nameLocation": "749:2:14", + "nameLocation": "726:2:13", "nodeType": "VariableDeclaration", - "scope": 2486, - "src": "733:18:14", + "scope": 2380, + "src": "710:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1533,10 +1494,10 @@ "typeString": "address" }, "typeName": { - "id": 2480, + "id": 2374, "name": "address", "nodeType": "ElementaryTypeName", - "src": "733:7:14", + "src": "710:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1547,14 +1508,14 @@ }, { "constant": false, - "id": 2484, + "id": 2378, "indexed": false, "mutability": "mutable", "name": "tokenIds", - "nameLocation": "763:8:14", + "nameLocation": "740:8:13", "nodeType": "VariableDeclaration", - "scope": 2486, - "src": "753:18:14", + "scope": 2380, + "src": "730:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1563,18 +1524,18 @@ }, "typeName": { "baseType": { - "id": 2482, + "id": 2376, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "753:7:14", + "src": "730:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2483, + "id": 2377, "nodeType": "ArrayTypeName", - "src": "753:9:14", + "src": "730:9:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -1583,71 +1544,453 @@ "visibility": "internal" } ], - "src": "732:40:14" + "src": "709:40:13" }, - "src": "717:56:14" + "src": "694:56:13" }, { - "baseFunctions": [ - 703 - ], "body": { - "id": 2494, + "id": 2421, "nodeType": "Block", - "src": "852:31:14", + "src": "870:202:13", "statements": [ { "expression": { - "id": 2492, - "name": "_baseTokenURI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2456, - "src": "865:13:14", + "arguments": [ + { + "id": 2394, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "887:18:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2395, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "907:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "907:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2393, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "876:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "876:42:13", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 2491, - "id": 2493, - "nodeType": "Return", - "src": "858:20:14" + "id": 2398, + "nodeType": "ExpressionStatement", + "src": "876:42:13" + }, + { + "expression": { + "arguments": [ + { + "id": 2400, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2353, + "src": "935:11:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2401, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "948:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "948:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2399, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "924:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "924:35:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2404, + "nodeType": "ExpressionStatement", + "src": "924:35:13" + }, + { + "expression": { + "arguments": [ + { + "id": 2406, + "name": "BURN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2358, + "src": "976:9:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2407, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "987:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "987:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2405, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "965:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "965:33:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2410, + "nodeType": "ExpressionStatement", + "src": "965:33:13" + }, + { + "expression": { + "arguments": [ + { + "id": 2412, + "name": "LOCK_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2363, + "src": "1015:9:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2413, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "1026:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1026:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2411, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1004:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1004:33:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2416, + "nodeType": "ExpressionStatement", + "src": "1004:33:13" + }, + { + "expression": { + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2417, + "name": "supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1043:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2418, + "name": "supplyLimt_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2386, + "src": "1056:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1043:24:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2420, + "nodeType": "ExpressionStatement", + "src": "1043:24:13" } ] }, - "id": 2495, + "id": 2422, "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_baseURI", - "nameLocation": "786:8:14", + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2389, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2382, + "src": "854:5:13", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 2390, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "861:7:13", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 2391, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2388, + "name": "ERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1247, + "src": "847:6:13" + }, + "nodeType": "ModifierInvocation", + "src": "847:22:13" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", - "overrides": { - "id": 2488, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "819:8:14" - }, "parameters": { - "id": 2487, - "nodeType": "ParameterList", - "parameters": [], - "src": "794:2:14" - }, - "returnParameters": { - "id": 2491, + "id": 2387, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2490, + "id": 2382, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "name_", + "nameLocation": "785:5:13", "nodeType": "VariableDeclaration", - "scope": 2495, - "src": "837:13:14", + "scope": 2422, + "src": "771:19:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1655,10 +1998,158 @@ "typeString": "string" }, "typeName": { - "id": 2489, + "id": 2381, "name": "string", "nodeType": "ElementaryTypeName", - "src": "837:6:14", + "src": "771:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2384, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "810:7:13", + "nodeType": "VariableDeclaration", + "scope": 2422, + "src": "796:21:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2383, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "796:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2386, + "mutability": "mutable", + "name": "supplyLimt_", + "nameLocation": "831:11:13", + "nodeType": "VariableDeclaration", + "scope": 2422, + "src": "823:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "823:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "765:81:13" + }, + "returnParameters": { + "id": 2392, + "nodeType": "ParameterList", + "parameters": [], + "src": "870:0:13" + }, + "scope": 2778, + "src": "754:318:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 598 + ], + "body": { + "id": 2430, + "nodeType": "Block", + "src": "1151:31:13", + "statements": [ + { + "expression": { + "id": 2428, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "1164:13:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2427, + "id": 2429, + "nodeType": "Return", + "src": "1157:20:13" + } + ] + }, + "id": 2431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_baseURI", + "nameLocation": "1085:8:13", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2424, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1118:8:13" + }, + "parameters": { + "id": 2423, + "nodeType": "ParameterList", + "parameters": [], + "src": "1093:2:13" + }, + "returnParameters": { + "id": 2427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2426, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2431, + "src": "1136:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2425, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1136:6:13", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1667,67 +2158,181 @@ "visibility": "internal" } ], - "src": "836:15:14" + "src": "1135:15:13" }, - "scope": 2831, - "src": "777:106:14", + "scope": 2778, + "src": "1076:106:13", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "body": { - "id": 2519, + "id": 2460, "nodeType": "Block", - "src": "1328:89:14", + "src": "1627:131:13", "statements": [ { - "expression": { - "arguments": [ + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2442, + "name": "supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1637:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1650:1:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1637:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2454, + "nodeType": "IfStatement", + "src": "1633:97:13", + "trueBody": { + "id": 2453, + "nodeType": "Block", + "src": "1653:77:13", + "statements": [ { - "id": 2510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1342:17:14", - "subExpression": { + "expression": { "arguments": [ { - "id": 2508, - "name": "tokenId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2500, - "src": "1351:7:14", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2446, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1669:11:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1669:13:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2448, + "name": "supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1685:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1669:26:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } + }, + { + "hexValue": "4578636565642074686520746f74616c20737570706c79", + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1697:25:13", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12d840de55800a407036c108072a110b489a6fba65d56a3541eab87f0f0af5d1", + "typeString": "literal_string \"Exceed the total supply\"" + }, + "value": "Exceed the total supply" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_12d840de55800a407036c108072a110b489a6fba65d56a3541eab87f0f0af5d1", + "typeString": "literal_string \"Exceed the total supply\"" } ], - "id": 2507, - "name": "_exists", + "id": 2445, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "1343:7:14", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1661:7:13", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2509, + "id": 2451, "isConstant": false, "isLValue": false, "isPure": false, @@ -1735,101 +2340,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1343:16:14", + "src": "1661:62:13", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4d757374206861766520756e6971756520746f6b656e4964", - "id": 2511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1361:26:14", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_208a69e2fca5e7cc6edddcb6f96119aa390e348936b4eabbf929a28a3d6ee1b8", - "typeString": "literal_string \"Must have unique tokenId\"" - }, - "value": "Must have unique tokenId" + "id": 2452, + "nodeType": "ExpressionStatement", + "src": "1661:62:13" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_208a69e2fca5e7cc6edddcb6f96119aa390e348936b4eabbf929a28a3d6ee1b8", - "typeString": "literal_string \"Must have unique tokenId\"" - } - ], - "id": 2506, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1334:7:14", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1334:54:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2513, - "nodeType": "ExpressionStatement", - "src": "1334:54:14" + ] + } }, { "expression": { "arguments": [ { - "id": 2515, + "id": 2456, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2498, - "src": "1400:2:14", + "referencedDeclaration": 2434, + "src": "1741:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 2516, + "id": 2457, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2500, - "src": "1404:7:14", + "referencedDeclaration": 2436, + "src": "1745:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1847,18 +2393,18 @@ "typeString": "uint256" } ], - "id": 2514, + "id": 2455, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "1394:5:14", + "referencedDeclaration": 971, + "src": "1735:5:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2517, + "id": 2458, "isConstant": false, "isLValue": false, "isPure": false, @@ -1866,74 +2412,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1394:18:14", + "src": "1735:18:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2518, + "id": 2459, "nodeType": "ExpressionStatement", - "src": "1394:18:14" + "src": "1735:18:13" } ] }, "documentation": { - "id": 2496, + "id": 2432, "nodeType": "StructuredDocumentation", - "src": "887:344:14", + "src": "1186:344:13", "text": " @dev Creates a new token for `to`. Its token ID will be automatically\n assigned (and available on the emitted {IERC721-Transfer} event), and the token\n URI autogenerated based on the base URI passed at construction.\n See {ERC721-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`." }, "functionSelector": "40c10f19", - "id": 2520, + "id": 2461, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 2503, + "id": 2439, "name": "MINTER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2461, - "src": "1315:11:14", + "referencedDeclaration": 2353, + "src": "1614:11:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 2504, + "id": 2440, "kind": "modifierInvocation", "modifierName": { - "id": 2502, + "id": 2438, "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "1306:8:14" + "src": "1605:8:13" }, "nodeType": "ModifierInvocation", - "src": "1306:21:14" + "src": "1605:21:13" } ], "name": "mint", - "nameLocation": "1243:4:14", + "nameLocation": "1542:4:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2501, + "id": 2437, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2498, + "id": 2434, "mutability": "mutable", "name": "to", - "nameLocation": "1261:2:14", + "nameLocation": "1560:2:13", "nodeType": "VariableDeclaration", - "scope": 2520, - "src": "1253:10:14", + "scope": 2461, + "src": "1552:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1941,10 +2487,10 @@ "typeString": "address" }, "typeName": { - "id": 2497, + "id": 2433, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1253:7:14", + "src": "1552:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1955,13 +2501,13 @@ }, { "constant": false, - "id": 2500, + "id": 2436, "mutability": "mutable", "name": "tokenId", - "nameLocation": "1277:7:14", + "nameLocation": "1576:7:13", "nodeType": "VariableDeclaration", - "scope": 2520, - "src": "1269:15:14", + "scope": 2461, + "src": "1568:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1969,10 +2515,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2499, + "id": 2435, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1269:7:14", + "src": "1568:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1981,26 +2527,268 @@ "visibility": "internal" } ], - "src": "1247:41:14" + "src": "1546:41:13" }, "returnParameters": { - "id": 2505, + "id": 2441, "nodeType": "ParameterList", "parameters": [], - "src": "1328:0:14" + "src": "1627:0:13" }, - "scope": 2831, - "src": "1234:183:14", + "scope": 2778, + "src": "1533:225:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" }, { "body": { - "id": 2564, + "id": 2522, "nodeType": "Block", - "src": "1524:185:14", + "src": "1865:332:13", "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2472, + "name": "supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1875:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1888:1:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1875:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2488, + "nodeType": "IfStatement", + "src": "1871:142:13", + "trueBody": { + "id": 2487, + "nodeType": "Block", + "src": "1891:122:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2476, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1917:11:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1917:13:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2478, + "name": "tokenIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2466, + "src": "1933:8:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1933:15:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1917:31:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2481, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1916:33:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2482, + "name": "supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1953:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1916:47:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4578636565642074686520746f74616c20737570706c79", + "id": 2484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1973:25:13", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12d840de55800a407036c108072a110b489a6fba65d56a3541eab87f0f0af5d1", + "typeString": "literal_string \"Exceed the total supply\"" + }, + "value": "Exceed the total supply" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_12d840de55800a407036c108072a110b489a6fba65d56a3541eab87f0f0af5d1", + "typeString": "literal_string \"Exceed the total supply\"" + } + ], + "id": 2475, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1899:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1899:107:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2486, + "nodeType": "ExpressionStatement", + "src": "1899:107:13" + } + ] + } + }, { "expression": { "arguments": [ @@ -2009,32 +2797,32 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2535, + "id": 2493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 2532, + "id": 2490, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2525, - "src": "1538:8:14", + "referencedDeclaration": 2466, + "src": "2026:8:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 2533, + "id": 2491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "1538:15:14", + "src": "2026:15:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2044,21 +2832,21 @@ "operator": "<=", "rightExpression": { "hexValue": "313030", - "id": 2534, + "id": 2492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1557:3:14", + "src": "2045:3:13", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "1538:22:14", + "src": "2026:22:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2066,14 +2854,14 @@ }, { "hexValue": "746f6b656e49647320746f6f206d616e79", - "id": 2536, + "id": 2494, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1562:19:14", + "src": "2050:19:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_04bfe1e76fdc0dd8a7d8ff5123d4d867e22f16ad85a91f714908fd44600dcbef", "typeString": "literal_string \"tokenIds too many\"" @@ -2092,7 +2880,7 @@ "typeString": "literal_string \"tokenIds too many\"" } ], - "id": 2531, + "id": 2489, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2100,13 +2888,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "1530:7:14", + "src": "2018:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2537, + "id": 2495, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,33 +2902,33 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1530:52:14", + "src": "2018:52:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2538, + "id": 2496, "nodeType": "ExpressionStatement", - "src": "1530:52:14" + "src": "2018:52:13" }, { "body": { - "id": 2557, + "id": 2515, "nodeType": "Block", - "src": "1634:37:14", + "src": "2122:37:13", "statements": [ { "expression": { "arguments": [ { - "id": 2551, + "id": 2509, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2522, - "src": "1648:2:14", + "referencedDeclaration": 2463, + "src": "2136:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2148,25 +2936,25 @@ }, { "baseExpression": { - "id": 2552, + "id": 2510, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2525, - "src": "1652:8:14", + "referencedDeclaration": 2466, + "src": "2140:8:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 2554, + "id": 2512, "indexExpression": { - "id": 2553, + "id": 2511, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2540, - "src": "1661:1:14", + "referencedDeclaration": 2498, + "src": "2149:1:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2177,7 +2965,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1652:11:14", + "src": "2140:11:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2195,18 +2983,18 @@ "typeString": "uint256" } ], - "id": 2550, + "id": 2508, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "1642:5:14", + "referencedDeclaration": 971, + "src": "2130:5:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2555, + "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, @@ -2214,16 +3002,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1642:22:14", + "src": "2130:22:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2556, + "id": 2514, "nodeType": "ExpressionStatement", - "src": "1642:22:14" + "src": "2130:22:13" } ] }, @@ -2232,18 +3020,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2546, + "id": 2504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 2543, + "id": 2501, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2540, - "src": "1608:1:14", + "referencedDeclaration": 2498, + "src": "2096:1:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2253,51 +3041,51 @@ "operator": "<", "rightExpression": { "expression": { - "id": 2544, + "id": 2502, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2525, - "src": "1612:8:14", + "referencedDeclaration": 2466, + "src": "2100:8:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 2545, + "id": 2503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "1612:15:14", + "src": "2100:15:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1608:19:14", + "src": "2096:19:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2558, + "id": 2516, "initializationExpression": { "assignments": [ - 2540 + 2498 ], "declarations": [ { "constant": false, - "id": 2540, + "id": 2498, "mutability": "mutable", "name": "i", - "nameLocation": "1601:1:14", + "nameLocation": "2089:1:13", "nodeType": "VariableDeclaration", - "scope": 2558, - "src": "1593:9:14", + "scope": 2516, + "src": "2081:9:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2305,10 +3093,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2539, + "id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1593:7:14", + "src": "2081:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2317,17 +3105,17 @@ "visibility": "internal" } ], - "id": 2542, + "id": 2500, "initialValue": { "hexValue": "30", - "id": 2541, + "id": 2499, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1605:1:14", + "src": "2093:1:13", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2335,11 +3123,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1593:13:14" + "src": "2081:13:13" }, "loopExpression": { "expression": { - "id": 2548, + "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, @@ -2347,14 +3135,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1629:3:14", + "src": "2117:3:13", "subExpression": { - "id": 2547, + "id": 2505, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2540, - "src": "1629:1:14", + "referencedDeclaration": 2498, + "src": "2117:1:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2365,35 +3153,35 @@ "typeString": "uint256" } }, - "id": 2549, + "id": 2507, "nodeType": "ExpressionStatement", - "src": "1629:3:14" + "src": "2117:3:13" }, "nodeType": "ForStatement", - "src": "1588:83:14" + "src": "2076:83:13" }, { "eventCall": { "arguments": [ { - "id": 2560, + "id": 2518, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2522, - "src": "1691:2:14", + "referencedDeclaration": 2463, + "src": "2179:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 2561, + "id": 2519, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2525, - "src": "1695:8:14", + "referencedDeclaration": 2466, + "src": "2183:8:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -2411,18 +3199,18 @@ "typeString": "uint256[] calldata" } ], - "id": 2559, + "id": 2517, "name": "BatchMint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2486, - "src": "1681:9:14", + "referencedDeclaration": 2380, + "src": "2169:9:13", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (address,uint256[] memory)" } }, - "id": 2562, + "id": 2520, "isConstant": false, "isLValue": false, "isPure": false, @@ -2430,68 +3218,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1681:23:14", + "src": "2169:23:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2563, + "id": 2521, "nodeType": "EmitStatement", - "src": "1676:28:14" + "src": "2164:28:13" } ] }, "functionSelector": "4684d7e9", - "id": 2565, + "id": 2523, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 2528, + "id": 2469, "name": "MINTER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2461, - "src": "1511:11:14", + "referencedDeclaration": 2353, + "src": "1852:11:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 2529, + "id": 2470, "kind": "modifierInvocation", "modifierName": { - "id": 2527, + "id": 2468, "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "1502:8:14" + "src": "1843:8:13" }, "nodeType": "ModifierInvocation", - "src": "1502:21:14" + "src": "1843:21:13" } ], "name": "batchMint", - "nameLocation": "1430:9:14", + "nameLocation": "1771:9:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2526, + "id": 2467, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2522, + "id": 2463, "mutability": "mutable", "name": "to", - "nameLocation": "1453:2:14", + "nameLocation": "1794:2:13", "nodeType": "VariableDeclaration", - "scope": 2565, - "src": "1445:10:14", + "scope": 2523, + "src": "1786:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2499,10 +3287,10 @@ "typeString": "address" }, "typeName": { - "id": 2521, + "id": 2462, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1445:7:14", + "src": "1786:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2513,13 +3301,13 @@ }, { "constant": false, - "id": 2525, + "id": 2466, "mutability": "mutable", "name": "tokenIds", - "nameLocation": "1480:8:14", + "nameLocation": "1821:8:13", "nodeType": "VariableDeclaration", - "scope": 2565, - "src": "1461:27:14", + "scope": 2523, + "src": "1802:27:13", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2528,18 +3316,18 @@ }, "typeName": { "baseType": { - "id": 2523, + "id": 2464, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1461:7:14", + "src": "1802:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2524, + "id": 2465, "nodeType": "ArrayTypeName", - "src": "1461:9:14", + "src": "1802:9:13", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -2548,48 +3336,48 @@ "visibility": "internal" } ], - "src": "1439:53:14" + "src": "1780:53:13" }, "returnParameters": { - "id": 2530, + "id": 2471, "nodeType": "ParameterList", "parameters": [], - "src": "1524:0:14" + "src": "1865:0:13" }, - "scope": 2831, - "src": "1421:288:14", + "scope": 2778, + "src": "1762:435:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2578, + "id": 2534, "nodeType": "Block", - "src": "1820:43:14", + "src": "2292:37:13", "statements": [ { "expression": { "arguments": [ { - "id": 2574, + "id": 2530, "name": "MINTER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2461, - "src": "1837:11:14", + "referencedDeclaration": 2353, + "src": "2308:11:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2575, - "name": "factory", + "id": 2531, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2568, - "src": "1850:7:14", + "referencedDeclaration": 2526, + "src": "2321:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2607,18 +3395,18 @@ "typeString": "address" } ], - "id": 2573, - "name": "_grantRole", + "id": 2529, + "name": "grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "1826:10:14", + "referencedDeclaration": 159, + "src": "2298:9:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2576, + "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, @@ -2626,60 +3414,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1826:32:14", + "src": "2298:26:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2577, + "id": 2533, "nodeType": "ExpressionStatement", - "src": "1826:32:14" + "src": "2298:26:13" } ] }, "documentation": { - "id": 2566, + "id": 2524, "nodeType": "StructuredDocumentation", - "src": "1713:44:14", - "text": " @dev Add factory to mint item" + "src": "2201:46:13", + "text": " @dev Grant mint role to address" }, - "functionSelector": "831be5bb", - "id": 2579, + "functionSelector": "530dd079", + "id": 2535, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2571, - "kind": "modifierInvocation", - "modifierName": { - "id": 2570, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "1810:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "1810:9:14" - } - ], - "name": "setMintFactory", - "nameLocation": "1769:14:14", + "modifiers": [], + "name": "setMintRole", + "nameLocation": "2259:11:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2569, + "id": 2527, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2568, + "id": 2526, "mutability": "mutable", - "name": "factory", - "nameLocation": "1792:7:14", + "name": "to", + "nameLocation": "2279:2:13", "nodeType": "VariableDeclaration", - "scope": 2579, - "src": "1784:15:14", + "scope": 2535, + "src": "2271:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2687,10 +3461,10 @@ "typeString": "address" }, "typeName": { - "id": 2567, + "id": 2525, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1784:7:14", + "src": "2271:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2700,48 +3474,48 @@ "visibility": "internal" } ], - "src": "1783:17:14" + "src": "2270:12:13" }, "returnParameters": { - "id": 2572, + "id": 2528, "nodeType": "ParameterList", "parameters": [], - "src": "1820:0:14" + "src": "2292:0:13" }, - "scope": 2831, - "src": "1760:103:14", + "scope": 2778, + "src": "2250:79:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2592, + "id": 2546, "nodeType": "Block", - "src": "1967:44:14", + "src": "2428:38:13", "statements": [ { "expression": { "arguments": [ { - "id": 2588, + "id": 2542, "name": "MINTER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2461, - "src": "1985:11:14", + "referencedDeclaration": 2353, + "src": "2445:11:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2589, - "name": "factory", + "id": 2543, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2582, - "src": "1998:7:14", + "referencedDeclaration": 2538, + "src": "2458:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2759,18 +3533,18 @@ "typeString": "address" } ], - "id": 2587, - "name": "_revokeRole", + "id": 2541, + "name": "revokeRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "1973:11:14", + "referencedDeclaration": 179, + "src": "2434:10:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2590, + "id": 2544, "isConstant": false, "isLValue": false, "isPure": false, @@ -2778,60 +3552,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1973:33:14", + "src": "2434:27:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2591, + "id": 2545, "nodeType": "ExpressionStatement", - "src": "1973:33:14" + "src": "2434:27:13" } ] }, "documentation": { - "id": 2580, + "id": 2536, "nodeType": "StructuredDocumentation", - "src": "1867:34:14", - "text": " @dev Remove factory" + "src": "2333:47:13", + "text": " @dev Remove mint role to address" }, - "functionSelector": "4b0eda10", - "id": 2593, + "functionSelector": "1cf4e3ee", + "id": 2547, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2585, - "kind": "modifierInvocation", - "modifierName": { - "id": 2584, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "1957:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "1957:9:14" - } - ], - "name": "removeMintFactory", - "nameLocation": "1913:17:14", + "modifiers": [], + "name": "removeMintRole", + "nameLocation": "2392:14:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2583, + "id": 2539, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2582, + "id": 2538, "mutability": "mutable", - "name": "factory", - "nameLocation": "1939:7:14", + "name": "to", + "nameLocation": "2415:2:13", "nodeType": "VariableDeclaration", - "scope": 2593, - "src": "1931:15:14", + "scope": 2547, + "src": "2407:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2839,10 +3599,10 @@ "typeString": "address" }, "typeName": { - "id": 2581, + "id": 2537, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1931:7:14", + "src": "2407:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2852,48 +3612,48 @@ "visibility": "internal" } ], - "src": "1930:17:14" + "src": "2406:12:13" }, "returnParameters": { - "id": 2586, + "id": 2540, "nodeType": "ParameterList", "parameters": [], - "src": "1967:0:14" + "src": "2428:0:13" }, - "scope": 2831, - "src": "1904:107:14", + "scope": 2778, + "src": "2383:83:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2606, + "id": 2558, "nodeType": "Block", - "src": "2119:39:14", + "src": "2561:35:13", "statements": [ { "expression": { "arguments": [ { - "id": 2602, + "id": 2554, "name": "BURN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2466, - "src": "2136:9:14", + "referencedDeclaration": 2358, + "src": "2577:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2603, - "name": "proxy", + "id": 2555, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2596, - "src": "2147:5:14", + "referencedDeclaration": 2550, + "src": "2588:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2911,18 +3671,18 @@ "typeString": "address" } ], - "id": 2601, - "name": "_grantRole", + "id": 2553, + "name": "grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "2125:10:14", + "referencedDeclaration": 159, + "src": "2567:9:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2604, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -2930,60 +3690,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2125:28:14", + "src": "2567:24:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2605, + "id": 2557, "nodeType": "ExpressionStatement", - "src": "2125:28:14" + "src": "2567:24:13" } ] }, "documentation": { - "id": 2594, + "id": 2548, "nodeType": "StructuredDocumentation", - "src": "2015:44:14", - "text": " @dev Add factory to burn item" + "src": "2470:46:13", + "text": " @dev grant burn role to address" }, - "functionSelector": "c64d0ebc", - "id": 2607, + "functionSelector": "327ba615", + "id": 2559, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2599, - "kind": "modifierInvocation", - "modifierName": { - "id": 2598, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "2109:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "2109:9:14" - } - ], - "name": "grantBurnRole", - "nameLocation": "2071:13:14", + "modifiers": [], + "name": "setBurnRole", + "nameLocation": "2528:11:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2597, + "id": 2551, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2596, + "id": 2550, "mutability": "mutable", - "name": "proxy", - "nameLocation": "2093:5:14", + "name": "to", + "nameLocation": "2548:2:13", "nodeType": "VariableDeclaration", - "scope": 2607, - "src": "2085:13:14", + "scope": 2559, + "src": "2540:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2991,10 +3737,10 @@ "typeString": "address" }, "typeName": { - "id": 2595, + "id": 2549, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2085:7:14", + "src": "2540:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3004,48 +3750,48 @@ "visibility": "internal" } ], - "src": "2084:15:14" + "src": "2539:12:13" }, "returnParameters": { - "id": 2600, + "id": 2552, "nodeType": "ParameterList", "parameters": [], - "src": "2119:0:14" + "src": "2561:0:13" }, - "scope": 2831, - "src": "2062:96:14", + "scope": 2778, + "src": "2519:77:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2620, + "id": 2570, "nodeType": "Block", - "src": "2256:40:14", + "src": "2698:39:13", "statements": [ { "expression": { "arguments": [ { - "id": 2616, + "id": 2566, "name": "BURN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2466, - "src": "2274:9:14", + "referencedDeclaration": 2358, + "src": "2715:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2617, + "id": 2567, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2285:5:14", + "referencedDeclaration": 2562, + "src": "2726:5:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3063,18 +3809,18 @@ "typeString": "address" } ], - "id": 2615, - "name": "_revokeRole", + "id": 2565, + "name": "revokeRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "2262:11:14", + "referencedDeclaration": 179, + "src": "2704:10:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2618, + "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, @@ -3082,60 +3828,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2262:29:14", + "src": "2704:28:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2619, + "id": 2569, "nodeType": "ExpressionStatement", - "src": "2262:29:14" + "src": "2704:28:13" } ] }, "documentation": { - "id": 2608, + "id": 2560, "nodeType": "StructuredDocumentation", - "src": "2162:32:14", - "text": " @dev Remove proxy" + "src": "2600:47:13", + "text": " @dev Remove burn role to address" }, - "functionSelector": "cbd80a9b", - "id": 2621, + "functionSelector": "965f4c60", + "id": 2571, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2613, - "kind": "modifierInvocation", - "modifierName": { - "id": 2612, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "2246:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "2246:9:14" - } - ], - "name": "revokeBurnProxy", - "nameLocation": "2206:15:14", + "modifiers": [], + "name": "removeBurnRole", + "nameLocation": "2659:14:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2611, + "id": 2563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2610, + "id": 2562, "mutability": "mutable", "name": "proxy", - "nameLocation": "2230:5:14", + "nameLocation": "2682:5:13", "nodeType": "VariableDeclaration", - "scope": 2621, - "src": "2222:13:14", + "scope": 2571, + "src": "2674:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3143,10 +3875,10 @@ "typeString": "address" }, "typeName": { - "id": 2609, + "id": 2561, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2222:7:14", + "src": "2674:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3156,48 +3888,48 @@ "visibility": "internal" } ], - "src": "2221:15:14" + "src": "2673:15:13" }, "returnParameters": { - "id": 2614, + "id": 2564, "nodeType": "ParameterList", "parameters": [], - "src": "2256:0:14" + "src": "2698:0:13" }, - "scope": 2831, - "src": "2197:99:14", + "scope": 2778, + "src": "2650:87:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2634, + "id": 2582, "nodeType": "Block", - "src": "2406:41:14", + "src": "2833:35:13", "statements": [ { "expression": { "arguments": [ { - "id": 2630, + "id": 2578, "name": "LOCK_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2471, - "src": "2423:9:14", + "referencedDeclaration": 2363, + "src": "2849:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2631, - "name": "account", + "id": 2579, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2624, - "src": "2434:7:14", + "referencedDeclaration": 2574, + "src": "2860:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3215,18 +3947,18 @@ "typeString": "address" } ], - "id": 2629, - "name": "_grantRole", + "id": 2577, + "name": "grantRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "2412:10:14", + "referencedDeclaration": 159, + "src": "2839:9:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2632, + "id": 2580, "isConstant": false, "isLValue": false, "isPure": false, @@ -3234,60 +3966,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2412:30:14", + "src": "2839:24:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2633, + "id": 2581, "nodeType": "ExpressionStatement", - "src": "2412:30:14" + "src": "2839:24:13" } ] }, "documentation": { - "id": 2622, + "id": 2572, "nodeType": "StructuredDocumentation", - "src": "2300:44:14", - "text": " @dev Add address to lock item" + "src": "2741:45:13", + "text": " @dev Add address for lock item" }, "functionSelector": "ace9e2e2", - "id": 2635, + "id": 2583, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2627, - "kind": "modifierInvocation", - "modifierName": { - "id": 2626, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "2396:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "2396:9:14" - } - ], + "modifiers": [], "name": "grantLockRole", - "nameLocation": "2356:13:14", + "nameLocation": "2798:13:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2625, + "id": 2575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2624, + "id": 2574, "mutability": "mutable", - "name": "account", - "nameLocation": "2378:7:14", + "name": "to", + "nameLocation": "2820:2:13", "nodeType": "VariableDeclaration", - "scope": 2635, - "src": "2370:15:14", + "scope": 2583, + "src": "2812:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3295,10 +4013,10 @@ "typeString": "address" }, "typeName": { - "id": 2623, + "id": 2573, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2370:7:14", + "src": "2812:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3308,48 +4026,48 @@ "visibility": "internal" } ], - "src": "2369:17:14" + "src": "2811:12:13" }, "returnParameters": { - "id": 2628, + "id": 2576, "nodeType": "ParameterList", "parameters": [], - "src": "2406:0:14" + "src": "2833:0:13" }, - "scope": 2831, - "src": "2347:100:14", + "scope": 2778, + "src": "2789:79:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2648, + "id": 2594, "nodeType": "Block", - "src": "2562:42:14", + "src": "2973:41:13", "statements": [ { "expression": { "arguments": [ { - "id": 2644, + "id": 2590, "name": "LOCK_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2471, - "src": "2580:9:14", + "referencedDeclaration": 2363, + "src": "2990:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 2645, + "id": 2591, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2638, - "src": "2591:7:14", + "referencedDeclaration": 2586, + "src": "3001:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3367,18 +4085,18 @@ "typeString": "address" } ], - "id": 2643, - "name": "_revokeRole", + "id": 2589, + "name": "revokeRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "2568:11:14", + "referencedDeclaration": 179, + "src": "2979:10:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 2646, + "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, @@ -3386,60 +4104,46 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2568:31:14", + "src": "2979:30:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2647, + "id": 2593, "nodeType": "ExpressionStatement", - "src": "2568:31:14" + "src": "2979:30:13" } ] }, "documentation": { - "id": 2636, + "id": 2584, "nodeType": "StructuredDocumentation", - "src": "2451:48:14", + "src": "2872:48:13", "text": " @dev Remove address for lock item" }, - "functionSelector": "544079b5", - "id": 2649, + "functionSelector": "79deb6e7", + "id": 2595, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 2641, - "kind": "modifierInvocation", - "modifierName": { - "id": 2640, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "2552:9:14" - }, - "nodeType": "ModifierInvocation", - "src": "2552:9:14" - } - ], - "name": "revokeLockRole", - "nameLocation": "2511:14:14", + "modifiers": [], + "name": "removeLockRole", + "nameLocation": "2932:14:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2639, + "id": 2587, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2638, + "id": 2586, "mutability": "mutable", "name": "account", - "nameLocation": "2534:7:14", + "nameLocation": "2955:7:13", "nodeType": "VariableDeclaration", - "scope": 2649, - "src": "2526:15:14", + "scope": 2595, + "src": "2947:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3447,10 +4151,10 @@ "typeString": "address" }, "typeName": { - "id": 2637, + "id": 2585, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2526:7:14", + "src": "2947:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3460,25 +4164,25 @@ "visibility": "internal" } ], - "src": "2525:17:14" + "src": "2946:17:13" }, "returnParameters": { - "id": 2642, + "id": 2588, "nodeType": "ParameterList", "parameters": [], - "src": "2562:0:14" + "src": "2973:0:13" }, - "scope": 2831, - "src": "2502:102:14", + "scope": 2778, + "src": "2923:91:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2683, + "id": 2629, "nodeType": "Block", - "src": "2730:184:14", + "src": "3140:184:13", "statements": [ { "expression": { @@ -3486,12 +4190,12 @@ { "arguments": [ { - "id": 2660, + "id": 2606, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2652, - "src": "2752:7:14", + "referencedDeclaration": 2598, + "src": "3162:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3505,18 +4209,18 @@ "typeString": "uint256" } ], - "id": 2659, + "id": 2605, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "2744:7:14", + "referencedDeclaration": 820, + "src": "3154:7:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 2661, + "id": 2607, "isConstant": false, "isLValue": false, "isPure": false, @@ -3524,7 +4228,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2744:16:14", + "src": "3154:16:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3533,14 +4237,14 @@ }, { "hexValue": "4d7573742062652076616c696420746f6b656e4964", - "id": 2662, + "id": 2608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:23:14", + "src": "3172:23:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a80977690af10bb53627805d006c587e568098223f1f3ac1446a2936854da75e", "typeString": "literal_string \"Must be valid tokenId\"" @@ -3559,7 +4263,7 @@ "typeString": "literal_string \"Must be valid tokenId\"" } ], - "id": 2658, + "id": 2604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3567,13 +4271,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "2736:7:14", + "src": "3146:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2663, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, @@ -3581,22 +4285,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2736:50:14", + "src": "3146:50:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2664, + "id": 2610, "nodeType": "ExpressionStatement", - "src": "2736:50:14" + "src": "3146:50:13" }, { "expression": { "arguments": [ { - "id": 2669, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -3604,28 +4308,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2800:22:14", + "src": "3210:22:13", "subExpression": { "baseExpression": { - "id": 2666, + "id": 2612, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "2801:12:14", + "referencedDeclaration": 2345, + "src": "3211:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2668, + "id": 2614, "indexExpression": { - "id": 2667, + "id": 2613, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2652, - "src": "2814:7:14", + "referencedDeclaration": 2598, + "src": "3224:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3636,7 +4340,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2801:21:14", + "src": "3211:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3649,14 +4353,14 @@ }, { "hexValue": "546f6b656e2068617320616c7265616479206c6f636b6564", - "id": 2670, + "id": 2616, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2824:26:14", + "src": "3234:26:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5e6558ada038147f5e17e45fca8a6ee3d09ebee2e09181b1da179697f584873a", "typeString": "literal_string \"Token has already locked\"" @@ -3675,7 +4379,7 @@ "typeString": "literal_string \"Token has already locked\"" } ], - "id": 2665, + "id": 2611, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3683,13 +4387,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "2792:7:14", + "src": "3202:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2671, + "id": 2617, "isConstant": false, "isLValue": false, "isPure": false, @@ -3697,45 +4401,45 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2792:59:14", + "src": "3202:59:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2672, + "id": 2618, "nodeType": "ExpressionStatement", - "src": "2792:59:14" + "src": "3202:59:13" }, { "expression": { - "id": 2677, + "id": 2623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 2673, + "id": 2619, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "2857:12:14", + "referencedDeclaration": 2345, + "src": "3267:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2675, + "id": 2621, "indexExpression": { - "id": 2674, + "id": 2620, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2652, - "src": "2870:7:14", + "referencedDeclaration": 2598, + "src": "3280:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3746,7 +4450,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2857:21:14", + "src": "3267:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3756,40 +4460,40 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 2676, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2881:4:14", + "src": "3291:4:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "2857:28:14", + "src": "3267:28:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2678, + "id": 2624, "nodeType": "ExpressionStatement", - "src": "2857:28:14" + "src": "3267:28:13" }, { "eventCall": { "arguments": [ { - "id": 2680, + "id": 2626, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2652, - "src": "2901:7:14", + "referencedDeclaration": 2598, + "src": "3311:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3803,18 +4507,18 @@ "typeString": "uint256" } ], - "id": 2679, + "id": 2625, "name": "Lock", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, - "src": "2896:4:14", + "referencedDeclaration": 2369, + "src": "3306:4:13", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 2681, + "id": 2627, "isConstant": false, "isLValue": false, "isPure": false, @@ -3822,74 +4526,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2896:13:14", + "src": "3306:13:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2682, + "id": 2628, "nodeType": "EmitStatement", - "src": "2891:18:14" + "src": "3301:18:13" } ] }, "documentation": { - "id": 2650, + "id": 2596, "nodeType": "StructuredDocumentation", - "src": "2608:59:14", + "src": "3018:59:13", "text": " @dev Lock token to use in game or for rental" }, "functionSelector": "dd467064", - "id": 2684, + "id": 2630, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 2655, + "id": 2601, "name": "LOCK_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2471, - "src": "2719:9:14", + "referencedDeclaration": 2363, + "src": "3129:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 2656, + "id": 2602, "kind": "modifierInvocation", "modifierName": { - "id": 2654, + "id": 2600, "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "2710:8:14" + "src": "3120:8:13" }, "nodeType": "ModifierInvocation", - "src": "2710:19:14" + "src": "3120:19:13" } ], "name": "lock", - "nameLocation": "2679:4:14", + "nameLocation": "3089:4:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2653, + "id": 2599, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2652, + "id": 2598, "mutability": "mutable", "name": "tokenId", - "nameLocation": "2692:7:14", + "nameLocation": "3102:7:13", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2684:15:14", + "scope": 2630, + "src": "3094:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3897,10 +4601,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2651, + "id": 2597, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2684:7:14", + "src": "3094:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3909,25 +4613,25 @@ "visibility": "internal" } ], - "src": "2683:17:14" + "src": "3093:17:13" }, "returnParameters": { - "id": 2657, + "id": 2603, "nodeType": "ParameterList", "parameters": [], - "src": "2730:0:14" + "src": "3140:0:13" }, - "scope": 2831, - "src": "2670:244:14", + "scope": 2778, + "src": "3080:244:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2717, + "id": 2663, "nodeType": "Block", - "src": "3056:188:14", + "src": "3466:188:13", "statements": [ { "expression": { @@ -3935,12 +4639,12 @@ { "arguments": [ { - "id": 2695, + "id": 2641, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "3078:7:14", + "referencedDeclaration": 2633, + "src": "3488:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3954,18 +4658,18 @@ "typeString": "uint256" } ], - "id": 2694, + "id": 2640, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "3070:7:14", + "referencedDeclaration": 820, + "src": "3480:7:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 2696, + "id": 2642, "isConstant": false, "isLValue": false, "isPure": false, @@ -3973,7 +4677,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3070:16:14", + "src": "3480:16:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3982,14 +4686,14 @@ }, { "hexValue": "4d7573742062652076616c696420746f6b656e4964", - "id": 2697, + "id": 2643, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3088:23:14", + "src": "3498:23:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a80977690af10bb53627805d006c587e568098223f1f3ac1446a2936854da75e", "typeString": "literal_string \"Must be valid tokenId\"" @@ -4008,7 +4712,7 @@ "typeString": "literal_string \"Must be valid tokenId\"" } ], - "id": 2693, + "id": 2639, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4016,13 +4720,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "3062:7:14", + "src": "3472:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2698, + "id": 2644, "isConstant": false, "isLValue": false, "isPure": false, @@ -4030,41 +4734,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3062:50:14", + "src": "3472:50:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2699, + "id": 2645, "nodeType": "ExpressionStatement", - "src": "3062:50:14" + "src": "3472:50:13" }, { "expression": { "arguments": [ { "baseExpression": { - "id": 2701, + "id": 2647, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "3126:12:14", + "referencedDeclaration": 2345, + "src": "3536:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2703, + "id": 2649, "indexExpression": { - "id": 2702, + "id": 2648, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "3139:7:14", + "referencedDeclaration": 2633, + "src": "3549:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4075,7 +4779,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3126:21:14", + "src": "3536:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4083,14 +4787,14 @@ }, { "hexValue": "546f6b656e2068617320616c726561647920756e6c6f636b6564", - "id": 2704, + "id": 2650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3149:28:14", + "src": "3559:28:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e2ef29bad5d35c618438dda4b374dde06d537fd97096436b36c7df99d26402ca", "typeString": "literal_string \"Token has already unlocked\"" @@ -4109,7 +4813,7 @@ "typeString": "literal_string \"Token has already unlocked\"" } ], - "id": 2700, + "id": 2646, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4117,13 +4821,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "3118:7:14", + "src": "3528:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2705, + "id": 2651, "isConstant": false, "isLValue": false, "isPure": false, @@ -4131,45 +4835,45 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3118:60:14", + "src": "3528:60:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2706, + "id": 2652, "nodeType": "ExpressionStatement", - "src": "3118:60:14" + "src": "3528:60:13" }, { "expression": { - "id": 2711, + "id": 2657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 2707, + "id": 2653, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "3184:12:14", + "referencedDeclaration": 2345, + "src": "3594:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2709, + "id": 2655, "indexExpression": { - "id": 2708, + "id": 2654, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "3197:7:14", + "referencedDeclaration": 2633, + "src": "3607:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4180,7 +4884,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3184:21:14", + "src": "3594:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4190,40 +4894,40 @@ "operator": "=", "rightHandSide": { "hexValue": "66616c7365", - "id": 2710, + "id": 2656, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3208:5:14", + "src": "3618:5:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "3184:29:14", + "src": "3594:29:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2712, + "id": 2658, "nodeType": "ExpressionStatement", - "src": "3184:29:14" + "src": "3594:29:13" }, { "eventCall": { "arguments": [ { - "id": 2714, + "id": 2660, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "3231:7:14", + "referencedDeclaration": 2633, + "src": "3641:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4237,18 +4941,18 @@ "typeString": "uint256" } ], - "id": 2713, + "id": 2659, "name": "UnLock", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "3224:6:14", + "referencedDeclaration": 2373, + "src": "3634:6:13", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 2715, + "id": 2661, "isConstant": false, "isLValue": false, "isPure": false, @@ -4256,74 +4960,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3224:15:14", + "src": "3634:15:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2716, + "id": 2662, "nodeType": "EmitStatement", - "src": "3219:20:14" + "src": "3629:20:13" } ] }, "documentation": { - "id": 2685, + "id": 2631, "nodeType": "StructuredDocumentation", - "src": "2918:73:14", + "src": "3328:73:13", "text": " @dev Unlock token to use blockchain or sale on marketplace" }, "functionSelector": "6198e339", - "id": 2718, + "id": 2664, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 2690, + "id": 2636, "name": "LOCK_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2471, - "src": "3045:9:14", + "referencedDeclaration": 2363, + "src": "3455:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 2691, + "id": 2637, "kind": "modifierInvocation", "modifierName": { - "id": 2689, + "id": 2635, "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "3036:8:14" + "src": "3446:8:13" }, "nodeType": "ModifierInvocation", - "src": "3036:19:14" + "src": "3446:19:13" } ], "name": "unlock", - "nameLocation": "3003:6:14", + "nameLocation": "3413:6:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2688, + "id": 2634, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2687, + "id": 2633, "mutability": "mutable", "name": "tokenId", - "nameLocation": "3018:7:14", + "nameLocation": "3428:7:13", "nodeType": "VariableDeclaration", - "scope": 2718, - "src": "3010:15:14", + "scope": 2664, + "src": "3420:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4331,10 +5035,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2686, + "id": 2632, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3010:7:14", + "src": "3420:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4343,48 +5047,48 @@ "visibility": "internal" } ], - "src": "3009:17:14" + "src": "3419:17:13" }, "returnParameters": { - "id": 2692, + "id": 2638, "nodeType": "ParameterList", "parameters": [], - "src": "3056:0:14" + "src": "3466:0:13" }, - "scope": 2831, - "src": "2994:250:14", + "scope": 2778, + "src": "3404:250:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 2730, + "id": 2676, "nodeType": "Block", - "src": "3350:39:14", + "src": "3760:39:13", "statements": [ { "expression": { "baseExpression": { - "id": 2726, + "id": 2672, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "3363:12:14", + "referencedDeclaration": 2345, + "src": "3773:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2728, + "id": 2674, "indexExpression": { - "id": 2727, + "id": 2673, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2721, - "src": "3376:7:14", + "referencedDeclaration": 2667, + "src": "3786:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4395,46 +5099,46 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3363:21:14", + "src": "3773:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 2725, - "id": 2729, + "functionReturnParameters": 2671, + "id": 2675, "nodeType": "Return", - "src": "3356:28:14" + "src": "3766:28:13" } ] }, "documentation": { - "id": 2719, + "id": 2665, "nodeType": "StructuredDocumentation", - "src": "3248:35:14", + "src": "3658:35:13", "text": " @dev Get lock status" }, "functionSelector": "f6aacfb1", - "id": 2731, + "id": 2677, "implemented": true, "kind": "function", "modifiers": [], "name": "isLocked", - "nameLocation": "3295:8:14", + "nameLocation": "3705:8:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2722, + "id": 2668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2721, + "id": 2667, "mutability": "mutable", "name": "tokenId", - "nameLocation": "3312:7:14", + "nameLocation": "3722:7:13", "nodeType": "VariableDeclaration", - "scope": 2731, - "src": "3304:15:14", + "scope": 2677, + "src": "3714:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4442,10 +5146,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2720, + "id": 2666, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3304:7:14", + "src": "3714:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4454,21 +5158,21 @@ "visibility": "internal" } ], - "src": "3303:17:14" + "src": "3713:17:13" }, "returnParameters": { - "id": 2725, + "id": 2671, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2724, + "id": 2670, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 2731, - "src": "3344:4:14", + "scope": 2677, + "src": "3754:4:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4476,10 +5180,10 @@ "typeString": "bool" }, "typeName": { - "id": 2723, + "id": 2669, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3344:4:14", + "src": "3754:4:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4488,34 +5192,34 @@ "visibility": "internal" } ], - "src": "3343:6:14" + "src": "3753:6:13" }, - "scope": 2831, - "src": "3286:103:14", + "scope": 2778, + "src": "3696:103:13", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { - "id": 2743, + "id": 2690, "nodeType": "Block", - "src": "3501:39:14", + "src": "3938:39:13", "statements": [ { "expression": { - "id": 2741, + "id": 2688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 2739, + "id": 2686, "name": "_baseTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2456, - "src": "3507:13:14", + "referencedDeclaration": 2348, + "src": "3944:13:13", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -4524,70 +5228,84 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 2740, + "id": 2687, "name": "baseTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2734, - "src": "3523:12:14", + "referencedDeclaration": 2680, + "src": "3960:12:13", "typeDescriptions": { "typeIdentifier": "t_string_calldata_ptr", "typeString": "string calldata" } }, - "src": "3507:28:14", + "src": "3944:28:13", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 2742, + "id": 2689, "nodeType": "ExpressionStatement", - "src": "3507:28:14" + "src": "3944:28:13" } ] }, "documentation": { - "id": 2732, + "id": 2678, "nodeType": "StructuredDocumentation", - "src": "3393:33:14", + "src": "3803:33:13", "text": " @dev Set token URI" }, "functionSelector": "931688cb", - "id": 2744, + "id": 2691, "implemented": true, "kind": "function", "modifiers": [ { - "id": 2737, + "arguments": [ + { + "id": 2683, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "3918:18:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2684, "kind": "modifierInvocation", "modifierName": { - "id": 2736, - "name": "onlyOwner", + "id": 2682, + "name": "onlyRole", "nodeType": "IdentifierPath", - "referencedDeclaration": 428, - "src": "3491:9:14" + "referencedDeclaration": 40, + "src": "3909:8:13" }, "nodeType": "ModifierInvocation", - "src": "3491:9:14" + "src": "3909:28:13" } ], "name": "updateBaseURI", - "nameLocation": "3438:13:14", + "nameLocation": "3848:13:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2735, + "id": 2681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2734, + "id": 2680, "mutability": "mutable", "name": "baseTokenURI", - "nameLocation": "3468:12:14", + "nameLocation": "3883:12:13", "nodeType": "VariableDeclaration", - "scope": 2744, - "src": "3452:28:14", + "scope": 2691, + "src": "3867:28:13", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -4595,10 +5313,10 @@ "typeString": "string" }, "typeName": { - "id": 2733, + "id": 2679, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3452:6:14", + "src": "3867:6:13", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4607,34 +5325,34 @@ "visibility": "internal" } ], - "src": "3451:30:14" + "src": "3861:38:13" }, "returnParameters": { - "id": 2738, + "id": 2685, "nodeType": "ParameterList", "parameters": [], - "src": "3501:0:14" + "src": "3938:0:13" }, - "scope": 2831, - "src": "3429:111:14", + "scope": 2778, + "src": "3839:138:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ - 1662 + 1557 ], "body": { - "id": 2772, + "id": 2719, "nodeType": "Block", - "src": "3735:126:14", + "src": "4172:126:13", "statements": [ { "expression": { "arguments": [ { - "id": 2760, + "id": 2707, "isConstant": false, "isLValue": false, "isPure": false, @@ -4642,28 +5360,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3749:22:14", + "src": "4186:22:13", "subExpression": { "baseExpression": { - "id": 2757, + "id": 2704, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "3750:12:14", + "referencedDeclaration": 2345, + "src": "4187:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2759, + "id": 2706, "indexExpression": { - "id": 2758, + "id": 2705, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2751, - "src": "3763:7:14", + "referencedDeclaration": 2698, + "src": "4200:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4674,7 +5392,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3750:21:14", + "src": "4187:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4687,14 +5405,14 @@ }, { "hexValue": "43616e206e6f74207472616e73666572206c6f636b656420746f6b656e", - "id": 2761, + "id": 2708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3773:31:14", + "src": "4210:31:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a49a959892d9f308239e410194012b82e46e9f3698c5e13299823030be494191", "typeString": "literal_string \"Can not transfer locked token\"" @@ -4713,7 +5431,7 @@ "typeString": "literal_string \"Can not transfer locked token\"" } ], - "id": 2756, + "id": 2703, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4721,13 +5439,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "3741:7:14", + "src": "4178:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2762, + "id": 2709, "isConstant": false, "isLValue": false, "isPure": false, @@ -4735,51 +5453,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3741:64:14", + "src": "4178:64:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2763, + "id": 2710, "nodeType": "ExpressionStatement", - "src": "3741:64:14" + "src": "4178:64:13" }, { "expression": { "arguments": [ { - "id": 2767, + "id": 2714, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2747, - "src": "3838:4:14", + "referencedDeclaration": 2694, + "src": "4275:4:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 2768, + "id": 2715, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2749, - "src": "3844:2:14", + "referencedDeclaration": 2696, + "src": "4281:2:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 2769, + "id": 2716, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2751, - "src": "3848:7:14", + "referencedDeclaration": 2698, + "src": "4285:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4802,32 +5520,32 @@ } ], "expression": { - "id": 2764, + "id": 2711, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, - "src": "3811:5:14", + "src": "4248:5:13", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_BEBadge_$2831_$", + "typeIdentifier": "t_type$_t_super$_BEBadge_$2778_$", "typeString": "type(contract super BEBadge)" } }, - "id": 2766, + "id": 2713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_beforeTokenTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1662, - "src": "3811:26:14", + "referencedDeclaration": 1557, + "src": "4248:26:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 2770, + "id": 2717, "isConstant": false, "isLValue": false, "isPure": false, @@ -4835,59 +5553,59 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3811:45:14", + "src": "4248:45:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2771, + "id": 2718, "nodeType": "ExpressionStatement", - "src": "3811:45:14" + "src": "4248:45:13" } ] }, "documentation": { - "id": 2745, + "id": 2692, "nodeType": "StructuredDocumentation", - "src": "3544:55:14", + "src": "3981:55:13", "text": " @dev See {IERC165-_beforeTokenTransfer}." }, - "id": 2773, + "id": 2720, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", - "nameLocation": "3611:20:14", + "nameLocation": "4048:20:13", "nodeType": "FunctionDefinition", "overrides": { - "id": 2754, + "id": 2701, "nodeType": "OverrideSpecifier", "overrides": [ { - "id": 2753, + "id": 2700, "name": "ERC721Enumerable", "nodeType": "IdentifierPath", - "referencedDeclaration": 1824, - "src": "3717:16:14" + "referencedDeclaration": 1719, + "src": "4154:16:13" } ], - "src": "3708:26:14" + "src": "4145:26:13" }, "parameters": { - "id": 2752, + "id": 2699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2747, + "id": 2694, "mutability": "mutable", "name": "from", - "nameLocation": "3645:4:14", + "nameLocation": "4082:4:13", "nodeType": "VariableDeclaration", - "scope": 2773, - "src": "3637:12:14", + "scope": 2720, + "src": "4074:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4895,10 +5613,10 @@ "typeString": "address" }, "typeName": { - "id": 2746, + "id": 2693, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3637:7:14", + "src": "4074:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4909,13 +5627,13 @@ }, { "constant": false, - "id": 2749, + "id": 2696, "mutability": "mutable", "name": "to", - "nameLocation": "3663:2:14", + "nameLocation": "4100:2:13", "nodeType": "VariableDeclaration", - "scope": 2773, - "src": "3655:10:14", + "scope": 2720, + "src": "4092:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4923,10 +5641,10 @@ "typeString": "address" }, "typeName": { - "id": 2748, + "id": 2695, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3655:7:14", + "src": "4092:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4937,13 +5655,13 @@ }, { "constant": false, - "id": 2751, + "id": 2698, "mutability": "mutable", "name": "tokenId", - "nameLocation": "3679:7:14", + "nameLocation": "4116:7:13", "nodeType": "VariableDeclaration", - "scope": 2773, - "src": "3671:15:14", + "scope": 2720, + "src": "4108:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4951,10 +5669,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2750, + "id": 2697, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3671:7:14", + "src": "4108:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4963,16 +5681,16 @@ "visibility": "internal" } ], - "src": "3631:59:14" + "src": "4068:59:13" }, "returnParameters": { - "id": 2755, + "id": 2702, "nodeType": "ParameterList", "parameters": [], - "src": "3735:0:14" + "src": "4172:0:13" }, - "scope": 2831, - "src": "3602:259:14", + "scope": 2778, + "src": "4039:259:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" @@ -4980,23 +5698,23 @@ { "baseFunctions": [ 62, - 1536 + 1431 ], "body": { - "id": 2789, + "id": 2736, "nodeType": "Block", - "src": "4074:54:14", + "src": "4511:54:13", "statements": [ { "expression": { "arguments": [ { - "id": 2786, + "id": 2733, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2776, - "src": "4111:11:14", + "referencedDeclaration": 2723, + "src": "4548:11:13", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5011,32 +5729,32 @@ } ], "expression": { - "id": 2784, + "id": 2731, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, - "src": "4087:5:14", + "src": "4524:5:13", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_BEBadge_$2831_$", + "typeIdentifier": "t_type$_t_super$_BEBadge_$2778_$", "typeString": "type(contract super BEBadge)" } }, - "id": 2785, + "id": 2732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "supportsInterface", "nodeType": "MemberAccess", - "referencedDeclaration": 1536, - "src": "4087:23:14", + "referencedDeclaration": 1431, + "src": "4524:23:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)" } }, - "id": 2787, + "id": 2734, "isConstant": false, "isLValue": false, "isPure": false, @@ -5044,68 +5762,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4087:36:14", + "src": "4524:36:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 2783, - "id": 2788, + "functionReturnParameters": 2730, + "id": 2735, "nodeType": "Return", - "src": "4080:43:14" + "src": "4517:43:13" } ] }, "documentation": { - "id": 2774, + "id": 2721, "nodeType": "StructuredDocumentation", - "src": "3865:52:14", + "src": "4302:52:13", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", - "id": 2790, + "id": 2737, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", - "nameLocation": "3929:17:14", + "nameLocation": "4366:17:13", "nodeType": "FunctionDefinition", "overrides": { - "id": 2780, + "id": 2727, "nodeType": "OverrideSpecifier", "overrides": [ { - "id": 2778, + "id": 2725, "name": "AccessControl", "nodeType": "IdentifierPath", "referencedDeclaration": 308, - "src": "4020:13:14" + "src": "4457:13:13" }, { - "id": 2779, + "id": 2726, "name": "ERC721Enumerable", "nodeType": "IdentifierPath", - "referencedDeclaration": 1824, - "src": "4035:16:14" + "referencedDeclaration": 1719, + "src": "4472:16:13" } ], - "src": "4011:41:14" + "src": "4448:41:13" }, "parameters": { - "id": 2777, + "id": 2724, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2776, + "id": 2723, "mutability": "mutable", "name": "interfaceId", - "nameLocation": "3959:11:14", + "nameLocation": "4396:11:13", "nodeType": "VariableDeclaration", - "scope": 2790, - "src": "3952:18:14", + "scope": 2737, + "src": "4389:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5113,10 +5831,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 2775, + "id": 2722, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "3952:6:14", + "src": "4389:6:13", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5125,21 +5843,21 @@ "visibility": "internal" } ], - "src": "3946:28:14" + "src": "4383:28:13" }, "returnParameters": { - "id": 2783, + "id": 2730, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2782, + "id": 2729, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 2790, - "src": "4066:4:14", + "scope": 2737, + "src": "4503:4:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5147,10 +5865,10 @@ "typeString": "bool" }, "typeName": { - "id": 2781, + "id": 2728, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4066:4:14", + "src": "4503:4:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5159,19 +5877,19 @@ "visibility": "internal" } ], - "src": "4065:6:14" + "src": "4502:6:13" }, - "scope": 2831, - "src": "3920:208:14", + "scope": 2778, + "src": "4357:208:13", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "body": { - "id": 2829, + "id": 2776, "nodeType": "Block", - "src": "4360:251:14", + "src": "4797:251:13", "statements": [ { "expression": { @@ -5179,12 +5897,12 @@ { "arguments": [ { - "id": 2803, + "id": 2750, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2795, - "src": "4382:7:14", + "referencedDeclaration": 2742, + "src": "4819:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5198,18 +5916,18 @@ "typeString": "uint256" } ], - "id": 2802, + "id": 2749, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "4374:7:14", + "referencedDeclaration": 820, + "src": "4811:7:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 2804, + "id": 2751, "isConstant": false, "isLValue": false, "isPure": false, @@ -5217,7 +5935,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4374:16:14", + "src": "4811:16:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5226,14 +5944,14 @@ }, { "hexValue": "546f6b656e4964206e6f7420657869737473", - "id": 2805, + "id": 2752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4392:20:14", + "src": "4829:20:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_044cb421a561a181579d6dc4883e2cc9c9cc5fde939e76877050c9e6a44cb28f", "typeString": "literal_string \"TokenId not exists\"" @@ -5252,7 +5970,7 @@ "typeString": "literal_string \"TokenId not exists\"" } ], - "id": 2801, + "id": 2748, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5260,13 +5978,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "4366:7:14", + "src": "4803:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2806, + "id": 2753, "isConstant": false, "isLValue": false, "isPure": false, @@ -5274,22 +5992,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4366:47:14", + "src": "4803:47:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2807, + "id": 2754, "nodeType": "ExpressionStatement", - "src": "4366:47:14" + "src": "4803:47:13" }, { "expression": { "arguments": [ { - "id": 2812, + "id": 2759, "isConstant": false, "isLValue": false, "isPure": false, @@ -5297,28 +6015,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4427:22:14", + "src": "4864:22:13", "subExpression": { "baseExpression": { - "id": 2809, + "id": 2756, "name": "lockedTokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2453, - "src": "4428:12:14", + "referencedDeclaration": 2345, + "src": "4865:12:13", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 2811, + "id": 2758, "indexExpression": { - "id": 2810, + "id": 2757, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2795, - "src": "4441:7:14", + "referencedDeclaration": 2742, + "src": "4878:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5329,7 +6047,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4428:21:14", + "src": "4865:21:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5342,14 +6060,14 @@ }, { "hexValue": "43616e206e6f74206275726e206c6f636b656420746f6b656e", - "id": 2813, + "id": 2760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4451:27:14", + "src": "4888:27:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b07b4c730db474841b6a65375f1a272d6de44cb31270129aa59e1d2cd13c0573", "typeString": "literal_string \"Can not burn locked token\"" @@ -5368,7 +6086,7 @@ "typeString": "literal_string \"Can not burn locked token\"" } ], - "id": 2808, + "id": 2755, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5376,13 +6094,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "4419:7:14", + "src": "4856:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2814, + "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, @@ -5390,16 +6108,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4419:60:14", + "src": "4856:60:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2815, + "id": 2762, "nodeType": "ExpressionStatement", - "src": "4419:60:14" + "src": "4856:60:13" }, { "expression": { @@ -5409,7 +6127,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2821, + "id": 2768, "isConstant": false, "isLValue": false, "isPure": false, @@ -5417,12 +6135,12 @@ "leftExpression": { "arguments": [ { - "id": 2818, + "id": 2765, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2795, - "src": "4508:7:14", + "referencedDeclaration": 2742, + "src": "4945:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5436,18 +6154,18 @@ "typeString": "uint256" } ], - "id": 2817, + "id": 2764, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "4500:7:14", + "referencedDeclaration": 527, + "src": "4937:7:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, - "id": 2819, + "id": 2766, "isConstant": false, "isLValue": false, "isPure": false, @@ -5455,7 +6173,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4500:16:14", + "src": "4937:16:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5465,18 +6183,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 2820, + "id": 2767, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2793, - "src": "4520:5:14", + "referencedDeclaration": 2740, + "src": "4957:5:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4500:25:14", + "src": "4937:25:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5484,14 +6202,14 @@ }, { "hexValue": "63757272656e742061646472657373206973206e6f74206f776e6572206f662074686973206974656d206e6f77", - "id": 2822, + "id": 2769, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4533:47:14", + "src": "4970:47:13", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1774cd4f898dccf4fae021d9bb7fddc8118540419f4e63ed0c4f60c9307baeef", "typeString": "literal_string \"current address is not owner of this item now\"" @@ -5510,7 +6228,7 @@ "typeString": "literal_string \"current address is not owner of this item now\"" } ], - "id": 2816, + "id": 2763, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5518,13 +6236,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "4485:7:14", + "src": "4922:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2823, + "id": 2770, "isConstant": false, "isLValue": false, "isPure": false, @@ -5532,27 +6250,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4485:101:14", + "src": "4922:101:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2824, + "id": 2771, "nodeType": "ExpressionStatement", - "src": "4485:101:14" + "src": "4922:101:13" }, { "expression": { "arguments": [ { - "id": 2826, + "id": 2773, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2795, - "src": "4598:7:14", + "referencedDeclaration": 2742, + "src": "5035:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5566,18 +6284,18 @@ "typeString": "uint256" } ], - "id": 2825, + "id": 2772, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1136, - "src": "4592:5:14", + "referencedDeclaration": 1031, + "src": "5029:5:13", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 2827, + "id": 2774, "isConstant": false, "isLValue": false, "isPure": false, @@ -5585,74 +6303,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4592:14:14", + "src": "5029:14:13", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2828, + "id": 2775, "nodeType": "ExpressionStatement", - "src": "4592:14:14" + "src": "5029:14:13" } ] }, "documentation": { - "id": 2791, + "id": 2738, "nodeType": "StructuredDocumentation", - "src": "4132:130:14", + "src": "4569:130:13", "text": " @dev Burns `tokenId`.\n Requirements:\n - The caller must own `tokenId` or be an approved operator." }, "functionSelector": "9dc29fac", - "id": 2830, + "id": 2777, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 2798, + "id": 2745, "name": "BURN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2466, - "src": "4349:9:14", + "referencedDeclaration": 2358, + "src": "4786:9:13", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 2799, + "id": 2746, "kind": "modifierInvocation", "modifierName": { - "id": 2797, + "id": 2744, "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "4340:8:14" + "src": "4777:8:13" }, "nodeType": "ModifierInvocation", - "src": "4340:19:14" + "src": "4777:19:13" } ], "name": "burn", - "nameLocation": "4274:4:14", + "nameLocation": "4711:4:13", "nodeType": "FunctionDefinition", "parameters": { - "id": 2796, + "id": 2743, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2793, + "id": 2740, "mutability": "mutable", "name": "owner", - "nameLocation": "4292:5:14", + "nameLocation": "4729:5:13", "nodeType": "VariableDeclaration", - "scope": 2830, - "src": "4284:13:14", + "scope": 2777, + "src": "4721:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5660,10 +6378,10 @@ "typeString": "address" }, "typeName": { - "id": 2792, + "id": 2739, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4284:7:14", + "src": "4721:7:13", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5674,13 +6392,13 @@ }, { "constant": false, - "id": 2795, + "id": 2742, "mutability": "mutable", "name": "tokenId", - "nameLocation": "4311:7:14", + "nameLocation": "4748:7:13", "nodeType": "VariableDeclaration", - "scope": 2830, - "src": "4303:15:14", + "scope": 2777, + "src": "4740:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5688,10 +6406,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2794, + "id": 2741, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4303:7:14", + "src": "4740:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5700,27 +6418,27 @@ "visibility": "internal" } ], - "src": "4278:44:14" + "src": "4715:44:13" }, "returnParameters": { - "id": 2800, + "id": 2747, "nodeType": "ParameterList", "parameters": [], - "src": "4360:0:14" + "src": "4797:0:13" }, - "scope": 2831, - "src": "4265:346:14", + "scope": 2778, + "src": "4702:346:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" } ], - "scope": 2832, - "src": "248:4365:14", + "scope": 2779, + "src": "195:4855:13", "usedErrors": [] } ], - "src": "32:4582:14" + "src": "32:5019:13" }, "compiler": { "name": "solc", @@ -5728,7 +6446,7 @@ }, "networks": {}, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-06T11:26:57.613Z", + "updatedAt": "2023-04-07T02:40:54.947Z", "devdoc": { "kind": "dev", "methods": { @@ -5747,11 +6465,8 @@ "getRoleAdmin(bytes32)": { "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." }, - "grantBurnRole(address)": { - "details": "Add factory to burn item" - }, "grantLockRole(address)": { - "details": "Add address to lock item" + "details": "Add address for lock item" }, "grantRole(bytes32,address)": { "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." @@ -5774,27 +6489,21 @@ "name()": { "details": "See {IERC721Metadata-name}." }, - "owner()": { - "details": "Returns the address of the current owner." - }, "ownerOf(uint256)": { "details": "See {IERC721-ownerOf}." }, - "removeMintFactory(address)": { - "details": "Remove factory" + "removeBurnRole(address)": { + "details": "Remove burn role to address" }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + "removeLockRole(address)": { + "details": "Remove address for lock item" + }, + "removeMintRole(address)": { + "details": "Remove mint role to address" }, "renounceRole(bytes32,address)": { "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." }, - "revokeBurnProxy(address)": { - "details": "Remove proxy" - }, - "revokeLockRole(address)": { - "details": "Remove address for lock item" - }, "revokeRole(bytes32,address)": { "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." }, @@ -5807,8 +6516,11 @@ "setApprovalForAll(address,bool)": { "details": "See {IERC721-setApprovalForAll}." }, - "setMintFactory(address)": { - "details": "Add factory to mint item" + "setBurnRole(address)": { + "details": "grant burn role to address" + }, + "setMintRole(address)": { + "details": "Grant mint role to address" }, "supportsInterface(bytes4)": { "details": "See {IERC165-supportsInterface}." @@ -5831,9 +6543,6 @@ "transferFrom(address,address,uint256)": { "details": "See {IERC721-transferFrom}." }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - }, "unlock(uint256)": { "details": "Unlock token to use blockchain or sale on marketplace" }, diff --git a/src/abis/BEMultiSigWallet.json b/src/abis/BEMultiSigWallet.json index 90b0346..4a2901a 100644 --- a/src/abis/BEMultiSigWallet.json +++ b/src/abis/BEMultiSigWallet.json @@ -937,9 +937,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDelay\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"executors\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"CallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"CallScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Confirmation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"MinDelayChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"RequirementChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDelay\",\"type\":\"uint256\"}],\"name\":\"changeDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"}],\"name\":\"changeRequirement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"confirmTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"confirmations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperationBatch\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isConfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationDone\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationReady\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"required\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"revokeConfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"schedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"scheduleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"CallExecuted(bytes32,uint256,address,uint256,bytes)\":{\"details\":\"Emitted when a call is performed as part of operation `id`.\"},\"CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)\":{\"details\":\"Emitted when a call is scheduled as part of operation `id`.\"},\"Cancelled(bytes32)\":{\"details\":\"Emitted when operation `id` is cancelled.\"},\"MinDelayChange(uint256,uint256)\":{\"details\":\"Emitted when the minimum delay for future operations is modified.\"},\"RequirementChange(uint256,uint256)\":{\"details\":\"Emitted when the number of required confimations is modified.\"}},\"kind\":\"dev\",\"methods\":{\"cancel(bytes32)\":{\"details\":\"Cancel an operation. Requirements: - the caller must have the 'proposer' role.\"},\"changeDelay(uint256)\":{\"details\":\"Changes the minimum wallet duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the wallet itself. This can only be achieved by scheduling and later executing an operation where the wallet is the target and the data is the ABI-encoded call to this function.\"},\"changeRequirement(uint256)\":{\"details\":\"Allows to change the number of required confirmations. Transaction has to be sent by wallet.\",\"params\":{\"_required\":\"Number of required confirmations.\"}},\"confirmTransaction(bytes32)\":{\"details\":\"Allows an executor to confirm a transaction. Requirements - the caller must have the 'executor' role.\"},\"constructor\":{\"details\":\"Initializes the contract with a given `minDelay`.\"},\"execute(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role.\"},\"executeBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getTimestamp(bytes32)\":{\"details\":\"Returns the timestamp at with an operation becomes ready (0 for unset operations, 1 for done operations).\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"hashOperation(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a single transaction.\"},\"hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a batch of transactions.\"},\"isOperation(bytes32)\":{\"details\":\"Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.\"},\"isOperationDone(bytes32)\":{\"details\":\"Returns whether an operation is done or not.\"},\"isOperationPending(bytes32)\":{\"details\":\"Returns whether an operation is pending or not.\"},\"isOperationReady(bytes32)\":{\"details\":\"Returns whether an operation is ready or not.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeConfirmation(bytes32)\":{\"details\":\"Allows an executor to revoke a confirmation for a transaction. Requirements - the caller must have the 'executor' role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"schedule(address,uint256,bytes,bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role.\"},\"scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"MultiSigWallet with timelocker\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/BEMultiSigWallet.sol\":\"BEMultiSigWallet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/core/BEMultiSigWallet.sol\":{\"keccak256\":\"0x50b7f526007a8c8a8b26e49031a70a3a2143538754eed060b9e862821d7c77f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de59d20b4e11e22c0f80f3dabf1cd784b0879cf9dd896823b9ee91fc9b23e9d\",\"dweb:/ipfs/Qmb7fXwDrkfSf9hkZUhHfbQyNLfdu6aKXsNTxPHnGfQHXK\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b50604051620042cf380380620042cf8339818101604052810190620000379190620007f1565b620000697f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580620002b060201b60201c565b620000bb7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620002b060201b60201c565b6200010d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620002b060201b60201c565b6200014e7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620001426200031360201b60201c565b6200031b60201b60201c565b620001807f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5306200031b60201b60201c565b60005b8251811015620001f057620001dc7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1848381518110620001c857620001c76200088b565b5b60200260200101516200031b60201b60201c565b80620001e890620008e9565b905062000183565b5060005b815181101562000261576200024d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638383815181106200023957620002386200088b565b5b60200260200101516200031b60201b60201c565b806200025990620008e9565b9050620001f4565b50826004819055507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560006004546040516200029f92919062000995565b60405180910390a1505050620009c2565b6000620002c3836200033160201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b6200032d82826200035060201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200036782826200039860201b620016201760201c565b6200039381600160008581526020019081526020016000206200048960201b620017001790919060201c565b505050565b620003aa8282620004c160201b60201c565b6200048557600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a6200031360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620004b9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200052b60201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200053f8383620005a560201b60201c565b6200059a5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200059f565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620005f181620005dc565b8114620005fd57600080fd5b50565b6000815190506200061181620005e6565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000667826200061c565b810181811067ffffffffffffffff821117156200068957620006886200062d565b5b80604052505050565b60006200069e620005c8565b9050620006ac82826200065c565b919050565b600067ffffffffffffffff821115620006cf57620006ce6200062d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200071282620006e5565b9050919050565b620007248162000705565b81146200073057600080fd5b50565b600081519050620007448162000719565b92915050565b6000620007616200075b84620006b1565b62000692565b90508083825260208201905060208402830185811115620007875762000786620006e0565b5b835b81811015620007b457806200079f888262000733565b84526020840193505060208101905062000789565b5050509392505050565b600082601f830112620007d657620007d562000617565b5b8151620007e88482602086016200074a565b91505092915050565b6000806000606084860312156200080d576200080c620005d2565b5b60006200081d8682870162000600565b935050602084015167ffffffffffffffff811115620008415762000840620005d7565b5b6200084f86828701620007be565b925050604084015167ffffffffffffffff811115620008735762000872620005d7565b5b6200088186828701620007be565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008f682620005dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200092c576200092b620008ba565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006200096c62000966620009608462000937565b62000941565b620005dc565b9050919050565b6200097e816200094b565b82525050565b6200098f81620005dc565b82525050565b6000604082019050620009ac600083018562000973565b620009bb602083018462000984565b9392505050565b6138fd80620009d26000396000f3fe6080604052600436106101e75760003560e01c80638065657f11610102578063c4d252f511610095578063d547741f11610064578063d547741f14610784578063dc8452cd146107ad578063e38335e5146107d8578063f3fc536d146107f4576101ee565b8063c4d252f5146106b6578063c63c4e9b146106df578063ca15c8731461070a578063d45c443514610747576101ee565b806391d14854116100d157806391d14854146105e8578063a217fddf14610625578063b1c5f42714610650578063ba51a6df1461068d576101ee565b80638065657f1461051a5780638f2a0bb0146105575780638f61f4f5146105805780639010d07c146105ab576101ee565b80632ab0f5291161017a5780635037ec62116101495780635037ec621461044e578063584b153e146104775780636486aa51146104b457806379716e43146104f1576101ee565b80632ab0f529146103825780632f2ff15d146103bf57806331d50750146103e857806336568abe14610425576101ee565b80630d3cf6fc116101b65780630d3cf6fc146102c1578063134008d3146102ec57806313bc9f2014610308578063248a9ca314610345576101ee565b806301d5062a146101f357806301ffc9a71461021c57806307bd0265146102595780630c4ecab414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906122b3565b61081d565b005b34801561022857600080fd5b50610243600480360381019061023e91906123ba565b6108ba565b6040516102509190612402565b60405180910390f35b34801561026557600080fd5b5061026e610934565b60405161027b919061242c565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612447565b610958565b6040516102b89190612402565b60405180910390f35b3480156102cd57600080fd5b506102d6610987565b6040516102e3919061242c565b60405180910390f35b61030660048036038101906103019190612487565b6109ab565b005b34801561031457600080fd5b5061032f600480360381019061032a9190612521565b610a2b565b60405161033c9190612402565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612521565b610a51565b604051610379919061242c565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612521565b610a70565b6040516103b69190612402565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612447565b610a85565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190612521565b610aae565b60405161041c9190612402565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612447565b610ac2565b005b34801561045a57600080fd5b506104756004803603810190610470919061254e565b610b45565b005b34801561048357600080fd5b5061049e60048036038101906104999190612521565b610bf8565b6040516104ab9190612402565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612521565b610c0d565b6040516104e89190612402565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612521565b610d1a565b005b34801561052657600080fd5b50610541600480360381019061053c9190612487565b610e5f565b60405161054e919061242c565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061267d565b610e9e565b005b34801561058c57600080fd5b50610595611051565b6040516105a2919061242c565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd919061276c565b611075565b6040516105df91906127bb565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612447565b6110a4565b60405161061c9190612402565b60405180910390f35b34801561063157600080fd5b5061063a61110e565b604051610647919061242c565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906127d6565b611115565b604051610684919061242c565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af919061254e565b61115a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190612521565b61120d565b005b3480156106eb57600080fd5b506106f46112cf565b60405161070191906128c1565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612521565b6112d5565b60405161073e91906128c1565b60405180910390f35b34801561075357600080fd5b5061076e60048036038101906107699190612521565b6112f9565b60405161077b91906128c1565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612447565b611316565b005b3480156107b957600080fd5b506107c261133f565b6040516107cf91906128c1565b60405180910390f35b6107f260048036038101906107ed91906127d6565b611345565b005b34801561080057600080fd5b5061081b60048036038101906108169190612521565b6114db565b005b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161084f8161084a611730565b611738565b600061085f898989898989610e5f565b905061086b81846117d5565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516108a79695949392919061293a565b60405180910390a3505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092d575061092c8261188a565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636109d78160006110a4565b6109ed576109ec816109e7611730565b611738565b5b60006109fd888888888888610e5f565b9050610a098185611904565b610a188160008a8a8a8a6119ed565b610a2181611ae5565b5050505050505050565b600080610a37836112f9565b9050600181118015610a495750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b60006001610a7d836112f9565b149050919050565b610a8e82610a51565b610a9f81610a9a611730565b611738565b610aa98383611b49565b505050565b600080610aba836112f9565b119050919050565b610aca611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612a19565b60405180910390fd5b610b418282611b7d565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612aab565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560045482604051610be6929190612acb565b60405180910390a18060048190555050565b60006001610c05836112f9565b119050919050565b600080600090506000610c3f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636112d5565b905060005b81811015610d1157600360008681526020019081526020016000206000610c8b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6384611075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ce857600183610ce59190612b23565b92505b600554831415610cfe5760019350505050610d15565b8080610d0990612b79565b915050610c44565b5050505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610d468160006110a4565b610d5c57610d5b81610d56611730565b611738565b5b610d6582610bf8565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612c34565b60405180910390fd5b60016003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda83604051610e53919061242c565b60405180910390a25050565b6000868686868686604051602001610e7c96959493929190612c54565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610ed081610ecb611730565b611738565b878790508a8a905014610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612d22565b60405180910390fd5b858590508a8a905014610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790612d22565b60405180910390fd5b6000610f728b8b8b8b8b8b8b8b611115565b9050610f7e81846117d5565b60005b8b8b90508110156110435780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610fc257610fc1612d42565b5b9050602002016020810190610fd79190612d71565b8d8d86818110610fea57610fe9612d42565b5b905060200201358c8c8781811061100457611003612d42565b5b90506020028101906110169190612dad565b8c8b60405161102a9695949392919061293a565b60405180910390a38061103c90612b79565b9050610f81565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600061109c8260016000868152602001908152602001600020611bb190919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b600088888888888888886040516020016111369897969594939291906130a9565b60405160208183030381529060405280519060200120905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612aab565b60405180910390fd5b7fdd7c0dd2de894f9cccfd27f17f4f7390a796fb28e4b1d7317e0e758fff8e672e600554826040516111fb929190612acb565b60405180910390a18060058190555050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161123f8161123a611730565b611738565b61124882610bf8565b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90613189565b60405180910390fd5b6002600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b60045481565b60006112f260016000848152602001908152602001600020611bcb565b9050919050565b600060026000838152602001908152602001600020549050919050565b61131f82610a51565b6113308161132b611730565b611738565b61133a8383611b7d565b505050565b60055481565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636113718160006110a4565b6113875761138681611381611730565b611738565b5b8686905089899050146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690612d22565b60405180910390fd5b848490508989905014611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612d22565b60405180910390fd5b60006114298a8a8a8a8a8a8a8a611115565b90506114358185611904565b60005b8a8a90508110156114c5576114b482828d8d8581811061145b5761145a612d42565b5b90506020020160208101906114709190612d71565b8c8c8681811061148357611482612d42565b5b905060200201358b8b8781811061149d5761149c612d42565b5b90506020028101906114af9190612dad565b6119ed565b806114be90612b79565b9050611438565b506114cf81611ae5565b50505050505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636115078160006110a4565b61151d5761151c81611517611730565b611738565b5b61152682610bf8565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90612c34565b60405180910390fd5b60006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f9aec1a62b961581534d37fd62d35e3648f05a17b1f986eda1d1a9d97b147840683604051611614919061242c565b60405180910390a25050565b61162a82826110a4565b6116fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a1611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611728836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611be0565b905092915050565b600033905090565b61174282826110a4565b6117d1576117678173ffffffffffffffffffffffffffffffffffffffff166014611c50565b6117758360001c6020611c50565b6040516020016117869291906132bb565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8919061332e565b60405180910390fd5b5050565b6117de82610aae565b1561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906133c2565b60405180910390fd5b600454811015611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90613454565b60405180910390fd5b804261186f9190612b23565b60026000848152602001908152602001600020819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fd57506118fc82611e8c565b5b9050919050565b61190d82610a2b565b61194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906134e6565b60405180910390fd5b61195582610c0d565b611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613578565b60405180910390fd5b6000801b8114806119aa57506119a981610a70565b5b6119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061360a565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611a1792919061365a565b60006040518083038185875af1925050503d8060008114611a54576040519150601f19603f3d011682016040523d82523d6000602084013e611a59565b606091505b5050905080611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a94906136e5565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051611ad49493929190613705565b60405180910390a350505050505050565b611aee81610a2b565b611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906134e6565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b611b538282611620565b611b78816001600085815260200190815260200160002061170090919063ffffffff16565b505050565b611b878282611ef6565b611bac8160016000858152602001908152602001600020611fd790919063ffffffff16565b505050565b6000611bc08360000183612007565b60001c905092915050565b6000611bd982600001612032565b9050919050565b6000611bec8383612043565b611c45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611c4a565b600090505b92915050565b606060006002836002611c639190613745565b611c6d9190612b23565b67ffffffffffffffff811115611c8657611c8561379f565b5b6040519080825280601f01601f191660200182016040528015611cb85781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611cf057611cef612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d5457611d53612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d949190613745565b611d9e9190612b23565b90505b6001811115611e3e577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611de057611ddf612d42565b5b1a60f81b828281518110611df757611df6612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e37906137ce565b9050611da1565b5060008414611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613844565b60405180910390fd5b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f0082826110a4565b15611fd357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f78611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611fff836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612066565b905092915050565b600082600001828154811061201f5761201e612d42565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461216e5760006001826120989190613864565b90506000600186600001805490506120b09190613864565b905081811461211f5760008660000182815481106120d1576120d0612d42565b5b90600052602060002001549050808760000184815481106120f5576120f4612d42565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061213357612132613898565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612174565b60009150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121af82612184565b9050919050565b6121bf816121a4565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b6000819050919050565b6121f5816121e2565b811461220057600080fd5b50565b600081359050612212816121ec565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261223d5761223c612218565b5b8235905067ffffffffffffffff81111561225a5761225961221d565b5b60208301915083600182028301111561227657612275612222565b5b9250929050565b6000819050919050565b6122908161227d565b811461229b57600080fd5b50565b6000813590506122ad81612287565b92915050565b600080600080600080600060c0888a0312156122d2576122d161217a565b5b60006122e08a828b016121cd565b97505060206122f18a828b01612203565b965050604088013567ffffffffffffffff8111156123125761231161217f565b5b61231e8a828b01612227565b955095505060606123318a828b0161229e565b93505060806123428a828b0161229e565b92505060a06123538a828b01612203565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61239781612362565b81146123a257600080fd5b50565b6000813590506123b48161238e565b92915050565b6000602082840312156123d0576123cf61217a565b5b60006123de848285016123a5565b91505092915050565b60008115159050919050565b6123fc816123e7565b82525050565b600060208201905061241760008301846123f3565b92915050565b6124268161227d565b82525050565b6000602082019050612441600083018461241d565b92915050565b6000806040838503121561245e5761245d61217a565b5b600061246c8582860161229e565b925050602061247d858286016121cd565b9150509250929050565b60008060008060008060a087890312156124a4576124a361217a565b5b60006124b289828a016121cd565b96505060206124c389828a01612203565b955050604087013567ffffffffffffffff8111156124e4576124e361217f565b5b6124f089828a01612227565b9450945050606061250389828a0161229e565b925050608061251489828a0161229e565b9150509295509295509295565b6000602082840312156125375761253661217a565b5b60006125458482850161229e565b91505092915050565b6000602082840312156125645761256361217a565b5b600061257284828501612203565b91505092915050565b60008083601f84011261259157612590612218565b5b8235905067ffffffffffffffff8111156125ae576125ad61221d565b5b6020830191508360208202830111156125ca576125c9612222565b5b9250929050565b60008083601f8401126125e7576125e6612218565b5b8235905067ffffffffffffffff8111156126045761260361221d565b5b6020830191508360208202830111156126205761261f612222565b5b9250929050565b60008083601f84011261263d5761263c612218565b5b8235905067ffffffffffffffff81111561265a5761265961221d565b5b60208301915083602082028301111561267657612675612222565b5b9250929050565b600080600080600080600080600060c08a8c03121561269f5761269e61217a565b5b60008a013567ffffffffffffffff8111156126bd576126bc61217f565b5b6126c98c828d0161257b565b995099505060208a013567ffffffffffffffff8111156126ec576126eb61217f565b5b6126f88c828d016125d1565b975097505060408a013567ffffffffffffffff81111561271b5761271a61217f565b5b6127278c828d01612627565b9550955050606061273a8c828d0161229e565b935050608061274b8c828d0161229e565b92505060a061275c8c828d01612203565b9150509295985092959850929598565b600080604083850312156127835761278261217a565b5b60006127918582860161229e565b92505060206127a285828601612203565b9150509250929050565b6127b5816121a4565b82525050565b60006020820190506127d060008301846127ac565b92915050565b60008060008060008060008060a0898b0312156127f6576127f561217a565b5b600089013567ffffffffffffffff8111156128145761281361217f565b5b6128208b828c0161257b565b9850985050602089013567ffffffffffffffff8111156128435761284261217f565b5b61284f8b828c016125d1565b9650965050604089013567ffffffffffffffff8111156128725761287161217f565b5b61287e8b828c01612627565b945094505060606128918b828c0161229e565b92505060806128a28b828c0161229e565b9150509295985092959890939650565b6128bb816121e2565b82525050565b60006020820190506128d660008301846128b2565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061291983856128dc565b93506129268385846128ed565b61292f836128fc565b840190509392505050565b600060a08201905061294f60008301896127ac565b61295c60208301886128b2565b818103604083015261296f81868861290d565b905061297e606083018561241d565b61298b60808301846128b2565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612a03602f83612996565b9150612a0e826129a7565b604082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b7f42454d756c746953696757616c6c65743a2063616c6c6572206d75737420626560008201527f2077616c6c657400000000000000000000000000000000000000000000000000602082015250565b6000612a95602783612996565b9150612aa082612a39565b604082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b6000604082019050612ae060008301856128b2565b612aed60208301846128b2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b2e826121e2565b9150612b39836121e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b6e57612b6d612af4565b5b828201905092915050565b6000612b84826121e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bb757612bb6612af4565b5b600182019050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f6578697374206f722066696e6973686564000000000000000000000000000000602082015250565b6000612c1e603183612996565b9150612c2982612bc2565b604082019050919050565b60006020820190508181036000830152612c4d81612c11565b9050919050565b600060a082019050612c6960008301896127ac565b612c7660208301886128b2565b8181036040830152612c8981868861290d565b9050612c98606083018561241d565b612ca5608083018461241d565b979650505050505050565b7f42454d756c746953696757616c6c65743a206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d0c602183612996565b9150612d1782612cb0565b604082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612d8757612d8661217a565b5b6000612d95848285016121cd565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612dca57612dc9612d9e565b5b80840192508235915067ffffffffffffffff821115612dec57612deb612da3565b5b602083019250600182023603831315612e0857612e07612da8565b5b509250929050565b600082825260208201905092915050565b6000819050919050565b612e34816121a4565b82525050565b6000612e468383612e2b565b60208301905092915050565b6000612e6160208401846121cd565b905092915050565b6000602082019050919050565b6000612e828385612e10565b9350612e8d82612e21565b8060005b85811015612ec657612ea38284612e52565b612ead8882612e3a565b9750612eb883612e69565b925050600181019050612e91565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612ef58385612ed3565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2857612f27612ee4565b5b602083029250612f398385846128ed565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b6000612f7d8385612f60565b9350612f8a8385846128ed565b612f93836128fc565b840190509392505050565b6000612fab848484612f71565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612fe057612fdf612fbe565b5b83810192508235915060208301925067ffffffffffffffff82111561300857613007612fb4565b5b60018202360384131561301e5761301d612fb9565b5b509250929050565b6000602082019050919050565b600061303f8385612f45565b93508360208402850161305184612f56565b8060005b8781101561309757848403895261306c8284612fc3565b613077868284612f9e565b955061308284613026565b935060208b019a505050600181019050613055565b50829750879450505050509392505050565b600060a08201905081810360008301526130c4818a8c612e76565b905081810360208301526130d981888a612ee9565b905081810360408301526130ee818688613033565b90506130fd606083018561241d565b61310a608083018461241d565b9998505050505050505050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e2063616e6e60008201527f6f742062652063616e63656c6c65640000000000000000000000000000000000602082015250565b6000613173602f83612996565b915061317e82613117565b604082019050919050565b600060208201905081810360008301526131a281613166565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006131ea6017836131a9565b91506131f5826131b4565b601782019050919050565b600081519050919050565b60005b8381101561322957808201518184015260208101905061320e565b83811115613238576000848401525b50505050565b600061324982613200565b61325381856131a9565b935061326381856020860161320b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132a56011836131a9565b91506132b08261326f565b601182019050919050565b60006132c6826131dd565b91506132d2828561323e565b91506132dd82613298565b91506132e9828461323e565b91508190509392505050565b600061330082613200565b61330a8185612996565b935061331a81856020860161320b565b613323816128fc565b840191505092915050565b6000602082019050818103600083015261334881846132f5565b905092915050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e20616c726560008201527f616479207363686564756c656400000000000000000000000000000000000000602082015250565b60006133ac602d83612996565b91506133b782613350565b604082019050919050565b600060208201905081810360008301526133db8161339f565b9050919050565b7f42454d756c746953696757616c6c65743a20696e73756666696369656e74206460008201527f656c617900000000000000000000000000000000000000000000000000000000602082015250565b600061343e602483612996565b9150613449826133e2565b604082019050919050565b6000602082019050818103600083015261346d81613431565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206973206e60008201527f6f74207265616479000000000000000000000000000000000000000000000000602082015250565b60006134d0602883612996565b91506134db82613474565b604082019050919050565b600060208201905081810360008301526134ff816134c3565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f726561636820726571756972656420636f6e6669726d6174696f6e7300000000602082015250565b6000613562603c83612996565b915061356d82613506565b604082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b7f42454d756c746953696757616c6c65743a206d697373696e6720646570656e6460008201527f656e637900000000000000000000000000000000000000000000000000000000602082015250565b60006135f4602483612996565b91506135ff82613598565b604082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600081905092915050565b6000613641838561362a565b935061364e8385846128ed565b82840190509392505050565b6000613667828486613635565b91508190509392505050565b7f42454d756c746953696757616c6c65743a20756e6465726c79696e672074726160008201527f6e73616374696f6e207265766572746564000000000000000000000000000000602082015250565b60006136cf603183612996565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b600060608201905061371a60008301876127ac565b61372760208301866128b2565b818103604083015261373a81848661290d565b905095945050505050565b6000613750826121e2565b915061375b836121e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561379457613793612af4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006137d9826121e2565b915060008214156137ed576137ec612af4565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061382e602083612996565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f826121e2565b915061387a836121e2565b92508282101561388d5761388c612af4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207304aa08116423e9f4da95c2f2a85a29d0bc03e1ffd7cf17b3b749187ee7d92364736f6c634300080a0033", - "deployedBytecode": "0x6080604052600436106101e75760003560e01c80638065657f11610102578063c4d252f511610095578063d547741f11610064578063d547741f14610784578063dc8452cd146107ad578063e38335e5146107d8578063f3fc536d146107f4576101ee565b8063c4d252f5146106b6578063c63c4e9b146106df578063ca15c8731461070a578063d45c443514610747576101ee565b806391d14854116100d157806391d14854146105e8578063a217fddf14610625578063b1c5f42714610650578063ba51a6df1461068d576101ee565b80638065657f1461051a5780638f2a0bb0146105575780638f61f4f5146105805780639010d07c146105ab576101ee565b80632ab0f5291161017a5780635037ec62116101495780635037ec621461044e578063584b153e146104775780636486aa51146104b457806379716e43146104f1576101ee565b80632ab0f529146103825780632f2ff15d146103bf57806331d50750146103e857806336568abe14610425576101ee565b80630d3cf6fc116101b65780630d3cf6fc146102c1578063134008d3146102ec57806313bc9f2014610308578063248a9ca314610345576101ee565b806301d5062a146101f357806301ffc9a71461021c57806307bd0265146102595780630c4ecab414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906122b3565b61081d565b005b34801561022857600080fd5b50610243600480360381019061023e91906123ba565b6108ba565b6040516102509190612402565b60405180910390f35b34801561026557600080fd5b5061026e610934565b60405161027b919061242c565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612447565b610958565b6040516102b89190612402565b60405180910390f35b3480156102cd57600080fd5b506102d6610987565b6040516102e3919061242c565b60405180910390f35b61030660048036038101906103019190612487565b6109ab565b005b34801561031457600080fd5b5061032f600480360381019061032a9190612521565b610a2b565b60405161033c9190612402565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612521565b610a51565b604051610379919061242c565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612521565b610a70565b6040516103b69190612402565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612447565b610a85565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190612521565b610aae565b60405161041c9190612402565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612447565b610ac2565b005b34801561045a57600080fd5b506104756004803603810190610470919061254e565b610b45565b005b34801561048357600080fd5b5061049e60048036038101906104999190612521565b610bf8565b6040516104ab9190612402565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612521565b610c0d565b6040516104e89190612402565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612521565b610d1a565b005b34801561052657600080fd5b50610541600480360381019061053c9190612487565b610e5f565b60405161054e919061242c565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061267d565b610e9e565b005b34801561058c57600080fd5b50610595611051565b6040516105a2919061242c565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd919061276c565b611075565b6040516105df91906127bb565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612447565b6110a4565b60405161061c9190612402565b60405180910390f35b34801561063157600080fd5b5061063a61110e565b604051610647919061242c565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906127d6565b611115565b604051610684919061242c565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af919061254e565b61115a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190612521565b61120d565b005b3480156106eb57600080fd5b506106f46112cf565b60405161070191906128c1565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612521565b6112d5565b60405161073e91906128c1565b60405180910390f35b34801561075357600080fd5b5061076e60048036038101906107699190612521565b6112f9565b60405161077b91906128c1565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612447565b611316565b005b3480156107b957600080fd5b506107c261133f565b6040516107cf91906128c1565b60405180910390f35b6107f260048036038101906107ed91906127d6565b611345565b005b34801561080057600080fd5b5061081b60048036038101906108169190612521565b6114db565b005b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161084f8161084a611730565b611738565b600061085f898989898989610e5f565b905061086b81846117d5565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516108a79695949392919061293a565b60405180910390a3505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092d575061092c8261188a565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636109d78160006110a4565b6109ed576109ec816109e7611730565b611738565b5b60006109fd888888888888610e5f565b9050610a098185611904565b610a188160008a8a8a8a6119ed565b610a2181611ae5565b5050505050505050565b600080610a37836112f9565b9050600181118015610a495750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b60006001610a7d836112f9565b149050919050565b610a8e82610a51565b610a9f81610a9a611730565b611738565b610aa98383611b49565b505050565b600080610aba836112f9565b119050919050565b610aca611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612a19565b60405180910390fd5b610b418282611b7d565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612aab565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560045482604051610be6929190612acb565b60405180910390a18060048190555050565b60006001610c05836112f9565b119050919050565b600080600090506000610c3f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636112d5565b905060005b81811015610d1157600360008681526020019081526020016000206000610c8b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6384611075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ce857600183610ce59190612b23565b92505b600554831415610cfe5760019350505050610d15565b8080610d0990612b79565b915050610c44565b5050505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610d468160006110a4565b610d5c57610d5b81610d56611730565b611738565b5b610d6582610bf8565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612c34565b60405180910390fd5b60016003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda83604051610e53919061242c565b60405180910390a25050565b6000868686868686604051602001610e7c96959493929190612c54565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610ed081610ecb611730565b611738565b878790508a8a905014610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612d22565b60405180910390fd5b858590508a8a905014610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790612d22565b60405180910390fd5b6000610f728b8b8b8b8b8b8b8b611115565b9050610f7e81846117d5565b60005b8b8b90508110156110435780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610fc257610fc1612d42565b5b9050602002016020810190610fd79190612d71565b8d8d86818110610fea57610fe9612d42565b5b905060200201358c8c8781811061100457611003612d42565b5b90506020028101906110169190612dad565b8c8b60405161102a9695949392919061293a565b60405180910390a38061103c90612b79565b9050610f81565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600061109c8260016000868152602001908152602001600020611bb190919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b600088888888888888886040516020016111369897969594939291906130a9565b60405160208183030381529060405280519060200120905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612aab565b60405180910390fd5b7fdd7c0dd2de894f9cccfd27f17f4f7390a796fb28e4b1d7317e0e758fff8e672e600554826040516111fb929190612acb565b60405180910390a18060058190555050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161123f8161123a611730565b611738565b61124882610bf8565b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90613189565b60405180910390fd5b6002600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b60045481565b60006112f260016000848152602001908152602001600020611bcb565b9050919050565b600060026000838152602001908152602001600020549050919050565b61131f82610a51565b6113308161132b611730565b611738565b61133a8383611b7d565b505050565b60055481565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636113718160006110a4565b6113875761138681611381611730565b611738565b5b8686905089899050146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690612d22565b60405180910390fd5b848490508989905014611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612d22565b60405180910390fd5b60006114298a8a8a8a8a8a8a8a611115565b90506114358185611904565b60005b8a8a90508110156114c5576114b482828d8d8581811061145b5761145a612d42565b5b90506020020160208101906114709190612d71565b8c8c8681811061148357611482612d42565b5b905060200201358b8b8781811061149d5761149c612d42565b5b90506020028101906114af9190612dad565b6119ed565b806114be90612b79565b9050611438565b506114cf81611ae5565b50505050505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636115078160006110a4565b61151d5761151c81611517611730565b611738565b5b61152682610bf8565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90612c34565b60405180910390fd5b60006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f9aec1a62b961581534d37fd62d35e3648f05a17b1f986eda1d1a9d97b147840683604051611614919061242c565b60405180910390a25050565b61162a82826110a4565b6116fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a1611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611728836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611be0565b905092915050565b600033905090565b61174282826110a4565b6117d1576117678173ffffffffffffffffffffffffffffffffffffffff166014611c50565b6117758360001c6020611c50565b6040516020016117869291906132bb565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8919061332e565b60405180910390fd5b5050565b6117de82610aae565b1561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906133c2565b60405180910390fd5b600454811015611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90613454565b60405180910390fd5b804261186f9190612b23565b60026000848152602001908152602001600020819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fd57506118fc82611e8c565b5b9050919050565b61190d82610a2b565b61194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906134e6565b60405180910390fd5b61195582610c0d565b611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613578565b60405180910390fd5b6000801b8114806119aa57506119a981610a70565b5b6119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061360a565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611a1792919061365a565b60006040518083038185875af1925050503d8060008114611a54576040519150601f19603f3d011682016040523d82523d6000602084013e611a59565b606091505b5050905080611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a94906136e5565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051611ad49493929190613705565b60405180910390a350505050505050565b611aee81610a2b565b611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906134e6565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b611b538282611620565b611b78816001600085815260200190815260200160002061170090919063ffffffff16565b505050565b611b878282611ef6565b611bac8160016000858152602001908152602001600020611fd790919063ffffffff16565b505050565b6000611bc08360000183612007565b60001c905092915050565b6000611bd982600001612032565b9050919050565b6000611bec8383612043565b611c45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611c4a565b600090505b92915050565b606060006002836002611c639190613745565b611c6d9190612b23565b67ffffffffffffffff811115611c8657611c8561379f565b5b6040519080825280601f01601f191660200182016040528015611cb85781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611cf057611cef612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d5457611d53612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d949190613745565b611d9e9190612b23565b90505b6001811115611e3e577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611de057611ddf612d42565b5b1a60f81b828281518110611df757611df6612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e37906137ce565b9050611da1565b5060008414611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613844565b60405180910390fd5b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f0082826110a4565b15611fd357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f78611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611fff836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612066565b905092915050565b600082600001828154811061201f5761201e612d42565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461216e5760006001826120989190613864565b90506000600186600001805490506120b09190613864565b905081811461211f5760008660000182815481106120d1576120d0612d42565b5b90600052602060002001549050808760000184815481106120f5576120f4612d42565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061213357612132613898565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612174565b60009150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121af82612184565b9050919050565b6121bf816121a4565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b6000819050919050565b6121f5816121e2565b811461220057600080fd5b50565b600081359050612212816121ec565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261223d5761223c612218565b5b8235905067ffffffffffffffff81111561225a5761225961221d565b5b60208301915083600182028301111561227657612275612222565b5b9250929050565b6000819050919050565b6122908161227d565b811461229b57600080fd5b50565b6000813590506122ad81612287565b92915050565b600080600080600080600060c0888a0312156122d2576122d161217a565b5b60006122e08a828b016121cd565b97505060206122f18a828b01612203565b965050604088013567ffffffffffffffff8111156123125761231161217f565b5b61231e8a828b01612227565b955095505060606123318a828b0161229e565b93505060806123428a828b0161229e565b92505060a06123538a828b01612203565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61239781612362565b81146123a257600080fd5b50565b6000813590506123b48161238e565b92915050565b6000602082840312156123d0576123cf61217a565b5b60006123de848285016123a5565b91505092915050565b60008115159050919050565b6123fc816123e7565b82525050565b600060208201905061241760008301846123f3565b92915050565b6124268161227d565b82525050565b6000602082019050612441600083018461241d565b92915050565b6000806040838503121561245e5761245d61217a565b5b600061246c8582860161229e565b925050602061247d858286016121cd565b9150509250929050565b60008060008060008060a087890312156124a4576124a361217a565b5b60006124b289828a016121cd565b96505060206124c389828a01612203565b955050604087013567ffffffffffffffff8111156124e4576124e361217f565b5b6124f089828a01612227565b9450945050606061250389828a0161229e565b925050608061251489828a0161229e565b9150509295509295509295565b6000602082840312156125375761253661217a565b5b60006125458482850161229e565b91505092915050565b6000602082840312156125645761256361217a565b5b600061257284828501612203565b91505092915050565b60008083601f84011261259157612590612218565b5b8235905067ffffffffffffffff8111156125ae576125ad61221d565b5b6020830191508360208202830111156125ca576125c9612222565b5b9250929050565b60008083601f8401126125e7576125e6612218565b5b8235905067ffffffffffffffff8111156126045761260361221d565b5b6020830191508360208202830111156126205761261f612222565b5b9250929050565b60008083601f84011261263d5761263c612218565b5b8235905067ffffffffffffffff81111561265a5761265961221d565b5b60208301915083602082028301111561267657612675612222565b5b9250929050565b600080600080600080600080600060c08a8c03121561269f5761269e61217a565b5b60008a013567ffffffffffffffff8111156126bd576126bc61217f565b5b6126c98c828d0161257b565b995099505060208a013567ffffffffffffffff8111156126ec576126eb61217f565b5b6126f88c828d016125d1565b975097505060408a013567ffffffffffffffff81111561271b5761271a61217f565b5b6127278c828d01612627565b9550955050606061273a8c828d0161229e565b935050608061274b8c828d0161229e565b92505060a061275c8c828d01612203565b9150509295985092959850929598565b600080604083850312156127835761278261217a565b5b60006127918582860161229e565b92505060206127a285828601612203565b9150509250929050565b6127b5816121a4565b82525050565b60006020820190506127d060008301846127ac565b92915050565b60008060008060008060008060a0898b0312156127f6576127f561217a565b5b600089013567ffffffffffffffff8111156128145761281361217f565b5b6128208b828c0161257b565b9850985050602089013567ffffffffffffffff8111156128435761284261217f565b5b61284f8b828c016125d1565b9650965050604089013567ffffffffffffffff8111156128725761287161217f565b5b61287e8b828c01612627565b945094505060606128918b828c0161229e565b92505060806128a28b828c0161229e565b9150509295985092959890939650565b6128bb816121e2565b82525050565b60006020820190506128d660008301846128b2565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061291983856128dc565b93506129268385846128ed565b61292f836128fc565b840190509392505050565b600060a08201905061294f60008301896127ac565b61295c60208301886128b2565b818103604083015261296f81868861290d565b905061297e606083018561241d565b61298b60808301846128b2565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612a03602f83612996565b9150612a0e826129a7565b604082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b7f42454d756c746953696757616c6c65743a2063616c6c6572206d75737420626560008201527f2077616c6c657400000000000000000000000000000000000000000000000000602082015250565b6000612a95602783612996565b9150612aa082612a39565b604082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b6000604082019050612ae060008301856128b2565b612aed60208301846128b2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b2e826121e2565b9150612b39836121e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b6e57612b6d612af4565b5b828201905092915050565b6000612b84826121e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bb757612bb6612af4565b5b600182019050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f6578697374206f722066696e6973686564000000000000000000000000000000602082015250565b6000612c1e603183612996565b9150612c2982612bc2565b604082019050919050565b60006020820190508181036000830152612c4d81612c11565b9050919050565b600060a082019050612c6960008301896127ac565b612c7660208301886128b2565b8181036040830152612c8981868861290d565b9050612c98606083018561241d565b612ca5608083018461241d565b979650505050505050565b7f42454d756c746953696757616c6c65743a206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d0c602183612996565b9150612d1782612cb0565b604082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612d8757612d8661217a565b5b6000612d95848285016121cd565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612dca57612dc9612d9e565b5b80840192508235915067ffffffffffffffff821115612dec57612deb612da3565b5b602083019250600182023603831315612e0857612e07612da8565b5b509250929050565b600082825260208201905092915050565b6000819050919050565b612e34816121a4565b82525050565b6000612e468383612e2b565b60208301905092915050565b6000612e6160208401846121cd565b905092915050565b6000602082019050919050565b6000612e828385612e10565b9350612e8d82612e21565b8060005b85811015612ec657612ea38284612e52565b612ead8882612e3a565b9750612eb883612e69565b925050600181019050612e91565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612ef58385612ed3565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2857612f27612ee4565b5b602083029250612f398385846128ed565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b6000612f7d8385612f60565b9350612f8a8385846128ed565b612f93836128fc565b840190509392505050565b6000612fab848484612f71565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612fe057612fdf612fbe565b5b83810192508235915060208301925067ffffffffffffffff82111561300857613007612fb4565b5b60018202360384131561301e5761301d612fb9565b5b509250929050565b6000602082019050919050565b600061303f8385612f45565b93508360208402850161305184612f56565b8060005b8781101561309757848403895261306c8284612fc3565b613077868284612f9e565b955061308284613026565b935060208b019a505050600181019050613055565b50829750879450505050509392505050565b600060a08201905081810360008301526130c4818a8c612e76565b905081810360208301526130d981888a612ee9565b905081810360408301526130ee818688613033565b90506130fd606083018561241d565b61310a608083018461241d565b9998505050505050505050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e2063616e6e60008201527f6f742062652063616e63656c6c65640000000000000000000000000000000000602082015250565b6000613173602f83612996565b915061317e82613117565b604082019050919050565b600060208201905081810360008301526131a281613166565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006131ea6017836131a9565b91506131f5826131b4565b601782019050919050565b600081519050919050565b60005b8381101561322957808201518184015260208101905061320e565b83811115613238576000848401525b50505050565b600061324982613200565b61325381856131a9565b935061326381856020860161320b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132a56011836131a9565b91506132b08261326f565b601182019050919050565b60006132c6826131dd565b91506132d2828561323e565b91506132dd82613298565b91506132e9828461323e565b91508190509392505050565b600061330082613200565b61330a8185612996565b935061331a81856020860161320b565b613323816128fc565b840191505092915050565b6000602082019050818103600083015261334881846132f5565b905092915050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e20616c726560008201527f616479207363686564756c656400000000000000000000000000000000000000602082015250565b60006133ac602d83612996565b91506133b782613350565b604082019050919050565b600060208201905081810360008301526133db8161339f565b9050919050565b7f42454d756c746953696757616c6c65743a20696e73756666696369656e74206460008201527f656c617900000000000000000000000000000000000000000000000000000000602082015250565b600061343e602483612996565b9150613449826133e2565b604082019050919050565b6000602082019050818103600083015261346d81613431565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206973206e60008201527f6f74207265616479000000000000000000000000000000000000000000000000602082015250565b60006134d0602883612996565b91506134db82613474565b604082019050919050565b600060208201905081810360008301526134ff816134c3565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f726561636820726571756972656420636f6e6669726d6174696f6e7300000000602082015250565b6000613562603c83612996565b915061356d82613506565b604082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b7f42454d756c746953696757616c6c65743a206d697373696e6720646570656e6460008201527f656e637900000000000000000000000000000000000000000000000000000000602082015250565b60006135f4602483612996565b91506135ff82613598565b604082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600081905092915050565b6000613641838561362a565b935061364e8385846128ed565b82840190509392505050565b6000613667828486613635565b91508190509392505050565b7f42454d756c746953696757616c6c65743a20756e6465726c79696e672074726160008201527f6e73616374696f6e207265766572746564000000000000000000000000000000602082015250565b60006136cf603183612996565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b600060608201905061371a60008301876127ac565b61372760208301866128b2565b818103604083015261373a81848661290d565b905095945050505050565b6000613750826121e2565b915061375b836121e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561379457613793612af4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006137d9826121e2565b915060008214156137ed576137ec612af4565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061382e602083612996565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f826121e2565b915061387a836121e2565b92508282101561388d5761388c612af4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207304aa08116423e9f4da95c2f2a85a29d0bc03e1ffd7cf17b3b749187ee7d92364736f6c634300080a0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDelay\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"executors\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"CallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"CallScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Confirmation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"MinDelayChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"RequirementChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMELOCK_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDelay\",\"type\":\"uint256\"}],\"name\":\"changeDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"}],\"name\":\"changeRequirement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"confirmTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"confirmations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperationBatch\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isConfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationDone\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationReady\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"required\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"revokeConfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"schedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"scheduleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"CallExecuted(bytes32,uint256,address,uint256,bytes)\":{\"details\":\"Emitted when a call is performed as part of operation `id`.\"},\"CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)\":{\"details\":\"Emitted when a call is scheduled as part of operation `id`.\"},\"Cancelled(bytes32)\":{\"details\":\"Emitted when operation `id` is cancelled.\"},\"MinDelayChange(uint256,uint256)\":{\"details\":\"Emitted when the minimum delay for future operations is modified.\"},\"RequirementChange(uint256,uint256)\":{\"details\":\"Emitted when the number of required confimations is modified.\"}},\"kind\":\"dev\",\"methods\":{\"cancel(bytes32)\":{\"details\":\"Cancel an operation. Requirements: - the caller must have the 'proposer' role.\"},\"changeDelay(uint256)\":{\"details\":\"Changes the minimum wallet duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the wallet itself. This can only be achieved by scheduling and later executing an operation where the wallet is the target and the data is the ABI-encoded call to this function.\"},\"changeRequirement(uint256)\":{\"details\":\"Allows to change the number of required confirmations. Transaction has to be sent by wallet.\",\"params\":{\"_required\":\"Number of required confirmations.\"}},\"confirmTransaction(bytes32)\":{\"details\":\"Allows an executor to confirm a transaction. Requirements - the caller must have the 'executor' role.\"},\"constructor\":{\"details\":\"Initializes the contract with a given `minDelay`.\"},\"execute(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role.\"},\"executeBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getTimestamp(bytes32)\":{\"details\":\"Returns the timestamp at with an operation becomes ready (0 for unset operations, 1 for done operations).\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"hashOperation(address,uint256,bytes,bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a single transaction.\"},\"hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a batch of transactions.\"},\"isOperation(bytes32)\":{\"details\":\"Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.\"},\"isOperationDone(bytes32)\":{\"details\":\"Returns whether an operation is done or not.\"},\"isOperationPending(bytes32)\":{\"details\":\"Returns whether an operation is pending or not.\"},\"isOperationReady(bytes32)\":{\"details\":\"Returns whether an operation is ready or not.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeConfirmation(bytes32)\":{\"details\":\"Allows an executor to revoke a confirmation for a transaction. Requirements - the caller must have the 'executor' role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"schedule(address,uint256,bytes,bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role.\"},\"scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"MultiSigWallet with timelocker\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/BEMultiSigWallet.sol\":\"BEMultiSigWallet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/core/BEMultiSigWallet.sol\":{\"keccak256\":\"0x4c60c70b6b5afa61a59714ed4adade336dd37a55c65fe7819fc8538f9003cf5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a17a111349c1601d70a8b1aace9fc5f4755feb2969419603ee50a5599444e589\",\"dweb:/ipfs/QmXUE3Lr278Rxf6j83u3VxFpR6Hgc2RbRhEa8A9GxKReMz\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620042cf380380620042cf8339818101604052810190620000379190620007f1565b620000697f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580620002b060201b60201c565b620000bb7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620002b060201b60201c565b6200010d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620002b060201b60201c565b6200014e7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5620001426200031360201b60201c565b6200031b60201b60201c565b620001807f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5306200031b60201b60201c565b60005b8251811015620001f057620001dc7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1848381518110620001c857620001c76200088b565b5b60200260200101516200031b60201b60201c565b80620001e890620008e9565b905062000183565b5060005b815181101562000261576200024d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638383815181106200023957620002386200088b565b5b60200260200101516200031b60201b60201c565b806200025990620008e9565b9050620001f4565b50826004819055507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560006004546040516200029f92919062000995565b60405180910390a1505050620009c2565b6000620002c3836200033160201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b6200032d82826200035060201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200036782826200039860201b620016201760201c565b6200039381600160008581526020019081526020016000206200048960201b620017001790919060201c565b505050565b620003aa8282620004c160201b60201c565b6200048557600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a6200031360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620004b9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200052b60201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200053f8383620005a560201b60201c565b6200059a5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200059f565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620005f181620005dc565b8114620005fd57600080fd5b50565b6000815190506200061181620005e6565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000667826200061c565b810181811067ffffffffffffffff821117156200068957620006886200062d565b5b80604052505050565b60006200069e620005c8565b9050620006ac82826200065c565b919050565b600067ffffffffffffffff821115620006cf57620006ce6200062d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200071282620006e5565b9050919050565b620007248162000705565b81146200073057600080fd5b50565b600081519050620007448162000719565b92915050565b6000620007616200075b84620006b1565b62000692565b90508083825260208201905060208402830185811115620007875762000786620006e0565b5b835b81811015620007b457806200079f888262000733565b84526020840193505060208101905062000789565b5050509392505050565b600082601f830112620007d657620007d562000617565b5b8151620007e88482602086016200074a565b91505092915050565b6000806000606084860312156200080d576200080c620005d2565b5b60006200081d8682870162000600565b935050602084015167ffffffffffffffff811115620008415762000840620005d7565b5b6200084f86828701620007be565b925050604084015167ffffffffffffffff811115620008735762000872620005d7565b5b6200088186828701620007be565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008f682620005dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200092c576200092b620008ba565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006200096c62000966620009608462000937565b62000941565b620005dc565b9050919050565b6200097e816200094b565b82525050565b6200098f81620005dc565b82525050565b6000604082019050620009ac600083018562000973565b620009bb602083018462000984565b9392505050565b6138fd80620009d26000396000f3fe6080604052600436106101e75760003560e01c80638065657f11610102578063c4d252f511610095578063d547741f11610064578063d547741f14610784578063dc8452cd146107ad578063e38335e5146107d8578063f3fc536d146107f4576101ee565b8063c4d252f5146106b6578063c63c4e9b146106df578063ca15c8731461070a578063d45c443514610747576101ee565b806391d14854116100d157806391d14854146105e8578063a217fddf14610625578063b1c5f42714610650578063ba51a6df1461068d576101ee565b80638065657f1461051a5780638f2a0bb0146105575780638f61f4f5146105805780639010d07c146105ab576101ee565b80632ab0f5291161017a5780635037ec62116101495780635037ec621461044e578063584b153e146104775780636486aa51146104b457806379716e43146104f1576101ee565b80632ab0f529146103825780632f2ff15d146103bf57806331d50750146103e857806336568abe14610425576101ee565b80630d3cf6fc116101b65780630d3cf6fc146102c1578063134008d3146102ec57806313bc9f2014610308578063248a9ca314610345576101ee565b806301d5062a146101f357806301ffc9a71461021c57806307bd0265146102595780630c4ecab414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906122b3565b61081d565b005b34801561022857600080fd5b50610243600480360381019061023e91906123ba565b6108ba565b6040516102509190612402565b60405180910390f35b34801561026557600080fd5b5061026e610934565b60405161027b919061242c565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612447565b610958565b6040516102b89190612402565b60405180910390f35b3480156102cd57600080fd5b506102d6610987565b6040516102e3919061242c565b60405180910390f35b61030660048036038101906103019190612487565b6109ab565b005b34801561031457600080fd5b5061032f600480360381019061032a9190612521565b610a2b565b60405161033c9190612402565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612521565b610a51565b604051610379919061242c565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612521565b610a70565b6040516103b69190612402565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612447565b610a85565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190612521565b610aae565b60405161041c9190612402565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612447565b610ac2565b005b34801561045a57600080fd5b506104756004803603810190610470919061254e565b610b45565b005b34801561048357600080fd5b5061049e60048036038101906104999190612521565b610bf8565b6040516104ab9190612402565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612521565b610c0d565b6040516104e89190612402565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612521565b610d1a565b005b34801561052657600080fd5b50610541600480360381019061053c9190612487565b610e5f565b60405161054e919061242c565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061267d565b610e9e565b005b34801561058c57600080fd5b50610595611051565b6040516105a2919061242c565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd919061276c565b611075565b6040516105df91906127bb565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612447565b6110a4565b60405161061c9190612402565b60405180910390f35b34801561063157600080fd5b5061063a61110e565b604051610647919061242c565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906127d6565b611115565b604051610684919061242c565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af919061254e565b61115a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190612521565b61120d565b005b3480156106eb57600080fd5b506106f46112cf565b60405161070191906128c1565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612521565b6112d5565b60405161073e91906128c1565b60405180910390f35b34801561075357600080fd5b5061076e60048036038101906107699190612521565b6112f9565b60405161077b91906128c1565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612447565b611316565b005b3480156107b957600080fd5b506107c261133f565b6040516107cf91906128c1565b60405180910390f35b6107f260048036038101906107ed91906127d6565b611345565b005b34801561080057600080fd5b5061081b60048036038101906108169190612521565b6114db565b005b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161084f8161084a611730565b611738565b600061085f898989898989610e5f565b905061086b81846117d5565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516108a79695949392919061293a565b60405180910390a3505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092d575061092c8261188a565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636109d78160006110a4565b6109ed576109ec816109e7611730565b611738565b5b60006109fd888888888888610e5f565b9050610a098185611904565b610a188160008a8a8a8a6119ed565b610a2181611ae5565b5050505050505050565b600080610a37836112f9565b9050600181118015610a495750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b60006001610a7d836112f9565b149050919050565b610a8e82610a51565b610a9f81610a9a611730565b611738565b610aa98383611b49565b505050565b600080610aba836112f9565b119050919050565b610aca611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612a19565b60405180910390fd5b610b418282611b7d565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612aab565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560045482604051610be6929190612acb565b60405180910390a18060048190555050565b60006001610c05836112f9565b119050919050565b600080600090506000610c3f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636112d5565b905060005b81811015610d1157600360008681526020019081526020016000206000610c8b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6384611075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ce857600183610ce59190612b23565b92505b600554831415610cfe5760019350505050610d15565b8080610d0990612b79565b915050610c44565b5050505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610d468160006110a4565b610d5c57610d5b81610d56611730565b611738565b5b610d6582610bf8565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612c34565b60405180910390fd5b60016003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda83604051610e53919061242c565b60405180910390a25050565b6000868686868686604051602001610e7c96959493929190612c54565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610ed081610ecb611730565b611738565b878790508a8a905014610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612d22565b60405180910390fd5b858590508a8a905014610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790612d22565b60405180910390fd5b6000610f728b8b8b8b8b8b8b8b611115565b9050610f7e81846117d5565b60005b8b8b90508110156110435780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610fc257610fc1612d42565b5b9050602002016020810190610fd79190612d71565b8d8d86818110610fea57610fe9612d42565b5b905060200201358c8c8781811061100457611003612d42565b5b90506020028101906110169190612dad565b8c8b60405161102a9695949392919061293a565b60405180910390a38061103c90612b79565b9050610f81565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600061109c8260016000868152602001908152602001600020611bb190919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b600088888888888888886040516020016111369897969594939291906130a9565b60405160208183030381529060405280519060200120905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612aab565b60405180910390fd5b7fdd7c0dd2de894f9cccfd27f17f4f7390a796fb28e4b1d7317e0e758fff8e672e600554826040516111fb929190612acb565b60405180910390a18060058190555050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161123f8161123a611730565b611738565b61124882610bf8565b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90613189565b60405180910390fd5b6002600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b60045481565b60006112f260016000848152602001908152602001600020611bcb565b9050919050565b600060026000838152602001908152602001600020549050919050565b61131f82610a51565b6113308161132b611730565b611738565b61133a8383611b7d565b505050565b60055481565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636113718160006110a4565b6113875761138681611381611730565b611738565b5b8686905089899050146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690612d22565b60405180910390fd5b848490508989905014611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612d22565b60405180910390fd5b60006114298a8a8a8a8a8a8a8a611115565b90506114358185611904565b60005b8a8a90508110156114c5576114b482828d8d8581811061145b5761145a612d42565b5b90506020020160208101906114709190612d71565b8c8c8681811061148357611482612d42565b5b905060200201358b8b8781811061149d5761149c612d42565b5b90506020028101906114af9190612dad565b6119ed565b806114be90612b79565b9050611438565b506114cf81611ae5565b50505050505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636115078160006110a4565b61151d5761151c81611517611730565b611738565b5b61152682610bf8565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90612c34565b60405180910390fd5b60006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f9aec1a62b961581534d37fd62d35e3648f05a17b1f986eda1d1a9d97b147840683604051611614919061242c565b60405180910390a25050565b61162a82826110a4565b6116fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a1611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611728836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611be0565b905092915050565b600033905090565b61174282826110a4565b6117d1576117678173ffffffffffffffffffffffffffffffffffffffff166014611c50565b6117758360001c6020611c50565b6040516020016117869291906132bb565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8919061332e565b60405180910390fd5b5050565b6117de82610aae565b1561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906133c2565b60405180910390fd5b600454811015611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90613454565b60405180910390fd5b804261186f9190612b23565b60026000848152602001908152602001600020819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fd57506118fc82611e8c565b5b9050919050565b61190d82610a2b565b61194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906134e6565b60405180910390fd5b61195582610c0d565b611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613578565b60405180910390fd5b6000801b8114806119aa57506119a981610a70565b5b6119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061360a565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611a1792919061365a565b60006040518083038185875af1925050503d8060008114611a54576040519150601f19603f3d011682016040523d82523d6000602084013e611a59565b606091505b5050905080611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a94906136e5565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051611ad49493929190613705565b60405180910390a350505050505050565b611aee81610a2b565b611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906134e6565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b611b538282611620565b611b78816001600085815260200190815260200160002061170090919063ffffffff16565b505050565b611b878282611ef6565b611bac8160016000858152602001908152602001600020611fd790919063ffffffff16565b505050565b6000611bc08360000183612007565b60001c905092915050565b6000611bd982600001612032565b9050919050565b6000611bec8383612043565b611c45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611c4a565b600090505b92915050565b606060006002836002611c639190613745565b611c6d9190612b23565b67ffffffffffffffff811115611c8657611c8561379f565b5b6040519080825280601f01601f191660200182016040528015611cb85781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611cf057611cef612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d5457611d53612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d949190613745565b611d9e9190612b23565b90505b6001811115611e3e577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611de057611ddf612d42565b5b1a60f81b828281518110611df757611df6612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e37906137ce565b9050611da1565b5060008414611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613844565b60405180910390fd5b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f0082826110a4565b15611fd357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f78611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611fff836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612066565b905092915050565b600082600001828154811061201f5761201e612d42565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461216e5760006001826120989190613864565b90506000600186600001805490506120b09190613864565b905081811461211f5760008660000182815481106120d1576120d0612d42565b5b90600052602060002001549050808760000184815481106120f5576120f4612d42565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061213357612132613898565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612174565b60009150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121af82612184565b9050919050565b6121bf816121a4565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b6000819050919050565b6121f5816121e2565b811461220057600080fd5b50565b600081359050612212816121ec565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261223d5761223c612218565b5b8235905067ffffffffffffffff81111561225a5761225961221d565b5b60208301915083600182028301111561227657612275612222565b5b9250929050565b6000819050919050565b6122908161227d565b811461229b57600080fd5b50565b6000813590506122ad81612287565b92915050565b600080600080600080600060c0888a0312156122d2576122d161217a565b5b60006122e08a828b016121cd565b97505060206122f18a828b01612203565b965050604088013567ffffffffffffffff8111156123125761231161217f565b5b61231e8a828b01612227565b955095505060606123318a828b0161229e565b93505060806123428a828b0161229e565b92505060a06123538a828b01612203565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61239781612362565b81146123a257600080fd5b50565b6000813590506123b48161238e565b92915050565b6000602082840312156123d0576123cf61217a565b5b60006123de848285016123a5565b91505092915050565b60008115159050919050565b6123fc816123e7565b82525050565b600060208201905061241760008301846123f3565b92915050565b6124268161227d565b82525050565b6000602082019050612441600083018461241d565b92915050565b6000806040838503121561245e5761245d61217a565b5b600061246c8582860161229e565b925050602061247d858286016121cd565b9150509250929050565b60008060008060008060a087890312156124a4576124a361217a565b5b60006124b289828a016121cd565b96505060206124c389828a01612203565b955050604087013567ffffffffffffffff8111156124e4576124e361217f565b5b6124f089828a01612227565b9450945050606061250389828a0161229e565b925050608061251489828a0161229e565b9150509295509295509295565b6000602082840312156125375761253661217a565b5b60006125458482850161229e565b91505092915050565b6000602082840312156125645761256361217a565b5b600061257284828501612203565b91505092915050565b60008083601f84011261259157612590612218565b5b8235905067ffffffffffffffff8111156125ae576125ad61221d565b5b6020830191508360208202830111156125ca576125c9612222565b5b9250929050565b60008083601f8401126125e7576125e6612218565b5b8235905067ffffffffffffffff8111156126045761260361221d565b5b6020830191508360208202830111156126205761261f612222565b5b9250929050565b60008083601f84011261263d5761263c612218565b5b8235905067ffffffffffffffff81111561265a5761265961221d565b5b60208301915083602082028301111561267657612675612222565b5b9250929050565b600080600080600080600080600060c08a8c03121561269f5761269e61217a565b5b60008a013567ffffffffffffffff8111156126bd576126bc61217f565b5b6126c98c828d0161257b565b995099505060208a013567ffffffffffffffff8111156126ec576126eb61217f565b5b6126f88c828d016125d1565b975097505060408a013567ffffffffffffffff81111561271b5761271a61217f565b5b6127278c828d01612627565b9550955050606061273a8c828d0161229e565b935050608061274b8c828d0161229e565b92505060a061275c8c828d01612203565b9150509295985092959850929598565b600080604083850312156127835761278261217a565b5b60006127918582860161229e565b92505060206127a285828601612203565b9150509250929050565b6127b5816121a4565b82525050565b60006020820190506127d060008301846127ac565b92915050565b60008060008060008060008060a0898b0312156127f6576127f561217a565b5b600089013567ffffffffffffffff8111156128145761281361217f565b5b6128208b828c0161257b565b9850985050602089013567ffffffffffffffff8111156128435761284261217f565b5b61284f8b828c016125d1565b9650965050604089013567ffffffffffffffff8111156128725761287161217f565b5b61287e8b828c01612627565b945094505060606128918b828c0161229e565b92505060806128a28b828c0161229e565b9150509295985092959890939650565b6128bb816121e2565b82525050565b60006020820190506128d660008301846128b2565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061291983856128dc565b93506129268385846128ed565b61292f836128fc565b840190509392505050565b600060a08201905061294f60008301896127ac565b61295c60208301886128b2565b818103604083015261296f81868861290d565b905061297e606083018561241d565b61298b60808301846128b2565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612a03602f83612996565b9150612a0e826129a7565b604082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b7f42454d756c746953696757616c6c65743a2063616c6c6572206d75737420626560008201527f2077616c6c657400000000000000000000000000000000000000000000000000602082015250565b6000612a95602783612996565b9150612aa082612a39565b604082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b6000604082019050612ae060008301856128b2565b612aed60208301846128b2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b2e826121e2565b9150612b39836121e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b6e57612b6d612af4565b5b828201905092915050565b6000612b84826121e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bb757612bb6612af4565b5b600182019050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f6578697374206f722066696e6973686564000000000000000000000000000000602082015250565b6000612c1e603183612996565b9150612c2982612bc2565b604082019050919050565b60006020820190508181036000830152612c4d81612c11565b9050919050565b600060a082019050612c6960008301896127ac565b612c7660208301886128b2565b8181036040830152612c8981868861290d565b9050612c98606083018561241d565b612ca5608083018461241d565b979650505050505050565b7f42454d756c746953696757616c6c65743a206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d0c602183612996565b9150612d1782612cb0565b604082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612d8757612d8661217a565b5b6000612d95848285016121cd565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612dca57612dc9612d9e565b5b80840192508235915067ffffffffffffffff821115612dec57612deb612da3565b5b602083019250600182023603831315612e0857612e07612da8565b5b509250929050565b600082825260208201905092915050565b6000819050919050565b612e34816121a4565b82525050565b6000612e468383612e2b565b60208301905092915050565b6000612e6160208401846121cd565b905092915050565b6000602082019050919050565b6000612e828385612e10565b9350612e8d82612e21565b8060005b85811015612ec657612ea38284612e52565b612ead8882612e3a565b9750612eb883612e69565b925050600181019050612e91565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612ef58385612ed3565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2857612f27612ee4565b5b602083029250612f398385846128ed565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b6000612f7d8385612f60565b9350612f8a8385846128ed565b612f93836128fc565b840190509392505050565b6000612fab848484612f71565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612fe057612fdf612fbe565b5b83810192508235915060208301925067ffffffffffffffff82111561300857613007612fb4565b5b60018202360384131561301e5761301d612fb9565b5b509250929050565b6000602082019050919050565b600061303f8385612f45565b93508360208402850161305184612f56565b8060005b8781101561309757848403895261306c8284612fc3565b613077868284612f9e565b955061308284613026565b935060208b019a505050600181019050613055565b50829750879450505050509392505050565b600060a08201905081810360008301526130c4818a8c612e76565b905081810360208301526130d981888a612ee9565b905081810360408301526130ee818688613033565b90506130fd606083018561241d565b61310a608083018461241d565b9998505050505050505050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e2063616e6e60008201527f6f742062652063616e63656c6c65640000000000000000000000000000000000602082015250565b6000613173602f83612996565b915061317e82613117565b604082019050919050565b600060208201905081810360008301526131a281613166565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006131ea6017836131a9565b91506131f5826131b4565b601782019050919050565b600081519050919050565b60005b8381101561322957808201518184015260208101905061320e565b83811115613238576000848401525b50505050565b600061324982613200565b61325381856131a9565b935061326381856020860161320b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132a56011836131a9565b91506132b08261326f565b601182019050919050565b60006132c6826131dd565b91506132d2828561323e565b91506132dd82613298565b91506132e9828461323e565b91508190509392505050565b600061330082613200565b61330a8185612996565b935061331a81856020860161320b565b613323816128fc565b840191505092915050565b6000602082019050818103600083015261334881846132f5565b905092915050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e20616c726560008201527f616479207363686564756c656400000000000000000000000000000000000000602082015250565b60006133ac602d83612996565b91506133b782613350565b604082019050919050565b600060208201905081810360008301526133db8161339f565b9050919050565b7f42454d756c746953696757616c6c65743a20696e73756666696369656e74206460008201527f656c617900000000000000000000000000000000000000000000000000000000602082015250565b600061343e602483612996565b9150613449826133e2565b604082019050919050565b6000602082019050818103600083015261346d81613431565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206973206e60008201527f6f74207265616479000000000000000000000000000000000000000000000000602082015250565b60006134d0602883612996565b91506134db82613474565b604082019050919050565b600060208201905081810360008301526134ff816134c3565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f726561636820726571756972656420636f6e6669726d6174696f6e7300000000602082015250565b6000613562603c83612996565b915061356d82613506565b604082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b7f42454d756c746953696757616c6c65743a206d697373696e6720646570656e6460008201527f656e637900000000000000000000000000000000000000000000000000000000602082015250565b60006135f4602483612996565b91506135ff82613598565b604082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600081905092915050565b6000613641838561362a565b935061364e8385846128ed565b82840190509392505050565b6000613667828486613635565b91508190509392505050565b7f42454d756c746953696757616c6c65743a20756e6465726c79696e672074726160008201527f6e73616374696f6e207265766572746564000000000000000000000000000000602082015250565b60006136cf603183612996565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b600060608201905061371a60008301876127ac565b61372760208301866128b2565b818103604083015261373a81848661290d565b905095945050505050565b6000613750826121e2565b915061375b836121e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561379457613793612af4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006137d9826121e2565b915060008214156137ed576137ec612af4565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061382e602083612996565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f826121e2565b915061387a836121e2565b92508282101561388d5761388c612af4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a93589d52fd41733741a568e20595dab72125458804c5db2b48341927c27fab364736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106101e75760003560e01c80638065657f11610102578063c4d252f511610095578063d547741f11610064578063d547741f14610784578063dc8452cd146107ad578063e38335e5146107d8578063f3fc536d146107f4576101ee565b8063c4d252f5146106b6578063c63c4e9b146106df578063ca15c8731461070a578063d45c443514610747576101ee565b806391d14854116100d157806391d14854146105e8578063a217fddf14610625578063b1c5f42714610650578063ba51a6df1461068d576101ee565b80638065657f1461051a5780638f2a0bb0146105575780638f61f4f5146105805780639010d07c146105ab576101ee565b80632ab0f5291161017a5780635037ec62116101495780635037ec621461044e578063584b153e146104775780636486aa51146104b457806379716e43146104f1576101ee565b80632ab0f529146103825780632f2ff15d146103bf57806331d50750146103e857806336568abe14610425576101ee565b80630d3cf6fc116101b65780630d3cf6fc146102c1578063134008d3146102ec57806313bc9f2014610308578063248a9ca314610345576101ee565b806301d5062a146101f357806301ffc9a71461021c57806307bd0265146102595780630c4ecab414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906122b3565b61081d565b005b34801561022857600080fd5b50610243600480360381019061023e91906123ba565b6108ba565b6040516102509190612402565b60405180910390f35b34801561026557600080fd5b5061026e610934565b60405161027b919061242c565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612447565b610958565b6040516102b89190612402565b60405180910390f35b3480156102cd57600080fd5b506102d6610987565b6040516102e3919061242c565b60405180910390f35b61030660048036038101906103019190612487565b6109ab565b005b34801561031457600080fd5b5061032f600480360381019061032a9190612521565b610a2b565b60405161033c9190612402565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612521565b610a51565b604051610379919061242c565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612521565b610a70565b6040516103b69190612402565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612447565b610a85565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190612521565b610aae565b60405161041c9190612402565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612447565b610ac2565b005b34801561045a57600080fd5b506104756004803603810190610470919061254e565b610b45565b005b34801561048357600080fd5b5061049e60048036038101906104999190612521565b610bf8565b6040516104ab9190612402565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612521565b610c0d565b6040516104e89190612402565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612521565b610d1a565b005b34801561052657600080fd5b50610541600480360381019061053c9190612487565b610e5f565b60405161054e919061242c565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061267d565b610e9e565b005b34801561058c57600080fd5b50610595611051565b6040516105a2919061242c565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd919061276c565b611075565b6040516105df91906127bb565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612447565b6110a4565b60405161061c9190612402565b60405180910390f35b34801561063157600080fd5b5061063a61110e565b604051610647919061242c565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906127d6565b611115565b604051610684919061242c565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af919061254e565b61115a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190612521565b61120d565b005b3480156106eb57600080fd5b506106f46112cf565b60405161070191906128c1565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612521565b6112d5565b60405161073e91906128c1565b60405180910390f35b34801561075357600080fd5b5061076e60048036038101906107699190612521565b6112f9565b60405161077b91906128c1565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190612447565b611316565b005b3480156107b957600080fd5b506107c261133f565b6040516107cf91906128c1565b60405180910390f35b6107f260048036038101906107ed91906127d6565b611345565b005b34801561080057600080fd5b5061081b60048036038101906108169190612521565b6114db565b005b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161084f8161084a611730565b611738565b600061085f898989898989610e5f565b905061086b81846117d5565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516108a79695949392919061293a565b60405180910390a3505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092d575061092c8261188a565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636109d78160006110a4565b6109ed576109ec816109e7611730565b611738565b5b60006109fd888888888888610e5f565b9050610a098185611904565b610a188160008a8a8a8a6119ed565b610a2181611ae5565b5050505050505050565b600080610a37836112f9565b9050600181118015610a495750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b60006001610a7d836112f9565b149050919050565b610a8e82610a51565b610a9f81610a9a611730565b611738565b610aa98383611b49565b505050565b600080610aba836112f9565b119050919050565b610aca611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612a19565b60405180910390fd5b610b418282611b7d565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612aab565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560045482604051610be6929190612acb565b60405180910390a18060048190555050565b60006001610c05836112f9565b119050919050565b600080600090506000610c3f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636112d5565b905060005b81811015610d1157600360008681526020019081526020016000206000610c8b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6384611075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ce857600183610ce59190612b23565b92505b600554831415610cfe5760019350505050610d15565b8080610d0990612b79565b915050610c44565b5050505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610d468160006110a4565b610d5c57610d5b81610d56611730565b611738565b5b610d6582610bf8565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612c34565b60405180910390fd5b60016003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda83604051610e53919061242c565b60405180910390a25050565b6000868686868686604051602001610e7c96959493929190612c54565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610ed081610ecb611730565b611738565b878790508a8a905014610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612d22565b60405180910390fd5b858590508a8a905014610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790612d22565b60405180910390fd5b6000610f728b8b8b8b8b8b8b8b611115565b9050610f7e81846117d5565b60005b8b8b90508110156110435780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610fc257610fc1612d42565b5b9050602002016020810190610fd79190612d71565b8d8d86818110610fea57610fe9612d42565b5b905060200201358c8c8781811061100457611003612d42565b5b90506020028101906110169190612dad565b8c8b60405161102a9695949392919061293a565b60405180910390a38061103c90612b79565b9050610f81565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600061109c8260016000868152602001908152602001600020611bb190919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b600088888888888888886040516020016111369897969594939291906130a9565b60405160208183030381529060405280519060200120905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612aab565b60405180910390fd5b7fdd7c0dd2de894f9cccfd27f17f4f7390a796fb28e4b1d7317e0e758fff8e672e600554826040516111fb929190612acb565b60405180910390a18060058190555050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161123f8161123a611730565b611738565b61124882610bf8565b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90613189565b60405180910390fd5b6002600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b60045481565b60006112f260016000848152602001908152602001600020611bcb565b9050919050565b600060026000838152602001908152602001600020549050919050565b61131f82610a51565b6113308161132b611730565b611738565b61133a8383611b7d565b505050565b60055481565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636113718160006110a4565b6113875761138681611381611730565b611738565b5b8686905089899050146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690612d22565b60405180910390fd5b848490508989905014611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612d22565b60405180910390fd5b60006114298a8a8a8a8a8a8a8a611115565b90506114358185611904565b60005b8a8a90508110156114c5576114b482828d8d8581811061145b5761145a612d42565b5b90506020020160208101906114709190612d71565b8c8c8681811061148357611482612d42565b5b905060200201358b8b8781811061149d5761149c612d42565b5b90506020028101906114af9190612dad565b6119ed565b806114be90612b79565b9050611438565b506114cf81611ae5565b50505050505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636115078160006110a4565b61151d5761151c81611517611730565b611738565b5b61152682610bf8565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90612c34565b60405180910390fd5b60006003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f9aec1a62b961581534d37fd62d35e3648f05a17b1f986eda1d1a9d97b147840683604051611614919061242c565b60405180910390a25050565b61162a82826110a4565b6116fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a1611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611728836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611be0565b905092915050565b600033905090565b61174282826110a4565b6117d1576117678173ffffffffffffffffffffffffffffffffffffffff166014611c50565b6117758360001c6020611c50565b6040516020016117869291906132bb565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c8919061332e565b60405180910390fd5b5050565b6117de82610aae565b1561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906133c2565b60405180910390fd5b600454811015611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90613454565b60405180910390fd5b804261186f9190612b23565b60026000848152602001908152602001600020819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fd57506118fc82611e8c565b5b9050919050565b61190d82610a2b565b61194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906134e6565b60405180910390fd5b61195582610c0d565b611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613578565b60405180910390fd5b6000801b8114806119aa57506119a981610a70565b5b6119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061360a565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611a1792919061365a565b60006040518083038185875af1925050503d8060008114611a54576040519150601f19603f3d011682016040523d82523d6000602084013e611a59565b606091505b5050905080611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a94906136e5565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051611ad49493929190613705565b60405180910390a350505050505050565b611aee81610a2b565b611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906134e6565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b611b538282611620565b611b78816001600085815260200190815260200160002061170090919063ffffffff16565b505050565b611b878282611ef6565b611bac8160016000858152602001908152602001600020611fd790919063ffffffff16565b505050565b6000611bc08360000183612007565b60001c905092915050565b6000611bd982600001612032565b9050919050565b6000611bec8383612043565b611c45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611c4a565b600090505b92915050565b606060006002836002611c639190613745565b611c6d9190612b23565b67ffffffffffffffff811115611c8657611c8561379f565b5b6040519080825280601f01601f191660200182016040528015611cb85781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611cf057611cef612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d5457611d53612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d949190613745565b611d9e9190612b23565b90505b6001811115611e3e577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611de057611ddf612d42565b5b1a60f81b828281518110611df757611df6612d42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e37906137ce565b9050611da1565b5060008414611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990613844565b60405180910390fd5b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f0082826110a4565b15611fd357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f78611730565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611fff836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612066565b905092915050565b600082600001828154811061201f5761201e612d42565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461216e5760006001826120989190613864565b90506000600186600001805490506120b09190613864565b905081811461211f5760008660000182815481106120d1576120d0612d42565b5b90600052602060002001549050808760000184815481106120f5576120f4612d42565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061213357612132613898565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612174565b60009150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121af82612184565b9050919050565b6121bf816121a4565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b6000819050919050565b6121f5816121e2565b811461220057600080fd5b50565b600081359050612212816121ec565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261223d5761223c612218565b5b8235905067ffffffffffffffff81111561225a5761225961221d565b5b60208301915083600182028301111561227657612275612222565b5b9250929050565b6000819050919050565b6122908161227d565b811461229b57600080fd5b50565b6000813590506122ad81612287565b92915050565b600080600080600080600060c0888a0312156122d2576122d161217a565b5b60006122e08a828b016121cd565b97505060206122f18a828b01612203565b965050604088013567ffffffffffffffff8111156123125761231161217f565b5b61231e8a828b01612227565b955095505060606123318a828b0161229e565b93505060806123428a828b0161229e565b92505060a06123538a828b01612203565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61239781612362565b81146123a257600080fd5b50565b6000813590506123b48161238e565b92915050565b6000602082840312156123d0576123cf61217a565b5b60006123de848285016123a5565b91505092915050565b60008115159050919050565b6123fc816123e7565b82525050565b600060208201905061241760008301846123f3565b92915050565b6124268161227d565b82525050565b6000602082019050612441600083018461241d565b92915050565b6000806040838503121561245e5761245d61217a565b5b600061246c8582860161229e565b925050602061247d858286016121cd565b9150509250929050565b60008060008060008060a087890312156124a4576124a361217a565b5b60006124b289828a016121cd565b96505060206124c389828a01612203565b955050604087013567ffffffffffffffff8111156124e4576124e361217f565b5b6124f089828a01612227565b9450945050606061250389828a0161229e565b925050608061251489828a0161229e565b9150509295509295509295565b6000602082840312156125375761253661217a565b5b60006125458482850161229e565b91505092915050565b6000602082840312156125645761256361217a565b5b600061257284828501612203565b91505092915050565b60008083601f84011261259157612590612218565b5b8235905067ffffffffffffffff8111156125ae576125ad61221d565b5b6020830191508360208202830111156125ca576125c9612222565b5b9250929050565b60008083601f8401126125e7576125e6612218565b5b8235905067ffffffffffffffff8111156126045761260361221d565b5b6020830191508360208202830111156126205761261f612222565b5b9250929050565b60008083601f84011261263d5761263c612218565b5b8235905067ffffffffffffffff81111561265a5761265961221d565b5b60208301915083602082028301111561267657612675612222565b5b9250929050565b600080600080600080600080600060c08a8c03121561269f5761269e61217a565b5b60008a013567ffffffffffffffff8111156126bd576126bc61217f565b5b6126c98c828d0161257b565b995099505060208a013567ffffffffffffffff8111156126ec576126eb61217f565b5b6126f88c828d016125d1565b975097505060408a013567ffffffffffffffff81111561271b5761271a61217f565b5b6127278c828d01612627565b9550955050606061273a8c828d0161229e565b935050608061274b8c828d0161229e565b92505060a061275c8c828d01612203565b9150509295985092959850929598565b600080604083850312156127835761278261217a565b5b60006127918582860161229e565b92505060206127a285828601612203565b9150509250929050565b6127b5816121a4565b82525050565b60006020820190506127d060008301846127ac565b92915050565b60008060008060008060008060a0898b0312156127f6576127f561217a565b5b600089013567ffffffffffffffff8111156128145761281361217f565b5b6128208b828c0161257b565b9850985050602089013567ffffffffffffffff8111156128435761284261217f565b5b61284f8b828c016125d1565b9650965050604089013567ffffffffffffffff8111156128725761287161217f565b5b61287e8b828c01612627565b945094505060606128918b828c0161229e565b92505060806128a28b828c0161229e565b9150509295985092959890939650565b6128bb816121e2565b82525050565b60006020820190506128d660008301846128b2565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061291983856128dc565b93506129268385846128ed565b61292f836128fc565b840190509392505050565b600060a08201905061294f60008301896127ac565b61295c60208301886128b2565b818103604083015261296f81868861290d565b905061297e606083018561241d565b61298b60808301846128b2565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612a03602f83612996565b9150612a0e826129a7565b604082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b7f42454d756c746953696757616c6c65743a2063616c6c6572206d75737420626560008201527f2077616c6c657400000000000000000000000000000000000000000000000000602082015250565b6000612a95602783612996565b9150612aa082612a39565b604082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b6000604082019050612ae060008301856128b2565b612aed60208301846128b2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b2e826121e2565b9150612b39836121e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b6e57612b6d612af4565b5b828201905092915050565b6000612b84826121e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bb757612bb6612af4565b5b600182019050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f6578697374206f722066696e6973686564000000000000000000000000000000602082015250565b6000612c1e603183612996565b9150612c2982612bc2565b604082019050919050565b60006020820190508181036000830152612c4d81612c11565b9050919050565b600060a082019050612c6960008301896127ac565b612c7660208301886128b2565b8181036040830152612c8981868861290d565b9050612c98606083018561241d565b612ca5608083018461241d565b979650505050505050565b7f42454d756c746953696757616c6c65743a206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d0c602183612996565b9150612d1782612cb0565b604082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612d8757612d8661217a565b5b6000612d95848285016121cd565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612dca57612dc9612d9e565b5b80840192508235915067ffffffffffffffff821115612dec57612deb612da3565b5b602083019250600182023603831315612e0857612e07612da8565b5b509250929050565b600082825260208201905092915050565b6000819050919050565b612e34816121a4565b82525050565b6000612e468383612e2b565b60208301905092915050565b6000612e6160208401846121cd565b905092915050565b6000602082019050919050565b6000612e828385612e10565b9350612e8d82612e21565b8060005b85811015612ec657612ea38284612e52565b612ead8882612e3a565b9750612eb883612e69565b925050600181019050612e91565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612ef58385612ed3565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2857612f27612ee4565b5b602083029250612f398385846128ed565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b6000612f7d8385612f60565b9350612f8a8385846128ed565b612f93836128fc565b840190509392505050565b6000612fab848484612f71565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612fe057612fdf612fbe565b5b83810192508235915060208301925067ffffffffffffffff82111561300857613007612fb4565b5b60018202360384131561301e5761301d612fb9565b5b509250929050565b6000602082019050919050565b600061303f8385612f45565b93508360208402850161305184612f56565b8060005b8781101561309757848403895261306c8284612fc3565b613077868284612f9e565b955061308284613026565b935060208b019a505050600181019050613055565b50829750879450505050509392505050565b600060a08201905081810360008301526130c4818a8c612e76565b905081810360208301526130d981888a612ee9565b905081810360408301526130ee818688613033565b90506130fd606083018561241d565b61310a608083018461241d565b9998505050505050505050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e2063616e6e60008201527f6f742062652063616e63656c6c65640000000000000000000000000000000000602082015250565b6000613173602f83612996565b915061317e82613117565b604082019050919050565b600060208201905081810360008301526131a281613166565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006131ea6017836131a9565b91506131f5826131b4565b601782019050919050565b600081519050919050565b60005b8381101561322957808201518184015260208101905061320e565b83811115613238576000848401525b50505050565b600061324982613200565b61325381856131a9565b935061326381856020860161320b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132a56011836131a9565b91506132b08261326f565b601182019050919050565b60006132c6826131dd565b91506132d2828561323e565b91506132dd82613298565b91506132e9828461323e565b91508190509392505050565b600061330082613200565b61330a8185612996565b935061331a81856020860161320b565b613323816128fc565b840191505092915050565b6000602082019050818103600083015261334881846132f5565b905092915050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e20616c726560008201527f616479207363686564756c656400000000000000000000000000000000000000602082015250565b60006133ac602d83612996565b91506133b782613350565b604082019050919050565b600060208201905081810360008301526133db8161339f565b9050919050565b7f42454d756c746953696757616c6c65743a20696e73756666696369656e74206460008201527f656c617900000000000000000000000000000000000000000000000000000000602082015250565b600061343e602483612996565b9150613449826133e2565b604082019050919050565b6000602082019050818103600083015261346d81613431565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206973206e60008201527f6f74207265616479000000000000000000000000000000000000000000000000602082015250565b60006134d0602883612996565b91506134db82613474565b604082019050919050565b600060208201905081810360008301526134ff816134c3565b9050919050565b7f42454d756c746953696757616c6c65743a206f7065726174696f6e206e6f742060008201527f726561636820726571756972656420636f6e6669726d6174696f6e7300000000602082015250565b6000613562603c83612996565b915061356d82613506565b604082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b7f42454d756c746953696757616c6c65743a206d697373696e6720646570656e6460008201527f656e637900000000000000000000000000000000000000000000000000000000602082015250565b60006135f4602483612996565b91506135ff82613598565b604082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600081905092915050565b6000613641838561362a565b935061364e8385846128ed565b82840190509392505050565b6000613667828486613635565b91508190509392505050565b7f42454d756c746953696757616c6c65743a20756e6465726c79696e672074726160008201527f6e73616374696f6e207265766572746564000000000000000000000000000000602082015250565b60006136cf603183612996565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b600060608201905061371a60008301876127ac565b61372760208301866128b2565b818103604083015261373a81848661290d565b905095945050505050565b6000613750826121e2565b915061375b836121e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561379457613793612af4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006137d9826121e2565b915060008214156137ed576137ec612af4565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061382e602083612996565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f826121e2565b915061387a836121e2565b92508282101561388d5761388c612af4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a93589d52fd41733741a568e20595dab72125458804c5db2b48341927c27fab364736f6c634300080a0033", "immutableReferences": {}, "generatedSources": [ { @@ -23938,9 +23938,9 @@ "name": "#utility.yul" } ], - "sourceMap": "168:11881:9:-:0;;;1901:752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2010:55;275:32;;2010:13;;;:55;;:::i;:::-;2071:49;351:26;275:32;2071:13;;;:49;;:::i;:::-;2126;421:26;275:32;2126:13;;;:49;;:::i;:::-;2220:45;275:32;2252:12;:10;;;:12;;:::i;:::-;2220:10;;;:45;;:::i;:::-;2271:46;275:32;2311:4;2271:10;;;:46;;:::i;:::-;2355:9;2350:101;2374:9;:16;2370:1;:20;2350:101;;;2405:39;351:26;2431:9;2441:1;2431:12;;;;;;;;:::i;:::-;;;;;;;;2405:10;;;:39;;:::i;:::-;2392:3;;;;:::i;:::-;;;2350:101;;;;2488:9;2483:101;2507:9;:16;2503:1;:20;2483:101;;;2538:39;421:26;2564:9;2574:1;2564:12;;;;;;;;:::i;:::-;;;;;;;;2538:10;;;:39;;:::i;:::-;2525:3;;;;:::i;:::-;;;2483:101;;;;2601:9;2590:8;:20;;;;2621:27;2636:1;2639:8;;2621:27;;;;;;;:::i;:::-;;;;;;;;1901:752;;;168:11881;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;6257:110:0:-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;;;:31;;;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:8:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;;;:50;;:::i;:::-;7698:57;;7612:150;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:404:8:-;1760:4;1781:21;1791:3;1796:5;1781:9;;;:21;;:::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;7:75:10:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:117::-;803:1;800;793:12;817:102;858:6;909:2;905:7;900:2;893:5;889:14;885:28;875:38;;817:102;;;:::o;925:180::-;973:77;970:1;963:88;1070:4;1067:1;1060:15;1094:4;1091:1;1084:15;1111:281;1194:27;1216:4;1194:27;:::i;:::-;1186:6;1182:40;1324:6;1312:10;1309:22;1288:18;1276:10;1273:34;1270:62;1267:88;;;1335:18;;:::i;:::-;1267:88;1375:10;1371:2;1364:22;1154:238;1111:281;;:::o;1398:129::-;1432:6;1459:20;;:::i;:::-;1449:30;;1488:33;1516:4;1508:6;1488:33;:::i;:::-;1398:129;;;:::o;1533:311::-;1610:4;1700:18;1692:6;1689:30;1686:56;;;1722:18;;:::i;:::-;1686:56;1772:4;1764:6;1760:17;1752:25;;1832:4;1826;1822:15;1814:23;;1533:311;;;:::o;1850:117::-;1959:1;1956;1949:12;1973:126;2010:7;2050:42;2043:5;2039:54;2028:65;;1973:126;;;:::o;2105:96::-;2142:7;2171:24;2189:5;2171:24;:::i;:::-;2160:35;;2105:96;;;:::o;2207:122::-;2280:24;2298:5;2280:24;:::i;:::-;2273:5;2270:35;2260:63;;2319:1;2316;2309:12;2260:63;2207:122;:::o;2335:143::-;2392:5;2423:6;2417:13;2408:22;;2439:33;2466:5;2439:33;:::i;:::-;2335:143;;;;:::o;2501:732::-;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:1069::-;3785:6;3793;3801;3850:2;3838:9;3829:7;3825:23;3821:32;3818:119;;;3856:79;;:::i;:::-;3818:119;3976:1;4001:64;4057:7;4048:6;4037:9;4033:22;4001:64;:::i;:::-;3991:74;;3947:128;4135:2;4124:9;4120:18;4114:25;4166:18;4158:6;4155:30;4152:117;;;4188:79;;:::i;:::-;4152:117;4293:89;4374:7;4365:6;4354:9;4350:22;4293:89;:::i;:::-;4283:99;;4085:307;4452:2;4441:9;4437:18;4431:25;4483:18;4475:6;4472:30;4469:117;;;4505:79;;:::i;:::-;4469:117;4610:89;4691:7;4682:6;4671:9;4667:22;4610:89;:::i;:::-;4600:99;;4402:307;3647:1069;;;;;:::o;4722:180::-;4770:77;4767:1;4760:88;4867:4;4864:1;4857:15;4891:4;4888:1;4881:15;4908:180;4956:77;4953:1;4946:88;5053:4;5050:1;5043:15;5077:4;5074:1;5067:15;5094:233;5133:3;5156:24;5174:5;5156:24;:::i;:::-;5147:33;;5202:66;5195:5;5192:77;5189:103;;;5272:18;;:::i;:::-;5189:103;5319:1;5312:5;5308:13;5301:20;;5094:233;;;:::o;5333:85::-;5378:7;5407:5;5396:16;;5333:85;;;:::o;5424:60::-;5452:3;5473:5;5466:12;;5424:60;;;:::o;5490:158::-;5548:9;5581:61;5599:42;5608:32;5634:5;5608:32;:::i;:::-;5599:42;:::i;:::-;5581:61;:::i;:::-;5568:74;;5490:158;;;:::o;5654:147::-;5749:45;5788:5;5749:45;:::i;:::-;5744:3;5737:58;5654:147;;:::o;5807:118::-;5894:24;5912:5;5894:24;:::i;:::-;5889:3;5882:37;5807:118;;:::o;5931:348::-;6060:4;6098:2;6087:9;6083:18;6075:26;;6111:79;6187:1;6176:9;6172:17;6163:6;6111:79;:::i;:::-;6200:72;6268:2;6257:9;6253:18;6244:6;6200:72;:::i;:::-;5931:348;;;;;:::o;168:11881:9:-;;;;;;;", - "deployedSourceMap": "168:11881:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5715:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;634:212:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;381:66:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;561:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;225:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8827:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4072:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4008:129:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4359:130:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3326:114:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:214:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11573:145:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3514:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3671:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7896:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4862:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:739;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;311:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1431:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5224:291:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11893:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7527:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;630:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4626:133:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;657:23:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9422:668;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8337:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5715:362;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;5908:10:9::1;5921:53;5935:6;5943:5;5950:4;;5956:11;5969:4;5921:13;:53::i;:::-;5908:66;;5980:20;5990:2;5994:5;5980:9;:20::i;:::-;6029:1;6025:2;6011:61;6032:6;6040:5;6047:4;;6053:11;6066:5;6011:61;;;;;;;;;;;:::i;:::-;;;;;;;;5902:175;5715:362:::0;;;;;;;;:::o;634:212:1:-;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;381:66:9:-;421:26;381:66;:::o;561:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;225:82::-;275:32;225:82;:::o;8827:355::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;9018:10:::1;9031:53;9045:6;9053:5;9060:4;;9066:11;9079:4;9031:13;:53::i;:::-;9018:66;;9090:28;9102:2;9106:11;9090;:28::i;:::-;9124:33;9130:2;9134:1;9137:6;9145:5;9152:4;;9124:5;:33::i;:::-;9163:14;9174:2;9163:10;:14::i;:::-;9012:170;8827:355:::0;;;;;;;:::o;4072:216::-;4155:10;4175:17;4195:16;4208:2;4195:12;:16::i;:::-;4175:36;;503:1;4224:9;:27;:59;;;;;4268:15;4255:9;:28;;4224:59;4217:66;;;4072:216;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4359:130:9:-;4425:9;503:1;4449:16;4462:2;4449:12;:16::i;:::-;:35;4442:42;;4359:130;;;:::o;4387:145:0:-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;3326:114:9:-;3388:12;3434:1;3415:16;3428:2;3415:12;:16::i;:::-;:20;3408:27;;3326:114;;;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;11573:145:9:-;1753:4;1731:27;;:10;:27;;;1716:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:35:::1;11667:8;;11677:9;11652:35;;;;;;;:::i;:::-;;;;;;;;11704:9;11693:8;:20;;;;11573:145:::0;:::o;3514:153::-;3599:12;503:1;3628:16;3641:2;3628:12;:16::i;:::-;:34;3621:41;;3514:153;;;:::o;3671:329::-;3725:10;3743:13;3759:1;3743:17;;3766:21;3790:33;421:26;3790:18;:33::i;:::-;3766:57;;3834:9;3829:167;3853:13;3849:1;:17;3829:167;;;3885:13;:17;3899:2;3885:17;;;;;;;;;;;:50;3903:31;421:26;3932:1;3903:13;:31::i;:::-;3885:50;;;;;;;;;;;;;;;;;;;;;;;;;3881:66;;;3946:1;3937:10;;;;;:::i;:::-;;;3881:66;3968:8;;3959:5;:17;3955:34;;;3985:4;3978:11;;;;;;;3955:34;3868:3;;;;;:::i;:::-;;;;3829:167;;;;3737:263;;3671:329;;;;:::o;7896:285::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;8008:22:::1;8027:2;8008:18;:22::i;:::-;7993:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8133:4;8101:13;:17;8115:2;8101:17;;;;;;;;;;;:29;8119:10;8101:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;8161:10;8148:28;;;8173:2;8148:28;;;;;;:::i;:::-;;;;;;;;7896:285:::0;;:::o;4862:256::-;5025:12;5073:6;5081:5;5088:4;;5094:11;5107:4;5062:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5052:61;;;;;;5045:68;;4862:256;;;;;;;;:::o;6311:739::-;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;6569:6:9::1;;:13;;6551:7;;:14;;:31;6536:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;6670:5;;:12;;6652:7;;:14;;:30;6637:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;6738:10;6751:61;6770:7;;6779:6;;6787:5;;6794:11;6807:4;6751:18;:61::i;:::-;6738:74;;6818:20;6828:2;6832:5;6818:9;:20::i;:::-;6849:9;6844:202;6868:7;;:14;;6864:1;:18;6844:202;;;6937:1;6925:2;6902:137;6948:7;;6956:1;6948:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6968:6;;6975:1;6968:9;;;;;;;:::i;:::-;;;;;;;;6987:5;;6993:1;6987:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;7005:11;7026:5;6902:137;;;;;;;;;;;:::i;:::-;;;;;;;;6884:3;;;;:::i;:::-;;;6844:202;;;;6530:520;6311:739:::0;;;;;;;;;;:::o;311:66::-;351:26;311:66;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;5224:291:9:-;5419:12;5467:7;;5476:6;;5484:5;;5491:11;5504:4;5456:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5446:64;;;;;;5439:71;;5224:291;;;;;;;;;;:::o;11893:154::-;1753:4;1731:27;;:10;:27;;;1716:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11978:38:::1;11996:8;;12006:9;11978:38;;;;;;;:::i;:::-;;;;;;;;12033:9;12022:8;:20;;;;11893:154:::0;:::o;7527:231::-;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;7615:22:9::1;7634:2;7615:18;:22::i;:::-;7600:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:11;:15;7725:2;7713:15;;;;;;;;;;;7706:22;;;7750:2;7740:13;;;;;;;;;;7527:231:::0;;:::o;630:23::-;;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;4626:133:9:-;4705:17;4739:11;:15;4751:2;4739:15;;;;;;;;;;;;4732:22;;4626:133;;;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;657:23:9:-;;;;:::o;9422:668::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;9678:6:::1;;:13;;9660:7;;:14;;:31;9645:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;9779:5;;:12;;9761:7;;:14;;:30;9746:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;9847:10;9860:61;9879:7;;9888:6;;9896:5;;9903:11;9916:4;9860:18;:61::i;:::-;9847:74;;9927:28;9939:2;9943:11;9927;:28::i;:::-;9966:9;9961:105;9985:7;;:14;;9981:1;:18;9961:105;;;10014:45;10020:2;10024:1;10027:7;;10035:1;10027:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10039:6;;10046:1;10039:9;;;;;;;:::i;:::-;;;;;;;;10050:5;;10056:1;10050:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;10014:5;:45::i;:::-;10001:3;;;;:::i;:::-;;;9961:105;;;;10071:14;10082:2;10071:10;:14::i;:::-;9639:451;9422:668:::0;;;;;;;;;:::o;8337:284::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;8449:22:::1;8468:2;8449:18;:22::i;:::-;8434:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8574:5;8542:13;:17;8556:2;8542:17;;;;;;;;;;;:29;8560:10;8542:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8601:10;8590:26;;;8613:2;8590:26;;;;;;:::i;:::-;;;;;;;;8337:284:::0;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:8:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;:::o;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;7144:258:9:-;7213:15;7225:2;7213:11;:15::i;:::-;7212:16;7204:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7301:8;;7292:5;:17;;7284:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7392:5;7374:15;:23;;;;:::i;:::-;7356:11;:15;7368:2;7356:15;;;;;;;;;;;:41;;;;7144:258;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;10165:393:9:-;10246:20;10263:2;10246:16;:20::i;:::-;10238:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10332:15;10344:2;10332:11;:15::i;:::-;10317:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;10467:1;10459:10;;10444:11;:25;:57;;;;10473:28;10489:11;10473:15;:28::i;:::-;10444:57;10429:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;10165:393;;:::o;10890:318::-;11023:12;11041:6;:11;;11060:5;11067:4;;11041:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11022:50;;;11086:7;11078:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11176:5;11172:2;11159:44;11183:6;11191:5;11198:4;;11159:44;;;;;;;;;:::i;:::-;;;;;;;;11016:192;10890:318;;;;;;:::o;10632:163::-;10686:20;10703:2;10686:16;:20::i;:::-;10678:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;503:1;10757:11;:15;10769:2;10757:15;;;;;;;;;;;:33;;;;10632:163;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;8870:156:8:-;8944:7;8994:22;8998:3;:10;;9010:5;8994:3;:22::i;:::-;8986:31;;8963:56;;8870:156;;;;:::o;8413:115::-;8476:7;8502:19;8510:3;:10;;8502:7;:19::i;:::-;8495:26;;8413:115;;;:::o;1697:404::-;1760:4;1781:21;1791:3;1796:5;1781:9;:21::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;1588:441:5:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;829:155:6:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;7219:234:0:-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;7930:156:8:-;8003:4;8026:53;8034:3;:10;;8070:5;8054:23;;8046:32;;8026:7;:53::i;:::-;8019:60;;7930:156;;;;:::o;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;;4481:25;;4395:118;;;;:::o;3946:107::-;4002:7;4028:3;:11;;:18;;;;4021:25;;3946:107;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;2269:1388::-;2335:4;2451:18;2472:3;:12;;:19;2485:5;2472:19;;;;;;;;;;;;2451:40;;2520:1;2506:10;:15;2502:1149;;2875:21;2912:1;2899:10;:14;;;;:::i;:::-;2875:38;;2927:17;2968:1;2947:3;:11;;:18;;;;:22;;;;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3314:10;3288:3;:12;;:23;3301:9;3288:23;;;;;;;;;;;:36;;;;3016:366;2984:398;3460:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;2269:1388;;;;;:::o;88:117:10:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:117;1429:1;1426;1419:12;1443:117;1552:1;1549;1542:12;1579:552;1636:8;1646:6;1696:3;1689:4;1681:6;1677:17;1673:27;1663:122;;1704:79;;:::i;:::-;1663:122;1817:6;1804:20;1794:30;;1847:18;1839:6;1836:30;1833:117;;;1869:79;;:::i;:::-;1833:117;1983:4;1975:6;1971:17;1959:29;;2037:3;2029:4;2021:6;2017:17;2007:8;2003:32;2000:41;1997:128;;;2044:79;;:::i;:::-;1997:128;1579:552;;;;;:::o;2137:77::-;2174:7;2203:5;2192:16;;2137:77;;;:::o;2220:122::-;2293:24;2311:5;2293:24;:::i;:::-;2286:5;2283:35;2273:63;;2332:1;2329;2322:12;2273:63;2220:122;:::o;2348:139::-;2394:5;2432:6;2419:20;2410:29;;2448:33;2475:5;2448:33;:::i;:::-;2348:139;;;;:::o;2493:1255::-;2608:6;2616;2624;2632;2640;2648;2656;2705:3;2693:9;2684:7;2680:23;2676:33;2673:120;;;2712:79;;:::i;:::-;2673:120;2832:1;2857:53;2902:7;2893:6;2882:9;2878:22;2857:53;:::i;:::-;2847:63;;2803:117;2959:2;2985:53;3030:7;3021:6;3010:9;3006:22;2985:53;:::i;:::-;2975:63;;2930:118;3115:2;3104:9;3100:18;3087:32;3146:18;3138:6;3135:30;3132:117;;;3168:79;;:::i;:::-;3132:117;3281:64;3337:7;3328:6;3317:9;3313:22;3281:64;:::i;:::-;3263:82;;;;3058:297;3394:2;3420:53;3465:7;3456:6;3445:9;3441:22;3420:53;:::i;:::-;3410:63;;3365:118;3522:3;3549:53;3594:7;3585:6;3574:9;3570:22;3549:53;:::i;:::-;3539:63;;3493:119;3651:3;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3622:119;2493:1255;;;;;;;;;;:::o;3754:149::-;3790:7;3830:66;3823:5;3819:78;3808:89;;3754:149;;;:::o;3909:120::-;3981:23;3998:5;3981:23;:::i;:::-;3974:5;3971:34;3961:62;;4019:1;4016;4009:12;3961:62;3909:120;:::o;4035:137::-;4080:5;4118:6;4105:20;4096:29;;4134:32;4160:5;4134:32;:::i;:::-;4035:137;;;;:::o;4178:327::-;4236:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:119;;;4291:79;;:::i;:::-;4253:119;4411:1;4436:52;4480:7;4471:6;4460:9;4456:22;4436:52;:::i;:::-;4426:62;;4382:116;4178:327;;;;:::o;4511:90::-;4545:7;4588:5;4581:13;4574:21;4563:32;;4511:90;;;:::o;4607:109::-;4688:21;4703:5;4688:21;:::i;:::-;4683:3;4676:34;4607:109;;:::o;4722:210::-;4809:4;4847:2;4836:9;4832:18;4824:26;;4860:65;4922:1;4911:9;4907:17;4898:6;4860:65;:::i;:::-;4722:210;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:474::-;5358:6;5366;5415:2;5403:9;5394:7;5390:23;5386:32;5383:119;;;5421:79;;:::i;:::-;5383:119;5541:1;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5512:117;5668:2;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5639:118;5290:474;;;;;:::o;5770:1109::-;5876:6;5884;5892;5900;5908;5916;5965:3;5953:9;5944:7;5940:23;5936:33;5933:120;;;5972:79;;:::i;:::-;5933:120;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;6375:2;6364:9;6360:18;6347:32;6406:18;6398:6;6395:30;6392:117;;;6428:79;;:::i;:::-;6392:117;6541:64;6597:7;6588:6;6577:9;6573:22;6541:64;:::i;:::-;6523:82;;;;6318:297;6654:2;6680:53;6725:7;6716:6;6705:9;6701:22;6680:53;:::i;:::-;6670:63;;6625:118;6782:3;6809:53;6854:7;6845:6;6834:9;6830:22;6809:53;:::i;:::-;6799:63;;6753:119;5770:1109;;;;;;;;:::o;6885:329::-;6944:6;6993:2;6981:9;6972:7;6968:23;6964:32;6961:119;;;6999:79;;:::i;:::-;6961:119;7119:1;7144:53;7189:7;7180:6;7169:9;7165:22;7144:53;:::i;:::-;7134:63;;7090:117;6885:329;;;;:::o;7220:::-;7279:6;7328:2;7316:9;7307:7;7303:23;7299:32;7296:119;;;7334:79;;:::i;:::-;7296:119;7454:1;7479:53;7524:7;7515:6;7504:9;7500:22;7479:53;:::i;:::-;7469:63;;7425:117;7220:329;;;;:::o;7572:568::-;7645:8;7655:6;7705:3;7698:4;7690:6;7686:17;7682:27;7672:122;;7713:79;;:::i;:::-;7672:122;7826:6;7813:20;7803:30;;7856:18;7848:6;7845:30;7842:117;;;7878:79;;:::i;:::-;7842:117;7992:4;7984:6;7980:17;7968:29;;8046:3;8038:4;8030:6;8026:17;8016:8;8012:32;8009:41;8006:128;;;8053:79;;:::i;:::-;8006:128;7572:568;;;;;:::o;8163:::-;8236:8;8246:6;8296:3;8289:4;8281:6;8277:17;8273:27;8263:122;;8304:79;;:::i;:::-;8263:122;8417:6;8404:20;8394:30;;8447:18;8439:6;8436:30;8433:117;;;8469:79;;:::i;:::-;8433:117;8583:4;8575:6;8571:17;8559:29;;8637:3;8629:4;8621:6;8617:17;8607:8;8603:32;8600:41;8597:128;;;8644:79;;:::i;:::-;8597:128;8163:568;;;;;:::o;8752:579::-;8836:8;8846:6;8896:3;8889:4;8881:6;8877:17;8873:27;8863:122;;8904:79;;:::i;:::-;8863:122;9017:6;9004:20;8994:30;;9047:18;9039:6;9036:30;9033:117;;;9069:79;;:::i;:::-;9033:117;9183:4;9175:6;9171:17;9159:29;;9237:3;9229:4;9221:6;9217:17;9207:8;9203:32;9200:41;9197:128;;;9244:79;;:::i;:::-;9197:128;8752:579;;;;;:::o;9337:1769::-;9533:6;9541;9549;9557;9565;9573;9581;9589;9597;9646:3;9634:9;9625:7;9621:23;9617:33;9614:120;;;9653:79;;:::i;:::-;9614:120;9801:1;9790:9;9786:17;9773:31;9831:18;9823:6;9820:30;9817:117;;;9853:79;;:::i;:::-;9817:117;9966:80;10038:7;10029:6;10018:9;10014:22;9966:80;:::i;:::-;9948:98;;;;9744:312;10123:2;10112:9;10108:18;10095:32;10154:18;10146:6;10143:30;10140:117;;;10176:79;;:::i;:::-;10140:117;10289:80;10361:7;10352:6;10341:9;10337:22;10289:80;:::i;:::-;10271:98;;;;10066:313;10446:2;10435:9;10431:18;10418:32;10477:18;10469:6;10466:30;10463:117;;;10499:79;;:::i;:::-;10463:117;10612:91;10695:7;10686:6;10675:9;10671:22;10612:91;:::i;:::-;10594:109;;;;10389:324;10752:2;10778:53;10823:7;10814:6;10803:9;10799:22;10778:53;:::i;:::-;10768:63;;10723:118;10880:3;10907:53;10952:7;10943:6;10932:9;10928:22;10907:53;:::i;:::-;10897:63;;10851:119;11009:3;11036:53;11081:7;11072:6;11061:9;11057:22;11036:53;:::i;:::-;11026:63;;10980:119;9337:1769;;;;;;;;;;;:::o;11112:474::-;11180:6;11188;11237:2;11225:9;11216:7;11212:23;11208:32;11205:119;;;11243:79;;:::i;:::-;11205:119;11363:1;11388:53;11433:7;11424:6;11413:9;11409:22;11388:53;:::i;:::-;11378:63;;11334:117;11490:2;11516:53;11561:7;11552:6;11541:9;11537:22;11516:53;:::i;:::-;11506:63;;11461:118;11112:474;;;;;:::o;11592:118::-;11679:24;11697:5;11679:24;:::i;:::-;11674:3;11667:37;11592:118;;:::o;11716:222::-;11809:4;11847:2;11836:9;11832:18;11824:26;;11860:71;11928:1;11917:9;11913:17;11904:6;11860:71;:::i;:::-;11716:222;;;;:::o;11944:1623::-;12131:6;12139;12147;12155;12163;12171;12179;12187;12236:3;12224:9;12215:7;12211:23;12207:33;12204:120;;;12243:79;;:::i;:::-;12204:120;12391:1;12380:9;12376:17;12363:31;12421:18;12413:6;12410:30;12407:117;;;12443:79;;:::i;:::-;12407:117;12556:80;12628:7;12619:6;12608:9;12604:22;12556:80;:::i;:::-;12538:98;;;;12334:312;12713:2;12702:9;12698:18;12685:32;12744:18;12736:6;12733:30;12730:117;;;12766:79;;:::i;:::-;12730:117;12879:80;12951:7;12942:6;12931:9;12927:22;12879:80;:::i;:::-;12861:98;;;;12656:313;13036:2;13025:9;13021:18;13008:32;13067:18;13059:6;13056:30;13053:117;;;13089:79;;:::i;:::-;13053:117;13202:91;13285:7;13276:6;13265:9;13261:22;13202:91;:::i;:::-;13184:109;;;;12979:324;13342:2;13368:53;13413:7;13404:6;13393:9;13389:22;13368:53;:::i;:::-;13358:63;;13313:118;13470:3;13497:53;13542:7;13533:6;13522:9;13518:22;13497:53;:::i;:::-;13487:63;;13441:119;11944:1623;;;;;;;;;;;:::o;13573:118::-;13660:24;13678:5;13660:24;:::i;:::-;13655:3;13648:37;13573:118;;:::o;13697:222::-;13790:4;13828:2;13817:9;13813:18;13805:26;;13841:71;13909:1;13898:9;13894:17;13885:6;13841:71;:::i;:::-;13697:222;;;;:::o;13925:168::-;14008:11;14042:6;14037:3;14030:19;14082:4;14077:3;14073:14;14058:29;;13925:168;;;;:::o;14099:154::-;14183:6;14178:3;14173;14160:30;14245:1;14236:6;14231:3;14227:16;14220:27;14099:154;;;:::o;14259:102::-;14300:6;14351:2;14347:7;14342:2;14335:5;14331:14;14327:28;14317:38;;14259:102;;;:::o;14389:301::-;14485:3;14506:70;14569:6;14564:3;14506:70;:::i;:::-;14499:77;;14586:43;14622:6;14617:3;14610:5;14586:43;:::i;:::-;14654:29;14676:6;14654:29;:::i;:::-;14649:3;14645:39;14638:46;;14389:301;;;;;:::o;14696:771::-;14929:4;14967:3;14956:9;14952:19;14944:27;;14981:71;15049:1;15038:9;15034:17;15025:6;14981:71;:::i;:::-;15062:72;15130:2;15119:9;15115:18;15106:6;15062:72;:::i;:::-;15181:9;15175:4;15171:20;15166:2;15155:9;15151:18;15144:48;15209:86;15290:4;15281:6;15273;15209:86;:::i;:::-;15201:94;;15305:72;15373:2;15362:9;15358:18;15349:6;15305:72;:::i;:::-;15387:73;15455:3;15444:9;15440:19;15431:6;15387:73;:::i;:::-;14696:771;;;;;;;;;:::o;15473:169::-;15557:11;15591:6;15586:3;15579:19;15631:4;15626:3;15622:14;15607:29;;15473:169;;;;:::o;15648:234::-;15788:34;15784:1;15776:6;15772:14;15765:58;15857:17;15852:2;15844:6;15840:15;15833:42;15648:234;:::o;15888:366::-;16030:3;16051:67;16115:2;16110:3;16051:67;:::i;:::-;16044:74;;16127:93;16216:3;16127:93;:::i;:::-;16245:2;16240:3;16236:12;16229:19;;15888:366;;;:::o;16260:419::-;16426:4;16464:2;16453:9;16449:18;16441:26;;16513:9;16507:4;16503:20;16499:1;16488:9;16484:17;16477:47;16541:131;16667:4;16541:131;:::i;:::-;16533:139;;16260:419;;;:::o;16685:226::-;16825:34;16821:1;16813:6;16809:14;16802:58;16894:9;16889:2;16881:6;16877:15;16870:34;16685:226;:::o;16917:366::-;17059:3;17080:67;17144:2;17139:3;17080:67;:::i;:::-;17073:74;;17156:93;17245:3;17156:93;:::i;:::-;17274:2;17269:3;17265:12;17258:19;;16917:366;;;:::o;17289:419::-;17455:4;17493:2;17482:9;17478:18;17470:26;;17542:9;17536:4;17532:20;17528:1;17517:9;17513:17;17506:47;17570:131;17696:4;17570:131;:::i;:::-;17562:139;;17289:419;;;:::o;17714:332::-;17835:4;17873:2;17862:9;17858:18;17850:26;;17886:71;17954:1;17943:9;17939:17;17930:6;17886:71;:::i;:::-;17967:72;18035:2;18024:9;18020:18;18011:6;17967:72;:::i;:::-;17714:332;;;;;:::o;18052:180::-;18100:77;18097:1;18090:88;18197:4;18194:1;18187:15;18221:4;18218:1;18211:15;18238:305;18278:3;18297:20;18315:1;18297:20;:::i;:::-;18292:25;;18331:20;18349:1;18331:20;:::i;:::-;18326:25;;18485:1;18417:66;18413:74;18410:1;18407:81;18404:107;;;18491:18;;:::i;:::-;18404:107;18535:1;18532;18528:9;18521:16;;18238:305;;;;:::o;18549:233::-;18588:3;18611:24;18629:5;18611:24;:::i;:::-;18602:33;;18657:66;18650:5;18647:77;18644:103;;;18727:18;;:::i;:::-;18644:103;18774:1;18767:5;18763:13;18756:20;;18549:233;;;:::o;18788:236::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:19;18992:2;18984:6;18980:15;18973:44;18788:236;:::o;19030:366::-;19172:3;19193:67;19257:2;19252:3;19193:67;:::i;:::-;19186:74;;19269:93;19358:3;19269:93;:::i;:::-;19387:2;19382:3;19378:12;19371:19;;19030:366;;;:::o;19402:419::-;19568:4;19606:2;19595:9;19591:18;19583:26;;19655:9;19649:4;19645:20;19641:1;19630:9;19626:17;19619:47;19683:131;19809:4;19683:131;:::i;:::-;19675:139;;19402:419;;;:::o;19827:771::-;20060:4;20098:3;20087:9;20083:19;20075:27;;20112:71;20180:1;20169:9;20165:17;20156:6;20112:71;:::i;:::-;20193:72;20261:2;20250:9;20246:18;20237:6;20193:72;:::i;:::-;20312:9;20306:4;20302:20;20297:2;20286:9;20282:18;20275:48;20340:86;20421:4;20412:6;20404;20340:86;:::i;:::-;20332:94;;20436:72;20504:2;20493:9;20489:18;20480:6;20436:72;:::i;:::-;20518:73;20586:3;20575:9;20571:19;20562:6;20518:73;:::i;:::-;19827:771;;;;;;;;;:::o;20604:220::-;20744:34;20740:1;20732:6;20728:14;20721:58;20813:3;20808:2;20800:6;20796:15;20789:28;20604:220;:::o;20830:366::-;20972:3;20993:67;21057:2;21052:3;20993:67;:::i;:::-;20986:74;;21069:93;21158:3;21069:93;:::i;:::-;21187:2;21182:3;21178:12;21171:19;;20830:366;;;:::o;21202:419::-;21368:4;21406:2;21395:9;21391:18;21383:26;;21455:9;21449:4;21445:20;21441:1;21430:9;21426:17;21419:47;21483:131;21609:4;21483:131;:::i;:::-;21475:139;;21202:419;;;:::o;21627:180::-;21675:77;21672:1;21665:88;21772:4;21769:1;21762:15;21796:4;21793:1;21786:15;21813:329;21872:6;21921:2;21909:9;21900:7;21896:23;21892:32;21889:119;;;21927:79;;:::i;:::-;21889:119;22047:1;22072:53;22117:7;22108:6;22097:9;22093:22;22072:53;:::i;:::-;22062:63;;22018:117;21813:329;;;;:::o;22148:117::-;22257:1;22254;22247:12;22271:117;22380:1;22377;22370:12;22394:117;22503:1;22500;22493:12;22517:724;22594:4;22600:6;22656:11;22643:25;22756:1;22750:4;22746:12;22735:8;22719:14;22715:29;22711:48;22691:18;22687:73;22677:168;;22764:79;;:::i;:::-;22677:168;22876:18;22866:8;22862:33;22854:41;;22928:4;22915:18;22905:28;;22956:18;22948:6;22945:30;22942:117;;;22978:79;;:::i;:::-;22942:117;23086:2;23080:4;23076:13;23068:21;;23143:4;23135:6;23131:17;23115:14;23111:38;23105:4;23101:49;23098:136;;;23153:79;;:::i;:::-;23098:136;22607:634;22517:724;;;;;:::o;23247:184::-;23346:11;23380:6;23375:3;23368:19;23420:4;23415:3;23411:14;23396:29;;23247:184;;;;:::o;23437:102::-;23506:4;23529:3;23521:11;;23437:102;;;:::o;23545:108::-;23622:24;23640:5;23622:24;:::i;:::-;23617:3;23610:37;23545:108;;:::o;23659:179::-;23728:10;23749:46;23791:3;23783:6;23749:46;:::i;:::-;23827:4;23822:3;23818:14;23804:28;;23659:179;;;;:::o;23844:122::-;23896:5;23921:39;23956:2;23951:3;23947:12;23942:3;23921:39;:::i;:::-;23912:48;;23844:122;;;;:::o;23972:115::-;24044:4;24076;24071:3;24067:14;24059:22;;23972:115;;;:::o;24123:699::-;24252:3;24275:86;24354:6;24349:3;24275:86;:::i;:::-;24268:93;;24385:58;24437:5;24385:58;:::i;:::-;24466:7;24497:1;24482:315;24507:6;24504:1;24501:13;24482:315;;;24577:42;24612:6;24603:7;24577:42;:::i;:::-;24639:63;24698:3;24683:13;24639:63;:::i;:::-;24632:70;;24725:62;24780:6;24725:62;:::i;:::-;24715:72;;24542:255;24529:1;24526;24522:9;24517:14;;24482:315;;;24486:14;24813:3;24806:10;;24257:565;;24123:699;;;;;:::o;24828:184::-;24927:11;24961:6;24956:3;24949:19;25001:4;24996:3;24992:14;24977:29;;24828:184;;;;:::o;25018:117::-;25127:1;25124;25117:12;25171:537;25299:3;25320:86;25399:6;25394:3;25320:86;:::i;:::-;25313:93;;25430:66;25422:6;25419:78;25416:165;;;25500:79;;:::i;:::-;25416:165;25612:4;25604:6;25600:17;25590:27;;25627:43;25663:6;25658:3;25651:5;25627:43;:::i;:::-;25695:6;25690:3;25686:16;25679:23;;25171:537;;;;;:::o;25714:193::-;25822:11;25856:6;25851:3;25844:19;25896:4;25891:3;25887:14;25872:29;;25714:193;;;;:::o;25913:113::-;25993:4;26016:3;26008:11;;25913:113;;;:::o;26032:158::-;26105:11;26139:6;26134:3;26127:19;26179:4;26174:3;26170:14;26155:29;;26032:158;;;;:::o;26218:281::-;26304:3;26325:60;26378:6;26373:3;26325:60;:::i;:::-;26318:67;;26395:43;26431:6;26426:3;26419:5;26395:43;:::i;:::-;26463:29;26485:6;26463:29;:::i;:::-;26458:3;26454:39;26447:46;;26218:281;;;;;:::o;26505:212::-;26602:10;26637:74;26707:3;26699:6;26691;26637:74;:::i;:::-;26623:88;;26505:212;;;;;:::o;26723:117::-;26832:1;26829;26822:12;26846:117;26955:1;26952;26945:12;26969:117;27078:1;27075;27068:12;27092:714;27156:5;27163:6;27219:3;27206:17;27311:1;27305:4;27301:12;27290:8;27274:14;27270:29;27266:48;27246:18;27242:73;27232:168;;27319:79;;:::i;:::-;27232:168;27442:8;27422:18;27418:33;27409:42;;27484:5;27471:19;27461:29;;27519:4;27512:5;27508:16;27499:25;;27547:18;27539:6;27536:30;27533:117;;;27569:79;;:::i;:::-;27533:117;27708:4;27700:6;27696:17;27680:14;27676:38;27666:8;27662:53;27659:140;;;27718:79;;:::i;:::-;27659:140;27170:636;27092:714;;;;;:::o;27812:126::-;27895:4;27927;27922:3;27918:14;27910:22;;27812:126;;;:::o;27970:990::-;28119:3;28142:95;28230:6;28225:3;28142:95;:::i;:::-;28135:102;;28263:3;28308:4;28300:6;28296:17;28291:3;28287:27;28338:69;28401:5;28338:69;:::i;:::-;28430:7;28461:1;28446:469;28471:6;28468:1;28465:13;28446:469;;;28542:9;28536:4;28532:20;28527:3;28520:33;28602:53;28648:6;28639:7;28602:53;:::i;:::-;28676:99;28770:4;28755:13;28740;28676:99;:::i;:::-;28668:107;;28798:73;28864:6;28798:73;:::i;:::-;28788:83;;28900:4;28895:3;28891:14;28884:21;;28506:409;;28493:1;28490;28486:9;28481:14;;28446:469;;;28450:14;28931:4;28924:11;;28951:3;28944:10;;28124:836;;;;27970:990;;;;;:::o;28966:1217::-;29371:4;29409:3;29398:9;29394:19;29386:27;;29459:9;29453:4;29449:20;29445:1;29434:9;29430:17;29423:47;29487:118;29600:4;29591:6;29583;29487:118;:::i;:::-;29479:126;;29652:9;29646:4;29642:20;29637:2;29626:9;29622:18;29615:48;29680:118;29793:4;29784:6;29776;29680:118;:::i;:::-;29672:126;;29845:9;29839:4;29835:20;29830:2;29819:9;29815:18;29808:48;29873:138;30006:4;29997:6;29989;29873:138;:::i;:::-;29865:146;;30021:72;30089:2;30078:9;30074:18;30065:6;30021:72;:::i;:::-;30103:73;30171:3;30160:9;30156:19;30147:6;30103:73;:::i;:::-;28966:1217;;;;;;;;;;;:::o;30189:234::-;30329:34;30325:1;30317:6;30313:14;30306:58;30398:17;30393:2;30385:6;30381:15;30374:42;30189:234;:::o;30429:366::-;30571:3;30592:67;30656:2;30651:3;30592:67;:::i;:::-;30585:74;;30668:93;30757:3;30668:93;:::i;:::-;30786:2;30781:3;30777:12;30770:19;;30429:366;;;:::o;30801:419::-;30967:4;31005:2;30994:9;30990:18;30982:26;;31054:9;31048:4;31044:20;31040:1;31029:9;31025:17;31018:47;31082:131;31208:4;31082:131;:::i;:::-;31074:139;;30801:419;;;:::o;31226:148::-;31328:11;31365:3;31350:18;;31226:148;;;;:::o;31380:173::-;31520:25;31516:1;31508:6;31504:14;31497:49;31380:173;:::o;31559:402::-;31719:3;31740:85;31822:2;31817:3;31740:85;:::i;:::-;31733:92;;31834:93;31923:3;31834:93;:::i;:::-;31952:2;31947:3;31943:12;31936:19;;31559:402;;;:::o;31967:99::-;32019:6;32053:5;32047:12;32037:22;;31967:99;;;:::o;32072:307::-;32140:1;32150:113;32164:6;32161:1;32158:13;32150:113;;;32249:1;32244:3;32240:11;32234:18;32230:1;32225:3;32221:11;32214:39;32186:2;32183:1;32179:10;32174:15;;32150:113;;;32281:6;32278:1;32275:13;32272:101;;;32361:1;32352:6;32347:3;32343:16;32336:27;32272:101;32121:258;32072:307;;;:::o;32385:377::-;32491:3;32519:39;32552:5;32519:39;:::i;:::-;32574:89;32656:6;32651:3;32574:89;:::i;:::-;32567:96;;32672:52;32717:6;32712:3;32705:4;32698:5;32694:16;32672:52;:::i;:::-;32749:6;32744:3;32740:16;32733:23;;32495:267;32385:377;;;;:::o;32768:167::-;32908:19;32904:1;32896:6;32892:14;32885:43;32768:167;:::o;32941:402::-;33101:3;33122:85;33204:2;33199:3;33122:85;:::i;:::-;33115:92;;33216:93;33305:3;33216:93;:::i;:::-;33334:2;33329:3;33325:12;33318:19;;32941:402;;;:::o;33349:967::-;33731:3;33753:148;33897:3;33753:148;:::i;:::-;33746:155;;33918:95;34009:3;34000:6;33918:95;:::i;:::-;33911:102;;34030:148;34174:3;34030:148;:::i;:::-;34023:155;;34195:95;34286:3;34277:6;34195:95;:::i;:::-;34188:102;;34307:3;34300:10;;33349:967;;;;;:::o;34322:364::-;34410:3;34438:39;34471:5;34438:39;:::i;:::-;34493:71;34557:6;34552:3;34493:71;:::i;:::-;34486:78;;34573:52;34618:6;34613:3;34606:4;34599:5;34595:16;34573:52;:::i;:::-;34650:29;34672:6;34650:29;:::i;:::-;34645:3;34641:39;34634:46;;34414:272;34322:364;;;;:::o;34692:313::-;34805:4;34843:2;34832:9;34828:18;34820:26;;34892:9;34886:4;34882:20;34878:1;34867:9;34863:17;34856:47;34920:78;34993:4;34984:6;34920:78;:::i;:::-;34912:86;;34692:313;;;;:::o;35011:232::-;35151:34;35147:1;35139:6;35135:14;35128:58;35220:15;35215:2;35207:6;35203:15;35196:40;35011:232;:::o;35249:366::-;35391:3;35412:67;35476:2;35471:3;35412:67;:::i;:::-;35405:74;;35488:93;35577:3;35488:93;:::i;:::-;35606:2;35601:3;35597:12;35590:19;;35249:366;;;:::o;35621:419::-;35787:4;35825:2;35814:9;35810:18;35802:26;;35874:9;35868:4;35864:20;35860:1;35849:9;35845:17;35838:47;35902:131;36028:4;35902:131;:::i;:::-;35894:139;;35621:419;;;:::o;36046:223::-;36186:34;36182:1;36174:6;36170:14;36163:58;36255:6;36250:2;36242:6;36238:15;36231:31;36046:223;:::o;36275:366::-;36417:3;36438:67;36502:2;36497:3;36438:67;:::i;:::-;36431:74;;36514:93;36603:3;36514:93;:::i;:::-;36632:2;36627:3;36623:12;36616:19;;36275:366;;;:::o;36647:419::-;36813:4;36851:2;36840:9;36836:18;36828:26;;36900:9;36894:4;36890:20;36886:1;36875:9;36871:17;36864:47;36928:131;37054:4;36928:131;:::i;:::-;36920:139;;36647:419;;;:::o;37072:227::-;37212:34;37208:1;37200:6;37196:14;37189:58;37281:10;37276:2;37268:6;37264:15;37257:35;37072:227;:::o;37305:366::-;37447:3;37468:67;37532:2;37527:3;37468:67;:::i;:::-;37461:74;;37544:93;37633:3;37544:93;:::i;:::-;37662:2;37657:3;37653:12;37646:19;;37305:366;;;:::o;37677:419::-;37843:4;37881:2;37870:9;37866:18;37858:26;;37930:9;37924:4;37920:20;37916:1;37905:9;37901:17;37894:47;37958:131;38084:4;37958:131;:::i;:::-;37950:139;;37677:419;;;:::o;38102:247::-;38242:34;38238:1;38230:6;38226:14;38219:58;38311:30;38306:2;38298:6;38294:15;38287:55;38102:247;:::o;38355:366::-;38497:3;38518:67;38582:2;38577:3;38518:67;:::i;:::-;38511:74;;38594:93;38683:3;38594:93;:::i;:::-;38712:2;38707:3;38703:12;38696:19;;38355:366;;;:::o;38727:419::-;38893:4;38931:2;38920:9;38916:18;38908:26;;38980:9;38974:4;38970:20;38966:1;38955:9;38951:17;38944:47;39008:131;39134:4;39008:131;:::i;:::-;39000:139;;38727:419;;;:::o;39152:223::-;39292:34;39288:1;39280:6;39276:14;39269:58;39361:6;39356:2;39348:6;39344:15;39337:31;39152:223;:::o;39381:366::-;39523:3;39544:67;39608:2;39603:3;39544:67;:::i;:::-;39537:74;;39620:93;39709:3;39620:93;:::i;:::-;39738:2;39733:3;39729:12;39722:19;;39381:366;;;:::o;39753:419::-;39919:4;39957:2;39946:9;39942:18;39934:26;;40006:9;40000:4;39996:20;39992:1;39981:9;39977:17;39970:47;40034:131;40160:4;40034:131;:::i;:::-;40026:139;;39753:419;;;:::o;40178:147::-;40279:11;40316:3;40301:18;;40178:147;;;;:::o;40353:314::-;40467:3;40488:88;40569:6;40564:3;40488:88;:::i;:::-;40481:95;;40586:43;40622:6;40617:3;40610:5;40586:43;:::i;:::-;40654:6;40649:3;40645:16;40638:23;;40353:314;;;;;:::o;40673:291::-;40813:3;40835:103;40934:3;40925:6;40917;40835:103;:::i;:::-;40828:110;;40955:3;40948:10;;40673:291;;;;;:::o;40970:236::-;41110:34;41106:1;41098:6;41094:14;41087:58;41179:19;41174:2;41166:6;41162:15;41155:44;40970:236;:::o;41212:366::-;41354:3;41375:67;41439:2;41434:3;41375:67;:::i;:::-;41368:74;;41451:93;41540:3;41451:93;:::i;:::-;41569:2;41564:3;41560:12;41553:19;;41212:366;;;:::o;41584:419::-;41750:4;41788:2;41777:9;41773:18;41765:26;;41837:9;41831:4;41827:20;41823:1;41812:9;41808:17;41801:47;41865:131;41991:4;41865:131;:::i;:::-;41857:139;;41584:419;;;:::o;42009:549::-;42186:4;42224:2;42213:9;42209:18;42201:26;;42237:71;42305:1;42294:9;42290:17;42281:6;42237:71;:::i;:::-;42318:72;42386:2;42375:9;42371:18;42362:6;42318:72;:::i;:::-;42437:9;42431:4;42427:20;42422:2;42411:9;42407:18;42400:48;42465:86;42546:4;42537:6;42529;42465:86;:::i;:::-;42457:94;;42009:549;;;;;;;:::o;42564:348::-;42604:7;42627:20;42645:1;42627:20;:::i;:::-;42622:25;;42661:20;42679:1;42661:20;:::i;:::-;42656:25;;42849:1;42781:66;42777:74;42774:1;42771:81;42766:1;42759:9;42752:17;42748:105;42745:131;;;42856:18;;:::i;:::-;42745:131;42904:1;42901;42897:9;42886:20;;42564:348;;;;:::o;42918:180::-;42966:77;42963:1;42956:88;43063:4;43060:1;43053:15;43087:4;43084:1;43077:15;43104:171;43143:3;43166:24;43184:5;43166:24;:::i;:::-;43157:33;;43212:4;43205:5;43202:15;43199:41;;;43220:18;;:::i;:::-;43199:41;43267:1;43260:5;43256:13;43249:20;;43104:171;;;:::o;43281:182::-;43421:34;43417:1;43409:6;43405:14;43398:58;43281:182;:::o;43469:366::-;43611:3;43632:67;43696:2;43691:3;43632:67;:::i;:::-;43625:74;;43708:93;43797:3;43708:93;:::i;:::-;43826:2;43821:3;43817:12;43810:19;;43469:366;;;:::o;43841:419::-;44007:4;44045:2;44034:9;44030:18;44022:26;;44094:9;44088:4;44084:20;44080:1;44069:9;44065:17;44058:47;44122:131;44248:4;44122:131;:::i;:::-;44114:139;;43841:419;;;:::o;44266:191::-;44306:4;44326:20;44344:1;44326:20;:::i;:::-;44321:25;;44360:20;44378:1;44360:20;:::i;:::-;44355:25;;44399:1;44396;44393:8;44390:34;;;44404:18;;:::i;:::-;44390:34;44449:1;44446;44442:9;44434:17;;44266:191;;;;:::o;44463:180::-;44511:77;44508:1;44501:88;44608:4;44605:1;44598:15;44632:4;44629:1;44622:15", - "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\n\n/**\n * MultiSigWallet with timelocker\n */\ncontract BEMultiSigWallet is AccessControlEnumerable {\n bytes32 public constant TIMELOCK_ADMIN_ROLE =\n keccak256(\"TIMELOCK_ADMIN_ROLE\");\n bytes32 public constant PROPOSER_ROLE = keccak256(\"PROPOSER_ROLE\");\n bytes32 public constant EXECUTOR_ROLE = keccak256(\"EXECUTOR_ROLE\");\n uint256 internal constant _DONE_TIMESTAMP = uint256(1);\n\n mapping(bytes32 => uint256) private _timestamps;\n mapping(bytes32 => mapping(address => bool)) public confirmations;\n uint256 public minDelay;\n uint256 public required;\n\n /**\n * @dev Emitted when a call is scheduled as part of operation `id`.\n */\n event CallScheduled(\n bytes32 indexed id,\n uint256 indexed index,\n address target,\n uint256 value,\n bytes data,\n bytes32 predecessor,\n uint256 delay\n );\n\n /**\n * @dev Emitted when a call is performed as part of operation `id`.\n */\n event CallExecuted(\n bytes32 indexed id,\n uint256 indexed index,\n address target,\n uint256 value,\n bytes data\n );\n\n /**\n * @dev Emitted when operation `id` is cancelled.\n */\n event Cancelled(bytes32 indexed id);\n\n event Confirmation(address indexed sender, bytes32 id);\n\n event Revocation(address indexed sender, bytes32 id);\n\n /**\n * @dev Emitted when the minimum delay for future operations is modified.\n */\n event MinDelayChange(uint256 oldDuration, uint256 newDuration);\n /**\n * @dev Emitted when the number of required confimations is modified.\n */\n event RequirementChange(uint256 oldDuration, uint256 newDuration);\n\n modifier onlyWallet() {\n require(\n msg.sender == address(this),\n \"BEMultiSigWallet: caller must be wallet\"\n );\n _;\n }\n\n /**\n * @dev Initializes the contract with a given `minDelay`.\n */\n constructor(\n uint256 _minDelay,\n address[] memory proposers,\n address[] memory executors\n ) {\n _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE);\n _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE);\n _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE);\n\n // deployer + self administration\n _setupRole(TIMELOCK_ADMIN_ROLE, _msgSender());\n _setupRole(TIMELOCK_ADMIN_ROLE, address(this));\n\n // register proposers\n for (uint256 i = 0; i < proposers.length; ++i) {\n _setupRole(PROPOSER_ROLE, proposers[i]);\n }\n\n // register executors\n for (uint256 i = 0; i < executors.length; ++i) {\n _setupRole(EXECUTOR_ROLE, executors[i]);\n }\n\n minDelay = _minDelay;\n emit MinDelayChange(0, minDelay);\n }\n\n /**\n * @dev Modifier to make a function callable only by a certain role. In\n * addition to checking the sender's role, `address(0)` 's role is also\n * considered. Granting a role to `address(0)` is equivalent to enabling\n * this role for everyone.\n */\n modifier onlyRoleOrOpenRole(bytes32 role) {\n if (!hasRole(role, address(0))) {\n _checkRole(role, _msgSender());\n }\n _;\n }\n\n /**\n * @dev Contract might receive/hold ETH as part of the maintenance process.\n */\n receive() external payable {}\n\n /**\n * @dev Returns whether an id correspond to a registered operation. This\n * includes both Pending, Ready and Done operations.\n */\n function isOperation(bytes32 id) public view virtual returns (bool pending) {\n return getTimestamp(id) > 0;\n }\n\n /**\n * @dev Returns whether an operation is pending or not.\n */\n function isOperationPending(bytes32 id)\n public\n view\n virtual\n returns (bool pending)\n {\n return getTimestamp(id) > _DONE_TIMESTAMP;\n }\n\n function isConfirmed(bytes32 id) public view returns (bool ready) {\n uint256 count = 0;\n uint256 executorCount = getRoleMemberCount(EXECUTOR_ROLE);\n for (uint256 i = 0; i < executorCount; i++) {\n if (confirmations[id][getRoleMember(EXECUTOR_ROLE, i)]) count += 1;\n if (count == required) return true;\n }\n }\n\n /**\n * @dev Returns whether an operation is ready or not.\n */\n function isOperationReady(bytes32 id)\n public\n view\n virtual\n returns (bool ready)\n {\n uint256 timestamp = getTimestamp(id);\n return timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp;\n }\n\n /**\n * @dev Returns whether an operation is done or not.\n */\n function isOperationDone(bytes32 id) public view virtual returns (bool done) {\n return getTimestamp(id) == _DONE_TIMESTAMP;\n }\n\n /**\n * @dev Returns the timestamp at with an operation becomes ready (0 for\n * unset operations, 1 for done operations).\n */\n function getTimestamp(bytes32 id)\n public\n view\n virtual\n returns (uint256 timestamp)\n {\n return _timestamps[id];\n }\n\n /**\n * @dev Returns the identifier of an operation containing a single\n * transaction.\n */\n function hashOperation(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt\n ) public pure virtual returns (bytes32 hash) {\n return keccak256(abi.encode(target, value, data, predecessor, salt));\n }\n\n /**\n * @dev Returns the identifier of an operation containing a batch of\n * transactions.\n */\n function hashOperationBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt\n ) public pure virtual returns (bytes32 hash) {\n return keccak256(abi.encode(targets, values, datas, predecessor, salt));\n }\n\n /**\n * @dev Schedule an operation containing a single transaction.\n *\n * Emits a {CallScheduled} event.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function schedule(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt,\n uint256 delay\n ) public virtual onlyRole(PROPOSER_ROLE) {\n bytes32 id = hashOperation(target, value, data, predecessor, salt);\n _schedule(id, delay);\n emit CallScheduled(id, 0, target, value, data, predecessor, delay);\n }\n\n /**\n * @dev Schedule an operation containing a batch of transactions.\n *\n * Emits one {CallScheduled} event per transaction in the batch.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function scheduleBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt,\n uint256 delay\n ) public virtual onlyRole(PROPOSER_ROLE) {\n require(\n targets.length == values.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n require(\n targets.length == datas.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n\n bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt);\n _schedule(id, delay);\n for (uint256 i = 0; i < targets.length; ++i) {\n emit CallScheduled(\n id,\n i,\n targets[i],\n values[i],\n datas[i],\n predecessor,\n delay\n );\n }\n }\n\n /**\n * @dev Schedule an operation that is to becomes valid after a given delay.\n */\n function _schedule(bytes32 id, uint256 delay) private {\n require(!isOperation(id), \"BEMultiSigWallet: operation already scheduled\");\n require(delay >= minDelay, \"BEMultiSigWallet: insufficient delay\");\n _timestamps[id] = block.timestamp + delay;\n }\n\n /**\n * @dev Cancel an operation.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function cancel(bytes32 id) public virtual onlyRole(PROPOSER_ROLE) {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation cannot be cancelled\"\n );\n delete _timestamps[id];\n\n emit Cancelled(id);\n }\n\n /**\n * @dev Allows an executor to confirm a transaction.\n * Requirements\n * - the caller must have the 'executor' role.\n */\n function confirmTransaction(bytes32 id)\n public\n onlyRoleOrOpenRole(EXECUTOR_ROLE)\n {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation not exist or finished\"\n );\n confirmations[id][msg.sender] = true;\n emit Confirmation(msg.sender, id);\n }\n\n /**\n * @dev Allows an executor to revoke a confirmation for a transaction.\n * Requirements\n * - the caller must have the 'executor' role.\n */\n function revokeConfirmation(bytes32 id)\n public\n onlyRoleOrOpenRole(EXECUTOR_ROLE)\n {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation not exist or finished\"\n );\n confirmations[id][msg.sender] = false;\n emit Revocation(msg.sender, id);\n }\n\n /**\n * @dev Execute an (ready) operation containing a single transaction.\n *\n * Emits a {CallExecuted} event.\n *\n * Requirements:\n *\n * - the caller must have the 'executor' role.\n */\n function execute(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt\n ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n bytes32 id = hashOperation(target, value, data, predecessor, salt);\n _beforeCall(id, predecessor);\n _call(id, 0, target, value, data);\n _afterCall(id);\n }\n\n /**\n * @dev Execute an (ready) operation containing a batch of transactions.\n *\n * Emits one {CallExecuted} event per transaction in the batch.\n *\n * Requirements:\n *\n * - the caller must have the 'executor' role.\n */\n function executeBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt\n ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n require(\n targets.length == values.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n require(\n targets.length == datas.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n\n bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt);\n _beforeCall(id, predecessor);\n for (uint256 i = 0; i < targets.length; ++i) {\n _call(id, i, targets[i], values[i], datas[i]);\n }\n _afterCall(id);\n }\n\n /**\n * @dev Checks before execution of an operation's calls.\n */\n function _beforeCall(bytes32 id, bytes32 predecessor) private view {\n require(isOperationReady(id), \"BEMultiSigWallet: operation is not ready\");\n require(\n isConfirmed(id),\n \"BEMultiSigWallet: operation not reach required confirmations\"\n );\n require(\n predecessor == bytes32(0) || isOperationDone(predecessor),\n \"BEMultiSigWallet: missing dependency\"\n );\n }\n\n /**\n * @dev Checks after execution of an operation's calls.\n */\n function _afterCall(bytes32 id) private {\n require(isOperationReady(id), \"BEMultiSigWallet: operation is not ready\");\n _timestamps[id] = _DONE_TIMESTAMP;\n }\n\n /**\n * @dev Execute an operation's call.\n *\n * Emits a {CallExecuted} event.\n */\n function _call(\n bytes32 id,\n uint256 index,\n address target,\n uint256 value,\n bytes calldata data\n ) private {\n (bool success, ) = target.call{value: value}(data);\n require(success, \"BEMultiSigWallet: underlying transaction reverted\");\n\n emit CallExecuted(id, index, target, value, data);\n }\n\n /**\n * @dev Changes the minimum wallet duration for future operations.\n *\n * Emits a {MinDelayChange} event.\n *\n * Requirements:\n *\n * - the caller must be the wallet itself. This can only be achieved by scheduling and later executing\n * an operation where the wallet is the target and the data is the ABI-encoded call to this function.\n */\n function changeDelay(uint256 _minDelay) external virtual onlyWallet {\n emit MinDelayChange(minDelay, _minDelay);\n minDelay = _minDelay;\n }\n\n /**\n * @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.\n * @param _required Number of required confirmations.\n */\n function changeRequirement(uint256 _required) external virtual onlyWallet {\n emit RequirementChange(required, _required);\n required = _required;\n }\n}\n", + "sourceMap": "168:11847:9:-:0;;;1901:752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2010:55;275:32;;2010:13;;;:55;;:::i;:::-;2071:49;351:26;275:32;2071:13;;;:49;;:::i;:::-;2126;421:26;275:32;2126:13;;;:49;;:::i;:::-;2220:45;275:32;2252:12;:10;;;:12;;:::i;:::-;2220:10;;;:45;;:::i;:::-;2271:46;275:32;2311:4;2271:10;;;:46;;:::i;:::-;2355:9;2350:101;2374:9;:16;2370:1;:20;2350:101;;;2405:39;351:26;2431:9;2441:1;2431:12;;;;;;;;:::i;:::-;;;;;;;;2405:10;;;:39;;:::i;:::-;2392:3;;;;:::i;:::-;;;2350:101;;;;2488:9;2483:101;2507:9;:16;2503:1;:20;2483:101;;;2538:39;421:26;2564:9;2574:1;2564:12;;;;;;;;:::i;:::-;;;;;;;;2538:10;;;:39;;:::i;:::-;2525:3;;;;:::i;:::-;;;2483:101;;;;2601:9;2590:8;:20;;;;2621:27;2636:1;2639:8;;2621:27;;;;;;;:::i;:::-;;;;;;;;1901:752;;;168:11847;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;6257:110:0:-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;;;:31;;;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:8:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;;;:50;;:::i;:::-;7698:57;;7612:150;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:404:8:-;1760:4;1781:21;1791:3;1796:5;1781:9;;;:21;;:::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;7:75:10:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:117::-;803:1;800;793:12;817:102;858:6;909:2;905:7;900:2;893:5;889:14;885:28;875:38;;817:102;;;:::o;925:180::-;973:77;970:1;963:88;1070:4;1067:1;1060:15;1094:4;1091:1;1084:15;1111:281;1194:27;1216:4;1194:27;:::i;:::-;1186:6;1182:40;1324:6;1312:10;1309:22;1288:18;1276:10;1273:34;1270:62;1267:88;;;1335:18;;:::i;:::-;1267:88;1375:10;1371:2;1364:22;1154:238;1111:281;;:::o;1398:129::-;1432:6;1459:20;;:::i;:::-;1449:30;;1488:33;1516:4;1508:6;1488:33;:::i;:::-;1398:129;;;:::o;1533:311::-;1610:4;1700:18;1692:6;1689:30;1686:56;;;1722:18;;:::i;:::-;1686:56;1772:4;1764:6;1760:17;1752:25;;1832:4;1826;1822:15;1814:23;;1533:311;;;:::o;1850:117::-;1959:1;1956;1949:12;1973:126;2010:7;2050:42;2043:5;2039:54;2028:65;;1973:126;;;:::o;2105:96::-;2142:7;2171:24;2189:5;2171:24;:::i;:::-;2160:35;;2105:96;;;:::o;2207:122::-;2280:24;2298:5;2280:24;:::i;:::-;2273:5;2270:35;2260:63;;2319:1;2316;2309:12;2260:63;2207:122;:::o;2335:143::-;2392:5;2423:6;2417:13;2408:22;;2439:33;2466:5;2439:33;:::i;:::-;2335:143;;;;:::o;2501:732::-;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:1069::-;3785:6;3793;3801;3850:2;3838:9;3829:7;3825:23;3821:32;3818:119;;;3856:79;;:::i;:::-;3818:119;3976:1;4001:64;4057:7;4048:6;4037:9;4033:22;4001:64;:::i;:::-;3991:74;;3947:128;4135:2;4124:9;4120:18;4114:25;4166:18;4158:6;4155:30;4152:117;;;4188:79;;:::i;:::-;4152:117;4293:89;4374:7;4365:6;4354:9;4350:22;4293:89;:::i;:::-;4283:99;;4085:307;4452:2;4441:9;4437:18;4431:25;4483:18;4475:6;4472:30;4469:117;;;4505:79;;:::i;:::-;4469:117;4610:89;4691:7;4682:6;4671:9;4667:22;4610:89;:::i;:::-;4600:99;;4402:307;3647:1069;;;;;:::o;4722:180::-;4770:77;4767:1;4760:88;4867:4;4864:1;4857:15;4891:4;4888:1;4881:15;4908:180;4956:77;4953:1;4946:88;5053:4;5050:1;5043:15;5077:4;5074:1;5067:15;5094:233;5133:3;5156:24;5174:5;5156:24;:::i;:::-;5147:33;;5202:66;5195:5;5192:77;5189:103;;;5272:18;;:::i;:::-;5189:103;5319:1;5312:5;5308:13;5301:20;;5094:233;;;:::o;5333:85::-;5378:7;5407:5;5396:16;;5333:85;;;:::o;5424:60::-;5452:3;5473:5;5466:12;;5424:60;;;:::o;5490:158::-;5548:9;5581:61;5599:42;5608:32;5634:5;5608:32;:::i;:::-;5599:42;:::i;:::-;5581:61;:::i;:::-;5568:74;;5490:158;;;:::o;5654:147::-;5749:45;5788:5;5749:45;:::i;:::-;5744:3;5737:58;5654:147;;:::o;5807:118::-;5894:24;5912:5;5894:24;:::i;:::-;5889:3;5882:37;5807:118;;:::o;5931:348::-;6060:4;6098:2;6087:9;6083:18;6075:26;;6111:79;6187:1;6176:9;6172:17;6163:6;6111:79;:::i;:::-;6200:72;6268:2;6257:9;6253:18;6244:6;6200:72;:::i;:::-;5931:348;;;;;:::o;168:11847:9:-;;;;;;;", + "deployedSourceMap": "168:11847:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;634:212:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;381:66:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;561:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;225:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8793:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4062:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4008:129:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4339:130:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3326:114:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:214:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11539:145:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3514:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3661:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7866:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4832:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6281:739;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;311:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1431:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5194:291:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11859:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7497:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;630:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4606:123:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;657:23:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9388:668;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8305:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5685:362;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;5878:10:9::1;5891:53;5905:6;5913:5;5920:4;;5926:11;5939:4;5891:13;:53::i;:::-;5878:66;;5950:20;5960:2;5964:5;5950:9;:20::i;:::-;5999:1;5995:2;5981:61;6002:6;6010:5;6017:4;;6023:11;6036:5;5981:61;;;;;;;;;;;:::i;:::-;;;;;;;;5872:175;5685:362:::0;;;;;;;;:::o;634:212:1:-;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;381:66:9:-;421:26;381:66;:::o;561:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;225:82::-;275:32;225:82;:::o;8793:355::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;8984:10:::1;8997:53;9011:6;9019:5;9026:4;;9032:11;9045:4;8997:13;:53::i;:::-;8984:66;;9056:28;9068:2;9072:11;9056;:28::i;:::-;9090:33;9096:2;9100:1;9103:6;9111:5;9118:4;;9090:5;:33::i;:::-;9129:14;9140:2;9129:10;:14::i;:::-;8978:170;8793:355:::0;;;;;;;:::o;4062:206::-;4137:10;4155:17;4175:16;4188:2;4175:12;:16::i;:::-;4155:36;;503:1;4204:9;:27;:59;;;;;4248:15;4235:9;:28;;4204:59;4197:66;;;4062:206;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4339:130:9:-;4405:9;503:1;4429:16;4442:2;4429:12;:16::i;:::-;:35;4422:42;;4339:130;;;:::o;4387:145:0:-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;3326:114:9:-;3388:12;3434:1;3415:16;3428:2;3415:12;:16::i;:::-;:20;3408:27;;3326:114;;;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;11539:145:9:-;1753:4;1731:27;;:10;:27;;;1716:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11618:35:::1;11633:8;;11643:9;11618:35;;;;;;;:::i;:::-;;;;;;;;11670:9;11659:8;:20;;;;11539:145:::0;:::o;3514:143::-;3591:12;503:1;3618:16;3631:2;3618:12;:16::i;:::-;:34;3611:41;;3514:143;;;:::o;3661:329::-;3715:10;3733:13;3749:1;3733:17;;3756:21;3780:33;421:26;3780:18;:33::i;:::-;3756:57;;3824:9;3819:167;3843:13;3839:1;:17;3819:167;;;3875:13;:17;3889:2;3875:17;;;;;;;;;;;:50;3893:31;421:26;3922:1;3893:13;:31::i;:::-;3875:50;;;;;;;;;;;;;;;;;;;;;;;;;3871:66;;;3936:1;3927:10;;;;;:::i;:::-;;;3871:66;3958:8;;3949:5;:17;3945:34;;;3975:4;3968:11;;;;;;;3945:34;3858:3;;;;;:::i;:::-;;;;3819:167;;;;3727:263;;3661:329;;;;:::o;7866:283::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;7976:22:::1;7995:2;7976:18;:22::i;:::-;7961:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8101:4;8069:13;:17;8083:2;8069:17;;;;;;;;;;;:29;8087:10;8069:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;8129:10;8116:28;;;8141:2;8116:28;;;;;;:::i;:::-;;;;;;;;7866:283:::0;;:::o;4832:256::-;4995:12;5043:6;5051:5;5058:4;;5064:11;5077:4;5032:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5022:61;;;;;;5015:68;;4832:256;;;;;;;;:::o;6281:739::-;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;6539:6:9::1;;:13;;6521:7;;:14;;:31;6506:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;6640:5;;:12;;6622:7;;:14;;:30;6607:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;6708:10;6721:61;6740:7;;6749:6;;6757:5;;6764:11;6777:4;6721:18;:61::i;:::-;6708:74;;6788:20;6798:2;6802:5;6788:9;:20::i;:::-;6819:9;6814:202;6838:7;;:14;;6834:1;:18;6814:202;;;6907:1;6895:2;6872:137;6918:7;;6926:1;6918:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6938:6;;6945:1;6938:9;;;;;;;:::i;:::-;;;;;;;;6957:5;;6963:1;6957:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;6975:11;6996:5;6872:137;;;;;;;;;;;:::i;:::-;;;;;;;;6854:3;;;;:::i;:::-;;;6814:202;;;;6500:520;6281:739:::0;;;;;;;;;;:::o;311:66::-;351:26;311:66;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;5194:291:9:-;5389:12;5437:7;;5446:6;;5454:5;;5461:11;5474:4;5426:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5416:64;;;;;;5409:71;;5194:291;;;;;;;;;;:::o;11859:154::-;1753:4;1731:27;;:10;:27;;;1716:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11944:38:::1;11962:8;;11972:9;11944:38;;;;;;;:::i;:::-;;;;;;;;11999:9;11988:8;:20;;;;11859:154:::0;:::o;7497:231::-;351:26;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;7585:22:9::1;7604:2;7585:18;:22::i;:::-;7570:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7683:11;:15;7695:2;7683:15;;;;;;;;;;;7676:22;;;7720:2;7710:13;;;;;;;;;;7497:231:::0;;:::o;630:23::-;;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;4606:123:9:-;4677:17;4709:11;:15;4721:2;4709:15;;;;;;;;;;;;4702:22;;4606:123;;;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;657:23:9:-;;;;:::o;9388:668::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;9644:6:::1;;:13;;9626:7;;:14;;:31;9611:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;9745:5;;:12;;9727:7;;:14;;:30;9712:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;9813:10;9826:61;9845:7;;9854:6;;9862:5;;9869:11;9882:4;9826:18;:61::i;:::-;9813:74;;9893:28;9905:2;9909:11;9893;:28::i;:::-;9932:9;9927:105;9951:7;;:14;;9947:1;:18;9927:105;;;9980:45;9986:2;9990:1;9993:7;;10001:1;9993:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10005:6;;10012:1;10005:9;;;;;;;:::i;:::-;;;;;;;;10016:5;;10022:1;10016:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;9980:5;:45::i;:::-;9967:3;;;;:::i;:::-;;;9927:105;;;;10037:14;10048:2;10037:10;:14::i;:::-;9605:451;9388:668:::0;;;;;;;;;:::o;8305:282::-;421:26;2974:25;2982:4;2996:1;2974:7;:25::i;:::-;2969:77;;3009:30;3020:4;3026:12;:10;:12::i;:::-;3009:10;:30::i;:::-;2969:77;8415:22:::1;8434:2;8415:18;:22::i;:::-;8400:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8540:5;8508:13;:17;8522:2;8508:17;;;;;;;;;;;:29;8526:10;8508:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8567:10;8556:26;;;8579:2;8556:26;;;;;;:::i;:::-;;;;;;;;8305:282:::0;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:8:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;:::o;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;7114:258:9:-;7183:15;7195:2;7183:11;:15::i;:::-;7182:16;7174:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7271:8;;7262:5;:17;;7254:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7362:5;7344:15;:23;;;;:::i;:::-;7326:11;:15;7338:2;7326:15;;;;;;;;;;;:41;;;;7114:258;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;10131:393:9:-;10212:20;10229:2;10212:16;:20::i;:::-;10204:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10298:15;10310:2;10298:11;:15::i;:::-;10283:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;10433:1;10425:10;;10410:11;:25;:57;;;;10439:28;10455:11;10439:15;:28::i;:::-;10410:57;10395:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:393;;:::o;10856:318::-;10989:12;11007:6;:11;;11026:5;11033:4;;11007:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10988:50;;;11052:7;11044:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11142:5;11138:2;11125:44;11149:6;11157:5;11164:4;;11125:44;;;;;;;;;:::i;:::-;;;;;;;;10982:192;10856:318;;;;;;:::o;10598:163::-;10652:20;10669:2;10652:16;:20::i;:::-;10644:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;503:1;10723:11;:15;10735:2;10723:15;;;;;;;;;;;:33;;;;10598:163;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;8870:156:8:-;8944:7;8994:22;8998:3;:10;;9010:5;8994:3;:22::i;:::-;8986:31;;8963:56;;8870:156;;;;:::o;8413:115::-;8476:7;8502:19;8510:3;:10;;8502:7;:19::i;:::-;8495:26;;8413:115;;;:::o;1697:404::-;1760:4;1781:21;1791:3;1796:5;1781:9;:21::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;1588:441:5:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;829:155:6:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;7219:234:0:-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;7930:156:8:-;8003:4;8026:53;8034:3;:10;;8070:5;8054:23;;8046:32;;8026:7;:53::i;:::-;8019:60;;7930:156;;;;:::o;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;;4481:25;;4395:118;;;;:::o;3946:107::-;4002:7;4028:3;:11;;:18;;;;4021:25;;3946:107;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;2269:1388::-;2335:4;2451:18;2472:3;:12;;:19;2485:5;2472:19;;;;;;;;;;;;2451:40;;2520:1;2506:10;:15;2502:1149;;2875:21;2912:1;2899:10;:14;;;;:::i;:::-;2875:38;;2927:17;2968:1;2947:3;:11;;:18;;;;:22;;;;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3314:10;3288:3;:12;;:23;3301:9;3288:23;;;;;;;;;;;:36;;;;3016:366;2984:398;3460:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;2269:1388;;;;;:::o;88:117:10:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:117;1429:1;1426;1419:12;1443:117;1552:1;1549;1542:12;1579:552;1636:8;1646:6;1696:3;1689:4;1681:6;1677:17;1673:27;1663:122;;1704:79;;:::i;:::-;1663:122;1817:6;1804:20;1794:30;;1847:18;1839:6;1836:30;1833:117;;;1869:79;;:::i;:::-;1833:117;1983:4;1975:6;1971:17;1959:29;;2037:3;2029:4;2021:6;2017:17;2007:8;2003:32;2000:41;1997:128;;;2044:79;;:::i;:::-;1997:128;1579:552;;;;;:::o;2137:77::-;2174:7;2203:5;2192:16;;2137:77;;;:::o;2220:122::-;2293:24;2311:5;2293:24;:::i;:::-;2286:5;2283:35;2273:63;;2332:1;2329;2322:12;2273:63;2220:122;:::o;2348:139::-;2394:5;2432:6;2419:20;2410:29;;2448:33;2475:5;2448:33;:::i;:::-;2348:139;;;;:::o;2493:1255::-;2608:6;2616;2624;2632;2640;2648;2656;2705:3;2693:9;2684:7;2680:23;2676:33;2673:120;;;2712:79;;:::i;:::-;2673:120;2832:1;2857:53;2902:7;2893:6;2882:9;2878:22;2857:53;:::i;:::-;2847:63;;2803:117;2959:2;2985:53;3030:7;3021:6;3010:9;3006:22;2985:53;:::i;:::-;2975:63;;2930:118;3115:2;3104:9;3100:18;3087:32;3146:18;3138:6;3135:30;3132:117;;;3168:79;;:::i;:::-;3132:117;3281:64;3337:7;3328:6;3317:9;3313:22;3281:64;:::i;:::-;3263:82;;;;3058:297;3394:2;3420:53;3465:7;3456:6;3445:9;3441:22;3420:53;:::i;:::-;3410:63;;3365:118;3522:3;3549:53;3594:7;3585:6;3574:9;3570:22;3549:53;:::i;:::-;3539:63;;3493:119;3651:3;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3622:119;2493:1255;;;;;;;;;;:::o;3754:149::-;3790:7;3830:66;3823:5;3819:78;3808:89;;3754:149;;;:::o;3909:120::-;3981:23;3998:5;3981:23;:::i;:::-;3974:5;3971:34;3961:62;;4019:1;4016;4009:12;3961:62;3909:120;:::o;4035:137::-;4080:5;4118:6;4105:20;4096:29;;4134:32;4160:5;4134:32;:::i;:::-;4035:137;;;;:::o;4178:327::-;4236:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:119;;;4291:79;;:::i;:::-;4253:119;4411:1;4436:52;4480:7;4471:6;4460:9;4456:22;4436:52;:::i;:::-;4426:62;;4382:116;4178:327;;;;:::o;4511:90::-;4545:7;4588:5;4581:13;4574:21;4563:32;;4511:90;;;:::o;4607:109::-;4688:21;4703:5;4688:21;:::i;:::-;4683:3;4676:34;4607:109;;:::o;4722:210::-;4809:4;4847:2;4836:9;4832:18;4824:26;;4860:65;4922:1;4911:9;4907:17;4898:6;4860:65;:::i;:::-;4722:210;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:474::-;5358:6;5366;5415:2;5403:9;5394:7;5390:23;5386:32;5383:119;;;5421:79;;:::i;:::-;5383:119;5541:1;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5512:117;5668:2;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5639:118;5290:474;;;;;:::o;5770:1109::-;5876:6;5884;5892;5900;5908;5916;5965:3;5953:9;5944:7;5940:23;5936:33;5933:120;;;5972:79;;:::i;:::-;5933:120;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;6375:2;6364:9;6360:18;6347:32;6406:18;6398:6;6395:30;6392:117;;;6428:79;;:::i;:::-;6392:117;6541:64;6597:7;6588:6;6577:9;6573:22;6541:64;:::i;:::-;6523:82;;;;6318:297;6654:2;6680:53;6725:7;6716:6;6705:9;6701:22;6680:53;:::i;:::-;6670:63;;6625:118;6782:3;6809:53;6854:7;6845:6;6834:9;6830:22;6809:53;:::i;:::-;6799:63;;6753:119;5770:1109;;;;;;;;:::o;6885:329::-;6944:6;6993:2;6981:9;6972:7;6968:23;6964:32;6961:119;;;6999:79;;:::i;:::-;6961:119;7119:1;7144:53;7189:7;7180:6;7169:9;7165:22;7144:53;:::i;:::-;7134:63;;7090:117;6885:329;;;;:::o;7220:::-;7279:6;7328:2;7316:9;7307:7;7303:23;7299:32;7296:119;;;7334:79;;:::i;:::-;7296:119;7454:1;7479:53;7524:7;7515:6;7504:9;7500:22;7479:53;:::i;:::-;7469:63;;7425:117;7220:329;;;;:::o;7572:568::-;7645:8;7655:6;7705:3;7698:4;7690:6;7686:17;7682:27;7672:122;;7713:79;;:::i;:::-;7672:122;7826:6;7813:20;7803:30;;7856:18;7848:6;7845:30;7842:117;;;7878:79;;:::i;:::-;7842:117;7992:4;7984:6;7980:17;7968:29;;8046:3;8038:4;8030:6;8026:17;8016:8;8012:32;8009:41;8006:128;;;8053:79;;:::i;:::-;8006:128;7572:568;;;;;:::o;8163:::-;8236:8;8246:6;8296:3;8289:4;8281:6;8277:17;8273:27;8263:122;;8304:79;;:::i;:::-;8263:122;8417:6;8404:20;8394:30;;8447:18;8439:6;8436:30;8433:117;;;8469:79;;:::i;:::-;8433:117;8583:4;8575:6;8571:17;8559:29;;8637:3;8629:4;8621:6;8617:17;8607:8;8603:32;8600:41;8597:128;;;8644:79;;:::i;:::-;8597:128;8163:568;;;;;:::o;8752:579::-;8836:8;8846:6;8896:3;8889:4;8881:6;8877:17;8873:27;8863:122;;8904:79;;:::i;:::-;8863:122;9017:6;9004:20;8994:30;;9047:18;9039:6;9036:30;9033:117;;;9069:79;;:::i;:::-;9033:117;9183:4;9175:6;9171:17;9159:29;;9237:3;9229:4;9221:6;9217:17;9207:8;9203:32;9200:41;9197:128;;;9244:79;;:::i;:::-;9197:128;8752:579;;;;;:::o;9337:1769::-;9533:6;9541;9549;9557;9565;9573;9581;9589;9597;9646:3;9634:9;9625:7;9621:23;9617:33;9614:120;;;9653:79;;:::i;:::-;9614:120;9801:1;9790:9;9786:17;9773:31;9831:18;9823:6;9820:30;9817:117;;;9853:79;;:::i;:::-;9817:117;9966:80;10038:7;10029:6;10018:9;10014:22;9966:80;:::i;:::-;9948:98;;;;9744:312;10123:2;10112:9;10108:18;10095:32;10154:18;10146:6;10143:30;10140:117;;;10176:79;;:::i;:::-;10140:117;10289:80;10361:7;10352:6;10341:9;10337:22;10289:80;:::i;:::-;10271:98;;;;10066:313;10446:2;10435:9;10431:18;10418:32;10477:18;10469:6;10466:30;10463:117;;;10499:79;;:::i;:::-;10463:117;10612:91;10695:7;10686:6;10675:9;10671:22;10612:91;:::i;:::-;10594:109;;;;10389:324;10752:2;10778:53;10823:7;10814:6;10803:9;10799:22;10778:53;:::i;:::-;10768:63;;10723:118;10880:3;10907:53;10952:7;10943:6;10932:9;10928:22;10907:53;:::i;:::-;10897:63;;10851:119;11009:3;11036:53;11081:7;11072:6;11061:9;11057:22;11036:53;:::i;:::-;11026:63;;10980:119;9337:1769;;;;;;;;;;;:::o;11112:474::-;11180:6;11188;11237:2;11225:9;11216:7;11212:23;11208:32;11205:119;;;11243:79;;:::i;:::-;11205:119;11363:1;11388:53;11433:7;11424:6;11413:9;11409:22;11388:53;:::i;:::-;11378:63;;11334:117;11490:2;11516:53;11561:7;11552:6;11541:9;11537:22;11516:53;:::i;:::-;11506:63;;11461:118;11112:474;;;;;:::o;11592:118::-;11679:24;11697:5;11679:24;:::i;:::-;11674:3;11667:37;11592:118;;:::o;11716:222::-;11809:4;11847:2;11836:9;11832:18;11824:26;;11860:71;11928:1;11917:9;11913:17;11904:6;11860:71;:::i;:::-;11716:222;;;;:::o;11944:1623::-;12131:6;12139;12147;12155;12163;12171;12179;12187;12236:3;12224:9;12215:7;12211:23;12207:33;12204:120;;;12243:79;;:::i;:::-;12204:120;12391:1;12380:9;12376:17;12363:31;12421:18;12413:6;12410:30;12407:117;;;12443:79;;:::i;:::-;12407:117;12556:80;12628:7;12619:6;12608:9;12604:22;12556:80;:::i;:::-;12538:98;;;;12334:312;12713:2;12702:9;12698:18;12685:32;12744:18;12736:6;12733:30;12730:117;;;12766:79;;:::i;:::-;12730:117;12879:80;12951:7;12942:6;12931:9;12927:22;12879:80;:::i;:::-;12861:98;;;;12656:313;13036:2;13025:9;13021:18;13008:32;13067:18;13059:6;13056:30;13053:117;;;13089:79;;:::i;:::-;13053:117;13202:91;13285:7;13276:6;13265:9;13261:22;13202:91;:::i;:::-;13184:109;;;;12979:324;13342:2;13368:53;13413:7;13404:6;13393:9;13389:22;13368:53;:::i;:::-;13358:63;;13313:118;13470:3;13497:53;13542:7;13533:6;13522:9;13518:22;13497:53;:::i;:::-;13487:63;;13441:119;11944:1623;;;;;;;;;;;:::o;13573:118::-;13660:24;13678:5;13660:24;:::i;:::-;13655:3;13648:37;13573:118;;:::o;13697:222::-;13790:4;13828:2;13817:9;13813:18;13805:26;;13841:71;13909:1;13898:9;13894:17;13885:6;13841:71;:::i;:::-;13697:222;;;;:::o;13925:168::-;14008:11;14042:6;14037:3;14030:19;14082:4;14077:3;14073:14;14058:29;;13925:168;;;;:::o;14099:154::-;14183:6;14178:3;14173;14160:30;14245:1;14236:6;14231:3;14227:16;14220:27;14099:154;;;:::o;14259:102::-;14300:6;14351:2;14347:7;14342:2;14335:5;14331:14;14327:28;14317:38;;14259:102;;;:::o;14389:301::-;14485:3;14506:70;14569:6;14564:3;14506:70;:::i;:::-;14499:77;;14586:43;14622:6;14617:3;14610:5;14586:43;:::i;:::-;14654:29;14676:6;14654:29;:::i;:::-;14649:3;14645:39;14638:46;;14389:301;;;;;:::o;14696:771::-;14929:4;14967:3;14956:9;14952:19;14944:27;;14981:71;15049:1;15038:9;15034:17;15025:6;14981:71;:::i;:::-;15062:72;15130:2;15119:9;15115:18;15106:6;15062:72;:::i;:::-;15181:9;15175:4;15171:20;15166:2;15155:9;15151:18;15144:48;15209:86;15290:4;15281:6;15273;15209:86;:::i;:::-;15201:94;;15305:72;15373:2;15362:9;15358:18;15349:6;15305:72;:::i;:::-;15387:73;15455:3;15444:9;15440:19;15431:6;15387:73;:::i;:::-;14696:771;;;;;;;;;:::o;15473:169::-;15557:11;15591:6;15586:3;15579:19;15631:4;15626:3;15622:14;15607:29;;15473:169;;;;:::o;15648:234::-;15788:34;15784:1;15776:6;15772:14;15765:58;15857:17;15852:2;15844:6;15840:15;15833:42;15648:234;:::o;15888:366::-;16030:3;16051:67;16115:2;16110:3;16051:67;:::i;:::-;16044:74;;16127:93;16216:3;16127:93;:::i;:::-;16245:2;16240:3;16236:12;16229:19;;15888:366;;;:::o;16260:419::-;16426:4;16464:2;16453:9;16449:18;16441:26;;16513:9;16507:4;16503:20;16499:1;16488:9;16484:17;16477:47;16541:131;16667:4;16541:131;:::i;:::-;16533:139;;16260:419;;;:::o;16685:226::-;16825:34;16821:1;16813:6;16809:14;16802:58;16894:9;16889:2;16881:6;16877:15;16870:34;16685:226;:::o;16917:366::-;17059:3;17080:67;17144:2;17139:3;17080:67;:::i;:::-;17073:74;;17156:93;17245:3;17156:93;:::i;:::-;17274:2;17269:3;17265:12;17258:19;;16917:366;;;:::o;17289:419::-;17455:4;17493:2;17482:9;17478:18;17470:26;;17542:9;17536:4;17532:20;17528:1;17517:9;17513:17;17506:47;17570:131;17696:4;17570:131;:::i;:::-;17562:139;;17289:419;;;:::o;17714:332::-;17835:4;17873:2;17862:9;17858:18;17850:26;;17886:71;17954:1;17943:9;17939:17;17930:6;17886:71;:::i;:::-;17967:72;18035:2;18024:9;18020:18;18011:6;17967:72;:::i;:::-;17714:332;;;;;:::o;18052:180::-;18100:77;18097:1;18090:88;18197:4;18194:1;18187:15;18221:4;18218:1;18211:15;18238:305;18278:3;18297:20;18315:1;18297:20;:::i;:::-;18292:25;;18331:20;18349:1;18331:20;:::i;:::-;18326:25;;18485:1;18417:66;18413:74;18410:1;18407:81;18404:107;;;18491:18;;:::i;:::-;18404:107;18535:1;18532;18528:9;18521:16;;18238:305;;;;:::o;18549:233::-;18588:3;18611:24;18629:5;18611:24;:::i;:::-;18602:33;;18657:66;18650:5;18647:77;18644:103;;;18727:18;;:::i;:::-;18644:103;18774:1;18767:5;18763:13;18756:20;;18549:233;;;:::o;18788:236::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:19;18992:2;18984:6;18980:15;18973:44;18788:236;:::o;19030:366::-;19172:3;19193:67;19257:2;19252:3;19193:67;:::i;:::-;19186:74;;19269:93;19358:3;19269:93;:::i;:::-;19387:2;19382:3;19378:12;19371:19;;19030:366;;;:::o;19402:419::-;19568:4;19606:2;19595:9;19591:18;19583:26;;19655:9;19649:4;19645:20;19641:1;19630:9;19626:17;19619:47;19683:131;19809:4;19683:131;:::i;:::-;19675:139;;19402:419;;;:::o;19827:771::-;20060:4;20098:3;20087:9;20083:19;20075:27;;20112:71;20180:1;20169:9;20165:17;20156:6;20112:71;:::i;:::-;20193:72;20261:2;20250:9;20246:18;20237:6;20193:72;:::i;:::-;20312:9;20306:4;20302:20;20297:2;20286:9;20282:18;20275:48;20340:86;20421:4;20412:6;20404;20340:86;:::i;:::-;20332:94;;20436:72;20504:2;20493:9;20489:18;20480:6;20436:72;:::i;:::-;20518:73;20586:3;20575:9;20571:19;20562:6;20518:73;:::i;:::-;19827:771;;;;;;;;;:::o;20604:220::-;20744:34;20740:1;20732:6;20728:14;20721:58;20813:3;20808:2;20800:6;20796:15;20789:28;20604:220;:::o;20830:366::-;20972:3;20993:67;21057:2;21052:3;20993:67;:::i;:::-;20986:74;;21069:93;21158:3;21069:93;:::i;:::-;21187:2;21182:3;21178:12;21171:19;;20830:366;;;:::o;21202:419::-;21368:4;21406:2;21395:9;21391:18;21383:26;;21455:9;21449:4;21445:20;21441:1;21430:9;21426:17;21419:47;21483:131;21609:4;21483:131;:::i;:::-;21475:139;;21202:419;;;:::o;21627:180::-;21675:77;21672:1;21665:88;21772:4;21769:1;21762:15;21796:4;21793:1;21786:15;21813:329;21872:6;21921:2;21909:9;21900:7;21896:23;21892:32;21889:119;;;21927:79;;:::i;:::-;21889:119;22047:1;22072:53;22117:7;22108:6;22097:9;22093:22;22072:53;:::i;:::-;22062:63;;22018:117;21813:329;;;;:::o;22148:117::-;22257:1;22254;22247:12;22271:117;22380:1;22377;22370:12;22394:117;22503:1;22500;22493:12;22517:724;22594:4;22600:6;22656:11;22643:25;22756:1;22750:4;22746:12;22735:8;22719:14;22715:29;22711:48;22691:18;22687:73;22677:168;;22764:79;;:::i;:::-;22677:168;22876:18;22866:8;22862:33;22854:41;;22928:4;22915:18;22905:28;;22956:18;22948:6;22945:30;22942:117;;;22978:79;;:::i;:::-;22942:117;23086:2;23080:4;23076:13;23068:21;;23143:4;23135:6;23131:17;23115:14;23111:38;23105:4;23101:49;23098:136;;;23153:79;;:::i;:::-;23098:136;22607:634;22517:724;;;;;:::o;23247:184::-;23346:11;23380:6;23375:3;23368:19;23420:4;23415:3;23411:14;23396:29;;23247:184;;;;:::o;23437:102::-;23506:4;23529:3;23521:11;;23437:102;;;:::o;23545:108::-;23622:24;23640:5;23622:24;:::i;:::-;23617:3;23610:37;23545:108;;:::o;23659:179::-;23728:10;23749:46;23791:3;23783:6;23749:46;:::i;:::-;23827:4;23822:3;23818:14;23804:28;;23659:179;;;;:::o;23844:122::-;23896:5;23921:39;23956:2;23951:3;23947:12;23942:3;23921:39;:::i;:::-;23912:48;;23844:122;;;;:::o;23972:115::-;24044:4;24076;24071:3;24067:14;24059:22;;23972:115;;;:::o;24123:699::-;24252:3;24275:86;24354:6;24349:3;24275:86;:::i;:::-;24268:93;;24385:58;24437:5;24385:58;:::i;:::-;24466:7;24497:1;24482:315;24507:6;24504:1;24501:13;24482:315;;;24577:42;24612:6;24603:7;24577:42;:::i;:::-;24639:63;24698:3;24683:13;24639:63;:::i;:::-;24632:70;;24725:62;24780:6;24725:62;:::i;:::-;24715:72;;24542:255;24529:1;24526;24522:9;24517:14;;24482:315;;;24486:14;24813:3;24806:10;;24257:565;;24123:699;;;;;:::o;24828:184::-;24927:11;24961:6;24956:3;24949:19;25001:4;24996:3;24992:14;24977:29;;24828:184;;;;:::o;25018:117::-;25127:1;25124;25117:12;25171:537;25299:3;25320:86;25399:6;25394:3;25320:86;:::i;:::-;25313:93;;25430:66;25422:6;25419:78;25416:165;;;25500:79;;:::i;:::-;25416:165;25612:4;25604:6;25600:17;25590:27;;25627:43;25663:6;25658:3;25651:5;25627:43;:::i;:::-;25695:6;25690:3;25686:16;25679:23;;25171:537;;;;;:::o;25714:193::-;25822:11;25856:6;25851:3;25844:19;25896:4;25891:3;25887:14;25872:29;;25714:193;;;;:::o;25913:113::-;25993:4;26016:3;26008:11;;25913:113;;;:::o;26032:158::-;26105:11;26139:6;26134:3;26127:19;26179:4;26174:3;26170:14;26155:29;;26032:158;;;;:::o;26218:281::-;26304:3;26325:60;26378:6;26373:3;26325:60;:::i;:::-;26318:67;;26395:43;26431:6;26426:3;26419:5;26395:43;:::i;:::-;26463:29;26485:6;26463:29;:::i;:::-;26458:3;26454:39;26447:46;;26218:281;;;;;:::o;26505:212::-;26602:10;26637:74;26707:3;26699:6;26691;26637:74;:::i;:::-;26623:88;;26505:212;;;;;:::o;26723:117::-;26832:1;26829;26822:12;26846:117;26955:1;26952;26945:12;26969:117;27078:1;27075;27068:12;27092:714;27156:5;27163:6;27219:3;27206:17;27311:1;27305:4;27301:12;27290:8;27274:14;27270:29;27266:48;27246:18;27242:73;27232:168;;27319:79;;:::i;:::-;27232:168;27442:8;27422:18;27418:33;27409:42;;27484:5;27471:19;27461:29;;27519:4;27512:5;27508:16;27499:25;;27547:18;27539:6;27536:30;27533:117;;;27569:79;;:::i;:::-;27533:117;27708:4;27700:6;27696:17;27680:14;27676:38;27666:8;27662:53;27659:140;;;27718:79;;:::i;:::-;27659:140;27170:636;27092:714;;;;;:::o;27812:126::-;27895:4;27927;27922:3;27918:14;27910:22;;27812:126;;;:::o;27970:990::-;28119:3;28142:95;28230:6;28225:3;28142:95;:::i;:::-;28135:102;;28263:3;28308:4;28300:6;28296:17;28291:3;28287:27;28338:69;28401:5;28338:69;:::i;:::-;28430:7;28461:1;28446:469;28471:6;28468:1;28465:13;28446:469;;;28542:9;28536:4;28532:20;28527:3;28520:33;28602:53;28648:6;28639:7;28602:53;:::i;:::-;28676:99;28770:4;28755:13;28740;28676:99;:::i;:::-;28668:107;;28798:73;28864:6;28798:73;:::i;:::-;28788:83;;28900:4;28895:3;28891:14;28884:21;;28506:409;;28493:1;28490;28486:9;28481:14;;28446:469;;;28450:14;28931:4;28924:11;;28951:3;28944:10;;28124:836;;;;27970:990;;;;;:::o;28966:1217::-;29371:4;29409:3;29398:9;29394:19;29386:27;;29459:9;29453:4;29449:20;29445:1;29434:9;29430:17;29423:47;29487:118;29600:4;29591:6;29583;29487:118;:::i;:::-;29479:126;;29652:9;29646:4;29642:20;29637:2;29626:9;29622:18;29615:48;29680:118;29793:4;29784:6;29776;29680:118;:::i;:::-;29672:126;;29845:9;29839:4;29835:20;29830:2;29819:9;29815:18;29808:48;29873:138;30006:4;29997:6;29989;29873:138;:::i;:::-;29865:146;;30021:72;30089:2;30078:9;30074:18;30065:6;30021:72;:::i;:::-;30103:73;30171:3;30160:9;30156:19;30147:6;30103:73;:::i;:::-;28966:1217;;;;;;;;;;;:::o;30189:234::-;30329:34;30325:1;30317:6;30313:14;30306:58;30398:17;30393:2;30385:6;30381:15;30374:42;30189:234;:::o;30429:366::-;30571:3;30592:67;30656:2;30651:3;30592:67;:::i;:::-;30585:74;;30668:93;30757:3;30668:93;:::i;:::-;30786:2;30781:3;30777:12;30770:19;;30429:366;;;:::o;30801:419::-;30967:4;31005:2;30994:9;30990:18;30982:26;;31054:9;31048:4;31044:20;31040:1;31029:9;31025:17;31018:47;31082:131;31208:4;31082:131;:::i;:::-;31074:139;;30801:419;;;:::o;31226:148::-;31328:11;31365:3;31350:18;;31226:148;;;;:::o;31380:173::-;31520:25;31516:1;31508:6;31504:14;31497:49;31380:173;:::o;31559:402::-;31719:3;31740:85;31822:2;31817:3;31740:85;:::i;:::-;31733:92;;31834:93;31923:3;31834:93;:::i;:::-;31952:2;31947:3;31943:12;31936:19;;31559:402;;;:::o;31967:99::-;32019:6;32053:5;32047:12;32037:22;;31967:99;;;:::o;32072:307::-;32140:1;32150:113;32164:6;32161:1;32158:13;32150:113;;;32249:1;32244:3;32240:11;32234:18;32230:1;32225:3;32221:11;32214:39;32186:2;32183:1;32179:10;32174:15;;32150:113;;;32281:6;32278:1;32275:13;32272:101;;;32361:1;32352:6;32347:3;32343:16;32336:27;32272:101;32121:258;32072:307;;;:::o;32385:377::-;32491:3;32519:39;32552:5;32519:39;:::i;:::-;32574:89;32656:6;32651:3;32574:89;:::i;:::-;32567:96;;32672:52;32717:6;32712:3;32705:4;32698:5;32694:16;32672:52;:::i;:::-;32749:6;32744:3;32740:16;32733:23;;32495:267;32385:377;;;;:::o;32768:167::-;32908:19;32904:1;32896:6;32892:14;32885:43;32768:167;:::o;32941:402::-;33101:3;33122:85;33204:2;33199:3;33122:85;:::i;:::-;33115:92;;33216:93;33305:3;33216:93;:::i;:::-;33334:2;33329:3;33325:12;33318:19;;32941:402;;;:::o;33349:967::-;33731:3;33753:148;33897:3;33753:148;:::i;:::-;33746:155;;33918:95;34009:3;34000:6;33918:95;:::i;:::-;33911:102;;34030:148;34174:3;34030:148;:::i;:::-;34023:155;;34195:95;34286:3;34277:6;34195:95;:::i;:::-;34188:102;;34307:3;34300:10;;33349:967;;;;;:::o;34322:364::-;34410:3;34438:39;34471:5;34438:39;:::i;:::-;34493:71;34557:6;34552:3;34493:71;:::i;:::-;34486:78;;34573:52;34618:6;34613:3;34606:4;34599:5;34595:16;34573:52;:::i;:::-;34650:29;34672:6;34650:29;:::i;:::-;34645:3;34641:39;34634:46;;34414:272;34322:364;;;;:::o;34692:313::-;34805:4;34843:2;34832:9;34828:18;34820:26;;34892:9;34886:4;34882:20;34878:1;34867:9;34863:17;34856:47;34920:78;34993:4;34984:6;34920:78;:::i;:::-;34912:86;;34692:313;;;;:::o;35011:232::-;35151:34;35147:1;35139:6;35135:14;35128:58;35220:15;35215:2;35207:6;35203:15;35196:40;35011:232;:::o;35249:366::-;35391:3;35412:67;35476:2;35471:3;35412:67;:::i;:::-;35405:74;;35488:93;35577:3;35488:93;:::i;:::-;35606:2;35601:3;35597:12;35590:19;;35249:366;;;:::o;35621:419::-;35787:4;35825:2;35814:9;35810:18;35802:26;;35874:9;35868:4;35864:20;35860:1;35849:9;35845:17;35838:47;35902:131;36028:4;35902:131;:::i;:::-;35894:139;;35621:419;;;:::o;36046:223::-;36186:34;36182:1;36174:6;36170:14;36163:58;36255:6;36250:2;36242:6;36238:15;36231:31;36046:223;:::o;36275:366::-;36417:3;36438:67;36502:2;36497:3;36438:67;:::i;:::-;36431:74;;36514:93;36603:3;36514:93;:::i;:::-;36632:2;36627:3;36623:12;36616:19;;36275:366;;;:::o;36647:419::-;36813:4;36851:2;36840:9;36836:18;36828:26;;36900:9;36894:4;36890:20;36886:1;36875:9;36871:17;36864:47;36928:131;37054:4;36928:131;:::i;:::-;36920:139;;36647:419;;;:::o;37072:227::-;37212:34;37208:1;37200:6;37196:14;37189:58;37281:10;37276:2;37268:6;37264:15;37257:35;37072:227;:::o;37305:366::-;37447:3;37468:67;37532:2;37527:3;37468:67;:::i;:::-;37461:74;;37544:93;37633:3;37544:93;:::i;:::-;37662:2;37657:3;37653:12;37646:19;;37305:366;;;:::o;37677:419::-;37843:4;37881:2;37870:9;37866:18;37858:26;;37930:9;37924:4;37920:20;37916:1;37905:9;37901:17;37894:47;37958:131;38084:4;37958:131;:::i;:::-;37950:139;;37677:419;;;:::o;38102:247::-;38242:34;38238:1;38230:6;38226:14;38219:58;38311:30;38306:2;38298:6;38294:15;38287:55;38102:247;:::o;38355:366::-;38497:3;38518:67;38582:2;38577:3;38518:67;:::i;:::-;38511:74;;38594:93;38683:3;38594:93;:::i;:::-;38712:2;38707:3;38703:12;38696:19;;38355:366;;;:::o;38727:419::-;38893:4;38931:2;38920:9;38916:18;38908:26;;38980:9;38974:4;38970:20;38966:1;38955:9;38951:17;38944:47;39008:131;39134:4;39008:131;:::i;:::-;39000:139;;38727:419;;;:::o;39152:223::-;39292:34;39288:1;39280:6;39276:14;39269:58;39361:6;39356:2;39348:6;39344:15;39337:31;39152:223;:::o;39381:366::-;39523:3;39544:67;39608:2;39603:3;39544:67;:::i;:::-;39537:74;;39620:93;39709:3;39620:93;:::i;:::-;39738:2;39733:3;39729:12;39722:19;;39381:366;;;:::o;39753:419::-;39919:4;39957:2;39946:9;39942:18;39934:26;;40006:9;40000:4;39996:20;39992:1;39981:9;39977:17;39970:47;40034:131;40160:4;40034:131;:::i;:::-;40026:139;;39753:419;;;:::o;40178:147::-;40279:11;40316:3;40301:18;;40178:147;;;;:::o;40353:314::-;40467:3;40488:88;40569:6;40564:3;40488:88;:::i;:::-;40481:95;;40586:43;40622:6;40617:3;40610:5;40586:43;:::i;:::-;40654:6;40649:3;40645:16;40638:23;;40353:314;;;;;:::o;40673:291::-;40813:3;40835:103;40934:3;40925:6;40917;40835:103;:::i;:::-;40828:110;;40955:3;40948:10;;40673:291;;;;;:::o;40970:236::-;41110:34;41106:1;41098:6;41094:14;41087:58;41179:19;41174:2;41166:6;41162:15;41155:44;40970:236;:::o;41212:366::-;41354:3;41375:67;41439:2;41434:3;41375:67;:::i;:::-;41368:74;;41451:93;41540:3;41451:93;:::i;:::-;41569:2;41564:3;41560:12;41553:19;;41212:366;;;:::o;41584:419::-;41750:4;41788:2;41777:9;41773:18;41765:26;;41837:9;41831:4;41827:20;41823:1;41812:9;41808:17;41801:47;41865:131;41991:4;41865:131;:::i;:::-;41857:139;;41584:419;;;:::o;42009:549::-;42186:4;42224:2;42213:9;42209:18;42201:26;;42237:71;42305:1;42294:9;42290:17;42281:6;42237:71;:::i;:::-;42318:72;42386:2;42375:9;42371:18;42362:6;42318:72;:::i;:::-;42437:9;42431:4;42427:20;42422:2;42411:9;42407:18;42400:48;42465:86;42546:4;42537:6;42529;42465:86;:::i;:::-;42457:94;;42009:549;;;;;;;:::o;42564:348::-;42604:7;42627:20;42645:1;42627:20;:::i;:::-;42622:25;;42661:20;42679:1;42661:20;:::i;:::-;42656:25;;42849:1;42781:66;42777:74;42774:1;42771:81;42766:1;42759:9;42752:17;42748:105;42745:131;;;42856:18;;:::i;:::-;42745:131;42904:1;42901;42897:9;42886:20;;42564:348;;;;:::o;42918:180::-;42966:77;42963:1;42956:88;43063:4;43060:1;43053:15;43087:4;43084:1;43077:15;43104:171;43143:3;43166:24;43184:5;43166:24;:::i;:::-;43157:33;;43212:4;43205:5;43202:15;43199:41;;;43220:18;;:::i;:::-;43199:41;43267:1;43260:5;43256:13;43249:20;;43104:171;;;:::o;43281:182::-;43421:34;43417:1;43409:6;43405:14;43398:58;43281:182;:::o;43469:366::-;43611:3;43632:67;43696:2;43691:3;43632:67;:::i;:::-;43625:74;;43708:93;43797:3;43708:93;:::i;:::-;43826:2;43821:3;43817:12;43810:19;;43469:366;;;:::o;43841:419::-;44007:4;44045:2;44034:9;44030:18;44022:26;;44094:9;44088:4;44084:20;44080:1;44069:9;44065:17;44058:47;44122:131;44248:4;44122:131;:::i;:::-;44114:139;;43841:419;;;:::o;44266:191::-;44306:4;44326:20;44344:1;44326:20;:::i;:::-;44321:25;;44360:20;44378:1;44360:20;:::i;:::-;44355:25;;44399:1;44396;44393:8;44390:34;;;44404:18;;:::i;:::-;44390:34;44449:1;44446;44442:9;44434:17;;44266:191;;;;:::o;44463:180::-;44511:77;44508:1;44501:88;44608:4;44605:1;44598:15;44632:4;44629:1;44622:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\n\n/**\n * MultiSigWallet with timelocker\n */\ncontract BEMultiSigWallet is AccessControlEnumerable {\n bytes32 public constant TIMELOCK_ADMIN_ROLE =\n keccak256(\"TIMELOCK_ADMIN_ROLE\");\n bytes32 public constant PROPOSER_ROLE = keccak256(\"PROPOSER_ROLE\");\n bytes32 public constant EXECUTOR_ROLE = keccak256(\"EXECUTOR_ROLE\");\n uint256 internal constant _DONE_TIMESTAMP = uint256(1);\n\n mapping(bytes32 => uint256) private _timestamps;\n mapping(bytes32 => mapping(address => bool)) public confirmations;\n uint256 public minDelay;\n uint256 public required;\n\n /**\n * @dev Emitted when a call is scheduled as part of operation `id`.\n */\n event CallScheduled(\n bytes32 indexed id,\n uint256 indexed index,\n address target,\n uint256 value,\n bytes data,\n bytes32 predecessor,\n uint256 delay\n );\n\n /**\n * @dev Emitted when a call is performed as part of operation `id`.\n */\n event CallExecuted(\n bytes32 indexed id,\n uint256 indexed index,\n address target,\n uint256 value,\n bytes data\n );\n\n /**\n * @dev Emitted when operation `id` is cancelled.\n */\n event Cancelled(bytes32 indexed id);\n\n event Confirmation(address indexed sender, bytes32 id);\n\n event Revocation(address indexed sender, bytes32 id);\n\n /**\n * @dev Emitted when the minimum delay for future operations is modified.\n */\n event MinDelayChange(uint256 oldDuration, uint256 newDuration);\n /**\n * @dev Emitted when the number of required confimations is modified.\n */\n event RequirementChange(uint256 oldDuration, uint256 newDuration);\n\n modifier onlyWallet() {\n require(\n msg.sender == address(this),\n \"BEMultiSigWallet: caller must be wallet\"\n );\n _;\n }\n\n /**\n * @dev Initializes the contract with a given `minDelay`.\n */\n constructor(\n uint256 _minDelay,\n address[] memory proposers,\n address[] memory executors\n ) {\n _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE);\n _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE);\n _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE);\n\n // deployer + self administration\n _setupRole(TIMELOCK_ADMIN_ROLE, _msgSender());\n _setupRole(TIMELOCK_ADMIN_ROLE, address(this));\n\n // register proposers\n for (uint256 i = 0; i < proposers.length; ++i) {\n _setupRole(PROPOSER_ROLE, proposers[i]);\n }\n\n // register executors\n for (uint256 i = 0; i < executors.length; ++i) {\n _setupRole(EXECUTOR_ROLE, executors[i]);\n }\n\n minDelay = _minDelay;\n emit MinDelayChange(0, minDelay);\n }\n\n /**\n * @dev Modifier to make a function callable only by a certain role. In\n * addition to checking the sender's role, `address(0)` 's role is also\n * considered. Granting a role to `address(0)` is equivalent to enabling\n * this role for everyone.\n */\n modifier onlyRoleOrOpenRole(bytes32 role) {\n if (!hasRole(role, address(0))) {\n _checkRole(role, _msgSender());\n }\n _;\n }\n\n /**\n * @dev Contract might receive/hold ETH as part of the maintenance process.\n */\n receive() external payable {}\n\n /**\n * @dev Returns whether an id correspond to a registered operation. This\n * includes both Pending, Ready and Done operations.\n */\n function isOperation(bytes32 id) public view virtual returns (bool pending) {\n return getTimestamp(id) > 0;\n }\n\n /**\n * @dev Returns whether an operation is pending or not.\n */\n function isOperationPending(\n bytes32 id\n ) public view virtual returns (bool pending) {\n return getTimestamp(id) > _DONE_TIMESTAMP;\n }\n\n function isConfirmed(bytes32 id) public view returns (bool ready) {\n uint256 count = 0;\n uint256 executorCount = getRoleMemberCount(EXECUTOR_ROLE);\n for (uint256 i = 0; i < executorCount; i++) {\n if (confirmations[id][getRoleMember(EXECUTOR_ROLE, i)]) count += 1;\n if (count == required) return true;\n }\n }\n\n /**\n * @dev Returns whether an operation is ready or not.\n */\n function isOperationReady(\n bytes32 id\n ) public view virtual returns (bool ready) {\n uint256 timestamp = getTimestamp(id);\n return timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp;\n }\n\n /**\n * @dev Returns whether an operation is done or not.\n */\n function isOperationDone(bytes32 id) public view virtual returns (bool done) {\n return getTimestamp(id) == _DONE_TIMESTAMP;\n }\n\n /**\n * @dev Returns the timestamp at with an operation becomes ready (0 for\n * unset operations, 1 for done operations).\n */\n function getTimestamp(\n bytes32 id\n ) public view virtual returns (uint256 timestamp) {\n return _timestamps[id];\n }\n\n /**\n * @dev Returns the identifier of an operation containing a single\n * transaction.\n */\n function hashOperation(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt\n ) public pure virtual returns (bytes32 hash) {\n return keccak256(abi.encode(target, value, data, predecessor, salt));\n }\n\n /**\n * @dev Returns the identifier of an operation containing a batch of\n * transactions.\n */\n function hashOperationBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt\n ) public pure virtual returns (bytes32 hash) {\n return keccak256(abi.encode(targets, values, datas, predecessor, salt));\n }\n\n /**\n * @dev Schedule an operation containing a single transaction.\n *\n * Emits a {CallScheduled} event.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function schedule(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt,\n uint256 delay\n ) public virtual onlyRole(PROPOSER_ROLE) {\n bytes32 id = hashOperation(target, value, data, predecessor, salt);\n _schedule(id, delay);\n emit CallScheduled(id, 0, target, value, data, predecessor, delay);\n }\n\n /**\n * @dev Schedule an operation containing a batch of transactions.\n *\n * Emits one {CallScheduled} event per transaction in the batch.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function scheduleBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt,\n uint256 delay\n ) public virtual onlyRole(PROPOSER_ROLE) {\n require(\n targets.length == values.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n require(\n targets.length == datas.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n\n bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt);\n _schedule(id, delay);\n for (uint256 i = 0; i < targets.length; ++i) {\n emit CallScheduled(\n id,\n i,\n targets[i],\n values[i],\n datas[i],\n predecessor,\n delay\n );\n }\n }\n\n /**\n * @dev Schedule an operation that is to becomes valid after a given delay.\n */\n function _schedule(bytes32 id, uint256 delay) private {\n require(!isOperation(id), \"BEMultiSigWallet: operation already scheduled\");\n require(delay >= minDelay, \"BEMultiSigWallet: insufficient delay\");\n _timestamps[id] = block.timestamp + delay;\n }\n\n /**\n * @dev Cancel an operation.\n *\n * Requirements:\n *\n * - the caller must have the 'proposer' role.\n */\n function cancel(bytes32 id) public virtual onlyRole(PROPOSER_ROLE) {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation cannot be cancelled\"\n );\n delete _timestamps[id];\n\n emit Cancelled(id);\n }\n\n /**\n * @dev Allows an executor to confirm a transaction.\n * Requirements\n * - the caller must have the 'executor' role.\n */\n function confirmTransaction(\n bytes32 id\n ) public onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation not exist or finished\"\n );\n confirmations[id][msg.sender] = true;\n emit Confirmation(msg.sender, id);\n }\n\n /**\n * @dev Allows an executor to revoke a confirmation for a transaction.\n * Requirements\n * - the caller must have the 'executor' role.\n */\n function revokeConfirmation(\n bytes32 id\n ) public onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n require(\n isOperationPending(id),\n \"BEMultiSigWallet: operation not exist or finished\"\n );\n confirmations[id][msg.sender] = false;\n emit Revocation(msg.sender, id);\n }\n\n /**\n * @dev Execute an (ready) operation containing a single transaction.\n *\n * Emits a {CallExecuted} event.\n *\n * Requirements:\n *\n * - the caller must have the 'executor' role.\n */\n function execute(\n address target,\n uint256 value,\n bytes calldata data,\n bytes32 predecessor,\n bytes32 salt\n ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n bytes32 id = hashOperation(target, value, data, predecessor, salt);\n _beforeCall(id, predecessor);\n _call(id, 0, target, value, data);\n _afterCall(id);\n }\n\n /**\n * @dev Execute an (ready) operation containing a batch of transactions.\n *\n * Emits one {CallExecuted} event per transaction in the batch.\n *\n * Requirements:\n *\n * - the caller must have the 'executor' role.\n */\n function executeBatch(\n address[] calldata targets,\n uint256[] calldata values,\n bytes[] calldata datas,\n bytes32 predecessor,\n bytes32 salt\n ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {\n require(\n targets.length == values.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n require(\n targets.length == datas.length,\n \"BEMultiSigWallet: length mismatch\"\n );\n\n bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt);\n _beforeCall(id, predecessor);\n for (uint256 i = 0; i < targets.length; ++i) {\n _call(id, i, targets[i], values[i], datas[i]);\n }\n _afterCall(id);\n }\n\n /**\n * @dev Checks before execution of an operation's calls.\n */\n function _beforeCall(bytes32 id, bytes32 predecessor) private view {\n require(isOperationReady(id), \"BEMultiSigWallet: operation is not ready\");\n require(\n isConfirmed(id),\n \"BEMultiSigWallet: operation not reach required confirmations\"\n );\n require(\n predecessor == bytes32(0) || isOperationDone(predecessor),\n \"BEMultiSigWallet: missing dependency\"\n );\n }\n\n /**\n * @dev Checks after execution of an operation's calls.\n */\n function _afterCall(bytes32 id) private {\n require(isOperationReady(id), \"BEMultiSigWallet: operation is not ready\");\n _timestamps[id] = _DONE_TIMESTAMP;\n }\n\n /**\n * @dev Execute an operation's call.\n *\n * Emits a {CallExecuted} event.\n */\n function _call(\n bytes32 id,\n uint256 index,\n address target,\n uint256 value,\n bytes calldata data\n ) private {\n (bool success, ) = target.call{value: value}(data);\n require(success, \"BEMultiSigWallet: underlying transaction reverted\");\n\n emit CallExecuted(id, index, target, value, data);\n }\n\n /**\n * @dev Changes the minimum wallet duration for future operations.\n *\n * Emits a {MinDelayChange} event.\n *\n * Requirements:\n *\n * - the caller must be the wallet itself. This can only be achieved by scheduling and later executing\n * an operation where the wallet is the target and the data is the ABI-encoded call to this function.\n */\n function changeDelay(uint256 _minDelay) external virtual onlyWallet {\n emit MinDelayChange(minDelay, _minDelay);\n minDelay = _minDelay;\n }\n\n /**\n * @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.\n * @param _required Number of required confirmations.\n */\n function changeRequirement(uint256 _required) external virtual onlyWallet {\n emit RequirementChange(required, _required);\n required = _required;\n }\n}\n", "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/core/BEMultiSigWallet.sol", "ast": { "absolutePath": "project:/contracts/core/BEMultiSigWallet.sol", @@ -27127,7 +27127,7 @@ "body": { "id": 1656, "nodeType": "Block", - "src": "3615:52:9", + "src": "3605:52:9", "statements": [ { "expression": { @@ -27148,7 +27148,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1645, - "src": "3641:2:9", + "src": "3631:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27167,7 +27167,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1758, - "src": "3628:12:9", + "src": "3618:12:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", "typeString": "function (bytes32) view returns (uint256)" @@ -27181,7 +27181,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3628:16:9", + "src": "3618:16:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -27196,13 +27196,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, - "src": "3647:15:9", + "src": "3637:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3628:34:9", + "src": "3618:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27211,7 +27211,7 @@ "functionReturnParameters": 1649, "id": 1655, "nodeType": "Return", - "src": "3621:41:9" + "src": "3611:41:9" } ] }, @@ -27238,10 +27238,10 @@ "id": 1645, "mutability": "mutable", "name": "id", - "nameLocation": "3550:2:9", + "nameLocation": "3555:2:9", "nodeType": "VariableDeclaration", "scope": 1657, - "src": "3542:10:9", + "src": "3547:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27252,7 +27252,7 @@ "id": 1644, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3542:7:9", + "src": "3547:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27261,7 +27261,7 @@ "visibility": "internal" } ], - "src": "3541:12:9" + "src": "3541:20:9" }, "returnParameters": { "id": 1649, @@ -27272,10 +27272,10 @@ "id": 1648, "mutability": "mutable", "name": "pending", - "nameLocation": "3604:7:9", + "nameLocation": "3596:7:9", "nodeType": "VariableDeclaration", "scope": 1657, - "src": "3599:12:9", + "src": "3591:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27286,7 +27286,7 @@ "id": 1647, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3599:4:9", + "src": "3591:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27295,10 +27295,10 @@ "visibility": "internal" } ], - "src": "3598:14:9" + "src": "3590:14:9" }, "scope": 2331, - "src": "3514:153:9", + "src": "3514:143:9", "stateMutability": "view", "virtual": true, "visibility": "public" @@ -27307,7 +27307,7 @@ "body": { "id": 1705, "nodeType": "Block", - "src": "3737:263:9", + "src": "3727:263:9", "statements": [ { "assignments": [ @@ -27319,10 +27319,10 @@ "id": 1665, "mutability": "mutable", "name": "count", - "nameLocation": "3751:5:9", + "nameLocation": "3741:5:9", "nodeType": "VariableDeclaration", "scope": 1705, - "src": "3743:13:9", + "src": "3733:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27333,7 +27333,7 @@ "id": 1664, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3743:7:9", + "src": "3733:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27352,7 +27352,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3759:1:9", + "src": "3749:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -27360,7 +27360,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3743:17:9" + "src": "3733:17:9" }, { "assignments": [ @@ -27372,10 +27372,10 @@ "id": 1669, "mutability": "mutable", "name": "executorCount", - "nameLocation": "3774:13:9", + "nameLocation": "3764:13:9", "nodeType": "VariableDeclaration", "scope": 1705, - "src": "3766:21:9", + "src": "3756:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27386,7 +27386,7 @@ "id": 1668, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3766:7:9", + "src": "3756:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27404,7 +27404,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "3809:13:9", + "src": "3799:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27423,7 +27423,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 384, - "src": "3790:18:9", + "src": "3780:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", "typeString": "function (bytes32) view returns (uint256)" @@ -27437,7 +27437,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3790:33:9", + "src": "3780:33:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -27445,13 +27445,13 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3766:57:9" + "src": "3756:57:9" }, { "body": { "id": 1703, "nodeType": "Block", - "src": "3873:123:9", + "src": "3863:123:9", "statements": [ { "condition": { @@ -27462,7 +27462,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1428, - "src": "3885:13:9", + "src": "3875:13:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" @@ -27475,7 +27475,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, - "src": "3899:2:9", + "src": "3889:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27486,7 +27486,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3885:17:9", + "src": "3875:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -27501,7 +27501,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "3917:13:9", + "src": "3907:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27513,7 +27513,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1675, - "src": "3932:1:9", + "src": "3922:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27536,7 +27536,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, - "src": "3903:13:9", + "src": "3893:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes32,uint256) view returns (address)" @@ -27550,7 +27550,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3903:31:9", + "src": "3893:31:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -27562,7 +27562,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3885:50:9", + "src": "3875:50:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27570,7 +27570,7 @@ }, "id": 1696, "nodeType": "IfStatement", - "src": "3881:66:9", + "src": "3871:66:9", "trueBody": { "expression": { "id": 1694, @@ -27584,7 +27584,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1665, - "src": "3937:5:9", + "src": "3927:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27601,14 +27601,14 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3946:1:9", + "src": "3936:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "3937:10:9", + "src": "3927:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27616,7 +27616,7 @@ }, "id": 1695, "nodeType": "ExpressionStatement", - "src": "3937:10:9" + "src": "3927:10:9" } }, { @@ -27636,7 +27636,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1665, - "src": "3959:5:9", + "src": "3949:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27650,13 +27650,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1432, - "src": "3968:8:9", + "src": "3958:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3959:17:9", + "src": "3949:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27664,7 +27664,7 @@ }, "id": 1702, "nodeType": "IfStatement", - "src": "3955:34:9", + "src": "3945:34:9", "trueBody": { "expression": { "hexValue": "74727565", @@ -27675,7 +27675,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3985:4:9", + "src": "3975:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27685,7 +27685,7 @@ "functionReturnParameters": 1663, "id": 1701, "nodeType": "Return", - "src": "3978:11:9" + "src": "3968:11:9" } } ] @@ -27706,7 +27706,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1675, - "src": "3849:1:9", + "src": "3839:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27720,13 +27720,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1669, - "src": "3853:13:9", + "src": "3843:13:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3849:17:9", + "src": "3839:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27743,10 +27743,10 @@ "id": 1675, "mutability": "mutable", "name": "i", - "nameLocation": "3842:1:9", + "nameLocation": "3832:1:9", "nodeType": "VariableDeclaration", "scope": 1704, - "src": "3834:9:9", + "src": "3824:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27757,7 +27757,7 @@ "id": 1674, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3834:7:9", + "src": "3824:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27776,7 +27776,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3846:1:9", + "src": "3836:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -27784,7 +27784,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3834:13:9" + "src": "3824:13:9" }, "loopExpression": { "expression": { @@ -27796,14 +27796,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3868:3:9", + "src": "3858:3:9", "subExpression": { "id": 1681, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1675, - "src": "3868:1:9", + "src": "3858:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27816,10 +27816,10 @@ }, "id": 1683, "nodeType": "ExpressionStatement", - "src": "3868:3:9" + "src": "3858:3:9" }, "nodeType": "ForStatement", - "src": "3829:167:9" + "src": "3819:167:9" } ] }, @@ -27829,7 +27829,7 @@ "kind": "function", "modifiers": [], "name": "isConfirmed", - "nameLocation": "3680:11:9", + "nameLocation": "3670:11:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1660, @@ -27840,10 +27840,10 @@ "id": 1659, "mutability": "mutable", "name": "id", - "nameLocation": "3700:2:9", + "nameLocation": "3690:2:9", "nodeType": "VariableDeclaration", "scope": 1706, - "src": "3692:10:9", + "src": "3682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27854,7 +27854,7 @@ "id": 1658, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3692:7:9", + "src": "3682:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27863,7 +27863,7 @@ "visibility": "internal" } ], - "src": "3691:12:9" + "src": "3681:12:9" }, "returnParameters": { "id": 1663, @@ -27874,10 +27874,10 @@ "id": 1662, "mutability": "mutable", "name": "ready", - "nameLocation": "3730:5:9", + "nameLocation": "3720:5:9", "nodeType": "VariableDeclaration", "scope": 1706, - "src": "3725:10:9", + "src": "3715:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27888,7 +27888,7 @@ "id": 1661, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3725:4:9", + "src": "3715:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27897,10 +27897,10 @@ "visibility": "internal" } ], - "src": "3724:12:9" + "src": "3714:12:9" }, "scope": 2331, - "src": "3671:329:9", + "src": "3661:329:9", "stateMutability": "view", "virtual": false, "visibility": "public" @@ -27909,7 +27909,7 @@ "body": { "id": 1729, "nodeType": "Block", - "src": "4169:119:9", + "src": "4149:119:9", "statements": [ { "assignments": [ @@ -27921,10 +27921,10 @@ "id": 1715, "mutability": "mutable", "name": "timestamp", - "nameLocation": "4183:9:9", + "nameLocation": "4163:9:9", "nodeType": "VariableDeclaration", "scope": 1729, - "src": "4175:17:9", + "src": "4155:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27935,7 +27935,7 @@ "id": 1714, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4175:7:9", + "src": "4155:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27953,7 +27953,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, - "src": "4208:2:9", + "src": "4188:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -27972,7 +27972,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1758, - "src": "4195:12:9", + "src": "4175:12:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", "typeString": "function (bytes32) view returns (uint256)" @@ -27986,7 +27986,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4195:16:9", + "src": "4175:16:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -27994,7 +27994,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4175:36:9" + "src": "4155:36:9" }, { "expression": { @@ -28023,7 +28023,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1715, - "src": "4224:9:9", + "src": "4204:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28037,13 +28037,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, - "src": "4236:15:9", + "src": "4216:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4224:27:9", + "src": "4204:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28067,7 +28067,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1715, - "src": "4255:9:9", + "src": "4235:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28082,7 +28082,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967292, - "src": "4268:5:9", + "src": "4248:5:9", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" @@ -28095,19 +28095,19 @@ "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "4268:15:9", + "src": "4248:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4255:28:9", + "src": "4235:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4224:59:9", + "src": "4204:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28116,14 +28116,14 @@ "functionReturnParameters": 1713, "id": 1728, "nodeType": "Return", - "src": "4217:66:9" + "src": "4197:66:9" } ] }, "documentation": { "id": 1707, "nodeType": "StructuredDocumentation", - "src": "4004:65:9", + "src": "3994:65:9", "text": " @dev Returns whether an operation is ready or not." }, "functionSelector": "13bc9f20", @@ -28132,7 +28132,7 @@ "kind": "function", "modifiers": [], "name": "isOperationReady", - "nameLocation": "4081:16:9", + "nameLocation": "4071:16:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1710, @@ -28143,10 +28143,10 @@ "id": 1709, "mutability": "mutable", "name": "id", - "nameLocation": "4106:2:9", + "nameLocation": "4101:2:9", "nodeType": "VariableDeclaration", "scope": 1730, - "src": "4098:10:9", + "src": "4093:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28157,7 +28157,7 @@ "id": 1708, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4098:7:9", + "src": "4093:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28166,7 +28166,7 @@ "visibility": "internal" } ], - "src": "4097:12:9" + "src": "4087:20:9" }, "returnParameters": { "id": 1713, @@ -28177,10 +28177,10 @@ "id": 1712, "mutability": "mutable", "name": "ready", - "nameLocation": "4160:5:9", + "nameLocation": "4142:5:9", "nodeType": "VariableDeclaration", "scope": 1730, - "src": "4155:10:9", + "src": "4137:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28191,7 +28191,7 @@ "id": 1711, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4155:4:9", + "src": "4137:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28200,10 +28200,10 @@ "visibility": "internal" } ], - "src": "4154:12:9" + "src": "4136:12:9" }, "scope": 2331, - "src": "4072:216:9", + "src": "4062:206:9", "stateMutability": "view", "virtual": true, "visibility": "public" @@ -28212,7 +28212,7 @@ "body": { "id": 1744, "nodeType": "Block", - "src": "4436:53:9", + "src": "4416:53:9", "statements": [ { "expression": { @@ -28233,7 +28233,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, - "src": "4462:2:9", + "src": "4442:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28252,7 +28252,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1758, - "src": "4449:12:9", + "src": "4429:12:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", "typeString": "function (bytes32) view returns (uint256)" @@ -28266,7 +28266,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4449:16:9", + "src": "4429:16:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -28281,13 +28281,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, - "src": "4469:15:9", + "src": "4449:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4449:35:9", + "src": "4429:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28296,14 +28296,14 @@ "functionReturnParameters": 1737, "id": 1743, "nodeType": "Return", - "src": "4442:42:9" + "src": "4422:42:9" } ] }, "documentation": { "id": 1731, "nodeType": "StructuredDocumentation", - "src": "4292:64:9", + "src": "4272:64:9", "text": " @dev Returns whether an operation is done or not." }, "functionSelector": "2ab0f529", @@ -28312,7 +28312,7 @@ "kind": "function", "modifiers": [], "name": "isOperationDone", - "nameLocation": "4368:15:9", + "nameLocation": "4348:15:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1734, @@ -28323,10 +28323,10 @@ "id": 1733, "mutability": "mutable", "name": "id", - "nameLocation": "4392:2:9", + "nameLocation": "4372:2:9", "nodeType": "VariableDeclaration", "scope": 1745, - "src": "4384:10:9", + "src": "4364:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28337,7 +28337,7 @@ "id": 1732, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4384:7:9", + "src": "4364:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28346,7 +28346,7 @@ "visibility": "internal" } ], - "src": "4383:12:9" + "src": "4363:12:9" }, "returnParameters": { "id": 1737, @@ -28357,10 +28357,10 @@ "id": 1736, "mutability": "mutable", "name": "done", - "nameLocation": "4430:4:9", + "nameLocation": "4410:4:9", "nodeType": "VariableDeclaration", "scope": 1745, - "src": "4425:9:9", + "src": "4405:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28371,7 +28371,7 @@ "id": 1735, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4425:4:9", + "src": "4405:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28380,10 +28380,10 @@ "visibility": "internal" } ], - "src": "4424:11:9" + "src": "4404:11:9" }, "scope": 2331, - "src": "4359:130:9", + "src": "4339:130:9", "stateMutability": "view", "virtual": true, "visibility": "public" @@ -28392,7 +28392,7 @@ "body": { "id": 1757, "nodeType": "Block", - "src": "4726:33:9", + "src": "4696:33:9", "statements": [ { "expression": { @@ -28402,7 +28402,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1422, - "src": "4739:11:9", + "src": "4709:11:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" @@ -28415,7 +28415,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1748, - "src": "4751:2:9", + "src": "4721:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28426,7 +28426,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4739:15:9", + "src": "4709:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28435,14 +28435,14 @@ "functionReturnParameters": 1752, "id": 1756, "nodeType": "Return", - "src": "4732:22:9" + "src": "4702:22:9" } ] }, "documentation": { "id": 1746, "nodeType": "StructuredDocumentation", - "src": "4493:130:9", + "src": "4473:130:9", "text": " @dev Returns the timestamp at with an operation becomes ready (0 for\n unset operations, 1 for done operations)." }, "functionSelector": "d45c4435", @@ -28451,7 +28451,7 @@ "kind": "function", "modifiers": [], "name": "getTimestamp", - "nameLocation": "4635:12:9", + "nameLocation": "4615:12:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1749, @@ -28462,10 +28462,10 @@ "id": 1748, "mutability": "mutable", "name": "id", - "nameLocation": "4656:2:9", + "nameLocation": "4641:2:9", "nodeType": "VariableDeclaration", "scope": 1758, - "src": "4648:10:9", + "src": "4633:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28476,7 +28476,7 @@ "id": 1747, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4648:7:9", + "src": "4633:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28485,7 +28485,7 @@ "visibility": "internal" } ], - "src": "4647:12:9" + "src": "4627:20:9" }, "returnParameters": { "id": 1752, @@ -28496,10 +28496,10 @@ "id": 1751, "mutability": "mutable", "name": "timestamp", - "nameLocation": "4713:9:9", + "nameLocation": "4685:9:9", "nodeType": "VariableDeclaration", "scope": 1758, - "src": "4705:17:9", + "src": "4677:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28510,7 +28510,7 @@ "id": 1750, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4705:7:9", + "src": "4677:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28519,10 +28519,10 @@ "visibility": "internal" } ], - "src": "4704:19:9" + "src": "4676:19:9" }, "scope": 2331, - "src": "4626:133:9", + "src": "4606:123:9", "stateMutability": "view", "virtual": true, "visibility": "public" @@ -28531,7 +28531,7 @@ "body": { "id": 1785, "nodeType": "Block", - "src": "5039:79:9", + "src": "5009:79:9", "statements": [ { "expression": { @@ -28544,7 +28544,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1761, - "src": "5073:6:9", + "src": "5043:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -28556,7 +28556,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1763, - "src": "5081:5:9", + "src": "5051:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28568,7 +28568,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1765, - "src": "5088:4:9", + "src": "5058:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -28580,7 +28580,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1767, - "src": "5094:11:9", + "src": "5064:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28592,7 +28592,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, - "src": "5107:4:9", + "src": "5077:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28628,7 +28628,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967295, - "src": "5062:3:9", + "src": "5032:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" @@ -28641,7 +28641,7 @@ "lValueRequested": false, "memberName": "encode", "nodeType": "MemberAccess", - "src": "5062:10:9", + "src": "5032:10:9", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" @@ -28655,7 +28655,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5062:50:9", + "src": "5032:50:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -28675,7 +28675,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "5052:9:9", + "src": "5022:9:9", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" @@ -28689,7 +28689,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5052:61:9", + "src": "5022:61:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -28699,14 +28699,14 @@ "functionReturnParameters": 1773, "id": 1784, "nodeType": "Return", - "src": "5045:68:9" + "src": "5015:68:9" } ] }, "documentation": { "id": 1759, "nodeType": "StructuredDocumentation", - "src": "4763:96:9", + "src": "4733:96:9", "text": " @dev Returns the identifier of an operation containing a single\n transaction." }, "functionSelector": "8065657f", @@ -28715,7 +28715,7 @@ "kind": "function", "modifiers": [], "name": "hashOperation", - "nameLocation": "4871:13:9", + "nameLocation": "4841:13:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1770, @@ -28726,10 +28726,10 @@ "id": 1761, "mutability": "mutable", "name": "target", - "nameLocation": "4898:6:9", + "nameLocation": "4868:6:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "4890:14:9", + "src": "4860:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28740,7 +28740,7 @@ "id": 1760, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4890:7:9", + "src": "4860:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -28754,10 +28754,10 @@ "id": 1763, "mutability": "mutable", "name": "value", - "nameLocation": "4918:5:9", + "nameLocation": "4888:5:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "4910:13:9", + "src": "4880:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28768,7 +28768,7 @@ "id": 1762, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4910:7:9", + "src": "4880:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28781,10 +28781,10 @@ "id": 1765, "mutability": "mutable", "name": "data", - "nameLocation": "4944:4:9", + "nameLocation": "4914:4:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "4929:19:9", + "src": "4899:19:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -28795,7 +28795,7 @@ "id": 1764, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4929:5:9", + "src": "4899:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -28808,10 +28808,10 @@ "id": 1767, "mutability": "mutable", "name": "predecessor", - "nameLocation": "4962:11:9", + "nameLocation": "4932:11:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "4954:19:9", + "src": "4924:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28822,7 +28822,7 @@ "id": 1766, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4954:7:9", + "src": "4924:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28835,10 +28835,10 @@ "id": 1769, "mutability": "mutable", "name": "salt", - "nameLocation": "4987:4:9", + "nameLocation": "4957:4:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "4979:12:9", + "src": "4949:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28849,7 +28849,7 @@ "id": 1768, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4979:7:9", + "src": "4949:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28858,7 +28858,7 @@ "visibility": "internal" } ], - "src": "4884:111:9" + "src": "4854:111:9" }, "returnParameters": { "id": 1773, @@ -28869,10 +28869,10 @@ "id": 1772, "mutability": "mutable", "name": "hash", - "nameLocation": "5033:4:9", + "nameLocation": "5003:4:9", "nodeType": "VariableDeclaration", "scope": 1786, - "src": "5025:12:9", + "src": "4995:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28883,7 +28883,7 @@ "id": 1771, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5025:7:9", + "src": "4995:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28892,10 +28892,10 @@ "visibility": "internal" } ], - "src": "5024:14:9" + "src": "4994:14:9" }, "scope": 2331, - "src": "4862:256:9", + "src": "4832:256:9", "stateMutability": "pure", "virtual": true, "visibility": "public" @@ -28904,7 +28904,7 @@ "body": { "id": 1816, "nodeType": "Block", - "src": "5433:82:9", + "src": "5403:82:9", "statements": [ { "expression": { @@ -28917,7 +28917,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, - "src": "5467:7:9", + "src": "5437:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -28929,7 +28929,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, - "src": "5476:6:9", + "src": "5446:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -28941,7 +28941,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1796, - "src": "5484:5:9", + "src": "5454:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -28953,7 +28953,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1798, - "src": "5491:11:9", + "src": "5461:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -28965,7 +28965,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1800, - "src": "5504:4:9", + "src": "5474:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29001,7 +29001,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967295, - "src": "5456:3:9", + "src": "5426:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" @@ -29014,7 +29014,7 @@ "lValueRequested": false, "memberName": "encode", "nodeType": "MemberAccess", - "src": "5456:10:9", + "src": "5426:10:9", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" @@ -29028,7 +29028,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5456:53:9", + "src": "5426:53:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -29048,7 +29048,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "5446:9:9", + "src": "5416:9:9", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" @@ -29062,7 +29062,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5446:64:9", + "src": "5416:64:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -29072,14 +29072,14 @@ "functionReturnParameters": 1804, "id": 1815, "nodeType": "Return", - "src": "5439:71:9" + "src": "5409:71:9" } ] }, "documentation": { "id": 1787, "nodeType": "StructuredDocumentation", - "src": "5122:99:9", + "src": "5092:99:9", "text": " @dev Returns the identifier of an operation containing a batch of\n transactions." }, "functionSelector": "b1c5f427", @@ -29088,7 +29088,7 @@ "kind": "function", "modifiers": [], "name": "hashOperationBatch", - "nameLocation": "5233:18:9", + "nameLocation": "5203:18:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1801, @@ -29099,10 +29099,10 @@ "id": 1790, "mutability": "mutable", "name": "targets", - "nameLocation": "5276:7:9", + "nameLocation": "5246:7:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5257:26:9", + "src": "5227:26:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -29114,7 +29114,7 @@ "id": 1788, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5257:7:9", + "src": "5227:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -29123,7 +29123,7 @@ }, "id": 1789, "nodeType": "ArrayTypeName", - "src": "5257:9:9", + "src": "5227:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -29136,10 +29136,10 @@ "id": 1793, "mutability": "mutable", "name": "values", - "nameLocation": "5308:6:9", + "nameLocation": "5278:6:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5289:25:9", + "src": "5259:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -29151,7 +29151,7 @@ "id": 1791, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5289:7:9", + "src": "5259:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29159,7 +29159,7 @@ }, "id": 1792, "nodeType": "ArrayTypeName", - "src": "5289:9:9", + "src": "5259:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -29172,10 +29172,10 @@ "id": 1796, "mutability": "mutable", "name": "datas", - "nameLocation": "5337:5:9", + "nameLocation": "5307:5:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5320:22:9", + "src": "5290:22:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -29187,7 +29187,7 @@ "id": 1794, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5320:5:9", + "src": "5290:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -29195,7 +29195,7 @@ }, "id": 1795, "nodeType": "ArrayTypeName", - "src": "5320:7:9", + "src": "5290:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -29208,10 +29208,10 @@ "id": 1798, "mutability": "mutable", "name": "predecessor", - "nameLocation": "5356:11:9", + "nameLocation": "5326:11:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5348:19:9", + "src": "5318:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29222,7 +29222,7 @@ "id": 1797, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5348:7:9", + "src": "5318:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29235,10 +29235,10 @@ "id": 1800, "mutability": "mutable", "name": "salt", - "nameLocation": "5381:4:9", + "nameLocation": "5351:4:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5373:12:9", + "src": "5343:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29249,7 +29249,7 @@ "id": 1799, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5373:7:9", + "src": "5343:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29258,7 +29258,7 @@ "visibility": "internal" } ], - "src": "5251:138:9" + "src": "5221:138:9" }, "returnParameters": { "id": 1804, @@ -29269,10 +29269,10 @@ "id": 1803, "mutability": "mutable", "name": "hash", - "nameLocation": "5427:4:9", + "nameLocation": "5397:4:9", "nodeType": "VariableDeclaration", "scope": 1817, - "src": "5419:12:9", + "src": "5389:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29283,7 +29283,7 @@ "id": 1802, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5419:7:9", + "src": "5389:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29292,10 +29292,10 @@ "visibility": "internal" } ], - "src": "5418:14:9" + "src": "5388:14:9" }, "scope": 2331, - "src": "5224:291:9", + "src": "5194:291:9", "stateMutability": "pure", "virtual": true, "visibility": "public" @@ -29304,7 +29304,7 @@ "body": { "id": 1861, "nodeType": "Block", - "src": "5902:175:9", + "src": "5872:175:9", "statements": [ { "assignments": [ @@ -29316,10 +29316,10 @@ "id": 1837, "mutability": "mutable", "name": "id", - "nameLocation": "5916:2:9", + "nameLocation": "5886:2:9", "nodeType": "VariableDeclaration", "scope": 1861, - "src": "5908:10:9", + "src": "5878:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29330,7 +29330,7 @@ "id": 1836, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5908:7:9", + "src": "5878:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29348,7 +29348,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1820, - "src": "5935:6:9", + "src": "5905:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -29360,7 +29360,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, - "src": "5943:5:9", + "src": "5913:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29372,7 +29372,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1824, - "src": "5950:4:9", + "src": "5920:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -29384,7 +29384,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1826, - "src": "5956:11:9", + "src": "5926:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29396,7 +29396,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1828, - "src": "5969:4:9", + "src": "5939:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29431,7 +29431,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, - "src": "5921:13:9", + "src": "5891:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes calldata,bytes32,bytes32) pure returns (bytes32)" @@ -29445,7 +29445,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5921:53:9", + "src": "5891:53:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -29453,7 +29453,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5908:66:9" + "src": "5878:66:9" }, { "expression": { @@ -29464,7 +29464,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1837, - "src": "5990:2:9", + "src": "5960:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29476,7 +29476,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1830, - "src": "5994:5:9", + "src": "5964:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29499,7 +29499,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1980, - "src": "5980:9:9", + "src": "5950:9:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)" @@ -29513,7 +29513,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5980:20:9", + "src": "5950:20:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -29522,7 +29522,7 @@ }, "id": 1850, "nodeType": "ExpressionStatement", - "src": "5980:20:9" + "src": "5950:20:9" }, { "eventCall": { @@ -29533,7 +29533,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1837, - "src": "6025:2:9", + "src": "5995:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29548,7 +29548,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6029:1:9", + "src": "5999:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -29561,7 +29561,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1820, - "src": "6032:6:9", + "src": "6002:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -29573,7 +29573,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, - "src": "6040:5:9", + "src": "6010:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29585,7 +29585,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1824, - "src": "6047:4:9", + "src": "6017:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -29597,7 +29597,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1826, - "src": "6053:11:9", + "src": "6023:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29609,7 +29609,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1830, - "src": "6066:5:9", + "src": "6036:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29652,7 +29652,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1449, - "src": "6011:13:9", + "src": "5981:13:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256,address,uint256,bytes memory,bytes32,uint256)" @@ -29666,7 +29666,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6011:61:9", + "src": "5981:61:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -29675,14 +29675,14 @@ }, "id": 1860, "nodeType": "EmitStatement", - "src": "6006:66:9" + "src": "5976:66:9" } ] }, "documentation": { "id": 1818, "nodeType": "StructuredDocumentation", - "src": "5519:193:9", + "src": "5489:193:9", "text": " @dev Schedule an operation containing a single transaction.\n Emits a {CallScheduled} event.\n Requirements:\n - the caller must have the 'proposer' role." }, "functionSelector": "01d5062a", @@ -29698,7 +29698,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1407, - "src": "5887:13:9", + "src": "5857:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29712,14 +29712,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "5878:8:9" + "src": "5848:8:9" }, "nodeType": "ModifierInvocation", - "src": "5878:23:9" + "src": "5848:23:9" } ], "name": "schedule", - "nameLocation": "5724:8:9", + "nameLocation": "5694:8:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1831, @@ -29730,10 +29730,10 @@ "id": 1820, "mutability": "mutable", "name": "target", - "nameLocation": "5746:6:9", + "nameLocation": "5716:6:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5738:14:9", + "src": "5708:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29744,7 +29744,7 @@ "id": 1819, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5738:7:9", + "src": "5708:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -29758,10 +29758,10 @@ "id": 1822, "mutability": "mutable", "name": "value", - "nameLocation": "5766:5:9", + "nameLocation": "5736:5:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5758:13:9", + "src": "5728:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29772,7 +29772,7 @@ "id": 1821, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5758:7:9", + "src": "5728:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29785,10 +29785,10 @@ "id": 1824, "mutability": "mutable", "name": "data", - "nameLocation": "5792:4:9", + "nameLocation": "5762:4:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5777:19:9", + "src": "5747:19:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -29799,7 +29799,7 @@ "id": 1823, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5777:5:9", + "src": "5747:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -29812,10 +29812,10 @@ "id": 1826, "mutability": "mutable", "name": "predecessor", - "nameLocation": "5810:11:9", + "nameLocation": "5780:11:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5802:19:9", + "src": "5772:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29826,7 +29826,7 @@ "id": 1825, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5802:7:9", + "src": "5772:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29839,10 +29839,10 @@ "id": 1828, "mutability": "mutable", "name": "salt", - "nameLocation": "5835:4:9", + "nameLocation": "5805:4:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5827:12:9", + "src": "5797:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29853,7 +29853,7 @@ "id": 1827, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5827:7:9", + "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -29866,10 +29866,10 @@ "id": 1830, "mutability": "mutable", "name": "delay", - "nameLocation": "5853:5:9", + "nameLocation": "5823:5:9", "nodeType": "VariableDeclaration", "scope": 1862, - "src": "5845:13:9", + "src": "5815:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -29880,7 +29880,7 @@ "id": 1829, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5845:7:9", + "src": "5815:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29889,16 +29889,16 @@ "visibility": "internal" } ], - "src": "5732:130:9" + "src": "5702:130:9" }, "returnParameters": { "id": 1835, "nodeType": "ParameterList", "parameters": [], - "src": "5902:0:9" + "src": "5872:0:9" }, "scope": 2331, - "src": "5715:362:9", + "src": "5685:362:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" @@ -29907,7 +29907,7 @@ "body": { "id": 1946, "nodeType": "Block", - "src": "6530:520:9", + "src": "6500:520:9", "statements": [ { "expression": { @@ -29929,7 +29929,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1866, - "src": "6551:7:9", + "src": "6521:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -29942,7 +29942,7 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "6551:14:9", + "src": "6521:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -29957,7 +29957,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1869, - "src": "6569:6:9", + "src": "6539:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -29970,13 +29970,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "6569:13:9", + "src": "6539:13:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6551:31:9", + "src": "6521:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -29991,7 +29991,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6590:35:9", + "src": "6560:35:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a34a486f9100b008712958931fe0a50ea69be145b7a3d1e8680fe7decf64e499", "typeString": "literal_string \"BEMultiSigWallet: length mismatch\"" @@ -30018,7 +30018,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "6536:7:9", + "src": "6506:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -30032,7 +30032,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6536:95:9", + "src": "6506:95:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -30041,7 +30041,7 @@ }, "id": 1892, "nodeType": "ExpressionStatement", - "src": "6536:95:9" + "src": "6506:95:9" }, { "expression": { @@ -30063,7 +30063,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1866, - "src": "6652:7:9", + "src": "6622:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -30076,7 +30076,7 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "6652:14:9", + "src": "6622:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30091,7 +30091,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1872, - "src": "6670:5:9", + "src": "6640:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -30104,13 +30104,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "6670:12:9", + "src": "6640:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6652:30:9", + "src": "6622:30:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -30125,7 +30125,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6690:35:9", + "src": "6660:35:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a34a486f9100b008712958931fe0a50ea69be145b7a3d1e8680fe7decf64e499", "typeString": "literal_string \"BEMultiSigWallet: length mismatch\"" @@ -30152,7 +30152,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "6637:7:9", + "src": "6607:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -30166,7 +30166,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6637:94:9", + "src": "6607:94:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -30175,7 +30175,7 @@ }, "id": 1901, "nodeType": "ExpressionStatement", - "src": "6637:94:9" + "src": "6607:94:9" }, { "assignments": [ @@ -30187,10 +30187,10 @@ "id": 1903, "mutability": "mutable", "name": "id", - "nameLocation": "6746:2:9", + "nameLocation": "6716:2:9", "nodeType": "VariableDeclaration", "scope": 1946, - "src": "6738:10:9", + "src": "6708:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -30201,7 +30201,7 @@ "id": 1902, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6738:7:9", + "src": "6708:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30219,7 +30219,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1866, - "src": "6770:7:9", + "src": "6740:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -30231,7 +30231,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1869, - "src": "6779:6:9", + "src": "6749:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -30243,7 +30243,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1872, - "src": "6787:5:9", + "src": "6757:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -30255,7 +30255,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, - "src": "6794:11:9", + "src": "6764:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30267,7 +30267,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1876, - "src": "6807:4:9", + "src": "6777:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30302,7 +30302,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1817, - "src": "6751:18:9", + "src": "6721:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (address[] calldata,uint256[] calldata,bytes calldata[] calldata,bytes32,bytes32) pure returns (bytes32)" @@ -30316,7 +30316,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6751:61:9", + "src": "6721:61:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -30324,7 +30324,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6738:74:9" + "src": "6708:74:9" }, { "expression": { @@ -30335,7 +30335,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1903, - "src": "6828:2:9", + "src": "6798:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30347,7 +30347,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1878, - "src": "6832:5:9", + "src": "6802:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30370,7 +30370,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1980, - "src": "6818:9:9", + "src": "6788:9:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)" @@ -30384,7 +30384,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6818:20:9", + "src": "6788:20:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -30393,13 +30393,13 @@ }, "id": 1916, "nodeType": "ExpressionStatement", - "src": "6818:20:9" + "src": "6788:20:9" }, { "body": { "id": 1944, "nodeType": "Block", - "src": "6889:157:9", + "src": "6859:157:9", "statements": [ { "eventCall": { @@ -30410,7 +30410,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1903, - "src": "6925:2:9", + "src": "6895:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30422,7 +30422,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6937:1:9", + "src": "6907:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30435,7 +30435,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1866, - "src": "6948:7:9", + "src": "6918:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -30448,7 +30448,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6956:1:9", + "src": "6926:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30459,7 +30459,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6948:10:9", + "src": "6918:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -30472,7 +30472,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1869, - "src": "6968:6:9", + "src": "6938:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -30485,7 +30485,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6975:1:9", + "src": "6945:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30496,7 +30496,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6968:9:9", + "src": "6938:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30509,7 +30509,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1872, - "src": "6987:5:9", + "src": "6957:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -30522,7 +30522,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6993:1:9", + "src": "6963:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30533,7 +30533,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6987:8:9", + "src": "6957:8:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -30545,7 +30545,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, - "src": "7005:11:9", + "src": "6975:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30557,7 +30557,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1878, - "src": "7026:5:9", + "src": "6996:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30600,7 +30600,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1449, - "src": "6902:13:9", + "src": "6872:13:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256,address,uint256,bytes memory,bytes32,uint256)" @@ -30614,7 +30614,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6902:137:9", + "src": "6872:137:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -30623,7 +30623,7 @@ }, "id": 1943, "nodeType": "EmitStatement", - "src": "6897:142:9" + "src": "6867:142:9" } ] }, @@ -30643,7 +30643,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6864:1:9", + "src": "6834:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30658,7 +30658,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1866, - "src": "6868:7:9", + "src": "6838:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -30671,13 +30671,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "6868:14:9", + "src": "6838:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6864:18:9", + "src": "6834:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -30694,10 +30694,10 @@ "id": 1918, "mutability": "mutable", "name": "i", - "nameLocation": "6857:1:9", + "nameLocation": "6827:1:9", "nodeType": "VariableDeclaration", "scope": 1945, - "src": "6849:9:9", + "src": "6819:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -30708,7 +30708,7 @@ "id": 1917, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6849:7:9", + "src": "6819:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30727,7 +30727,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6861:1:9", + "src": "6831:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -30735,7 +30735,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "6849:13:9" + "src": "6819:13:9" }, "loopExpression": { "expression": { @@ -30747,14 +30747,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "6884:3:9", + "src": "6854:3:9", "subExpression": { "id": 1925, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1918, - "src": "6886:1:9", + "src": "6856:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30767,17 +30767,17 @@ }, "id": 1927, "nodeType": "ExpressionStatement", - "src": "6884:3:9" + "src": "6854:3:9" }, "nodeType": "ForStatement", - "src": "6844:202:9" + "src": "6814:202:9" } ] }, "documentation": { "id": 1863, "nodeType": "StructuredDocumentation", - "src": "6081:227:9", + "src": "6051:227:9", "text": " @dev Schedule an operation containing a batch of transactions.\n Emits one {CallScheduled} event per transaction in the batch.\n Requirements:\n - the caller must have the 'proposer' role." }, "functionSelector": "8f2a0bb0", @@ -30793,7 +30793,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1407, - "src": "6515:13:9", + "src": "6485:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30807,14 +30807,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "6506:8:9" + "src": "6476:8:9" }, "nodeType": "ModifierInvocation", - "src": "6506:23:9" + "src": "6476:23:9" } ], "name": "scheduleBatch", - "nameLocation": "6320:13:9", + "nameLocation": "6290:13:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1879, @@ -30825,10 +30825,10 @@ "id": 1866, "mutability": "mutable", "name": "targets", - "nameLocation": "6358:7:9", + "nameLocation": "6328:7:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6339:26:9", + "src": "6309:26:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -30840,7 +30840,7 @@ "id": 1864, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6339:7:9", + "src": "6309:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -30849,7 +30849,7 @@ }, "id": 1865, "nodeType": "ArrayTypeName", - "src": "6339:9:9", + "src": "6309:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -30862,10 +30862,10 @@ "id": 1869, "mutability": "mutable", "name": "values", - "nameLocation": "6390:6:9", + "nameLocation": "6360:6:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6371:25:9", + "src": "6341:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -30877,7 +30877,7 @@ "id": 1867, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6371:7:9", + "src": "6341:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -30885,7 +30885,7 @@ }, "id": 1868, "nodeType": "ArrayTypeName", - "src": "6371:9:9", + "src": "6341:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -30898,10 +30898,10 @@ "id": 1872, "mutability": "mutable", "name": "datas", - "nameLocation": "6419:5:9", + "nameLocation": "6389:5:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6402:22:9", + "src": "6372:22:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -30913,7 +30913,7 @@ "id": 1870, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6402:5:9", + "src": "6372:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -30921,7 +30921,7 @@ }, "id": 1871, "nodeType": "ArrayTypeName", - "src": "6402:7:9", + "src": "6372:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -30934,10 +30934,10 @@ "id": 1874, "mutability": "mutable", "name": "predecessor", - "nameLocation": "6438:11:9", + "nameLocation": "6408:11:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6430:19:9", + "src": "6400:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -30948,7 +30948,7 @@ "id": 1873, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6430:7:9", + "src": "6400:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30961,10 +30961,10 @@ "id": 1876, "mutability": "mutable", "name": "salt", - "nameLocation": "6463:4:9", + "nameLocation": "6433:4:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6455:12:9", + "src": "6425:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -30975,7 +30975,7 @@ "id": 1875, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6455:7:9", + "src": "6425:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -30988,10 +30988,10 @@ "id": 1878, "mutability": "mutable", "name": "delay", - "nameLocation": "6481:5:9", + "nameLocation": "6451:5:9", "nodeType": "VariableDeclaration", "scope": 1947, - "src": "6473:13:9", + "src": "6443:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -31002,7 +31002,7 @@ "id": 1877, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6473:7:9", + "src": "6443:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31011,16 +31011,16 @@ "visibility": "internal" } ], - "src": "6333:157:9" + "src": "6303:157:9" }, "returnParameters": { "id": 1883, "nodeType": "ParameterList", "parameters": [], - "src": "6530:0:9" + "src": "6500:0:9" }, "scope": 2331, - "src": "6311:739:9", + "src": "6281:739:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" @@ -31029,7 +31029,7 @@ "body": { "id": 1979, "nodeType": "Block", - "src": "7198:204:9", + "src": "7168:204:9", "statements": [ { "expression": { @@ -31043,7 +31043,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "7212:16:9", + "src": "7182:16:9", "subExpression": { "arguments": [ { @@ -31052,7 +31052,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1950, - "src": "7225:2:9", + "src": "7195:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31071,7 +31071,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1642, - "src": "7213:11:9", + "src": "7183:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -31085,7 +31085,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7213:15:9", + "src": "7183:15:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -31106,7 +31106,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7230:47:9", + "src": "7200:47:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_498a98edde27c28694cc7d4941f82dd71ff5085e4a93f35609f504b4979a0e12", "typeString": "literal_string \"BEMultiSigWallet: operation already scheduled\"" @@ -31133,7 +31133,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "7204:7:9", + "src": "7174:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -31147,7 +31147,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7204:74:9", + "src": "7174:74:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -31156,7 +31156,7 @@ }, "id": 1962, "nodeType": "ExpressionStatement", - "src": "7204:74:9" + "src": "7174:74:9" }, { "expression": { @@ -31177,7 +31177,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, - "src": "7292:5:9", + "src": "7262:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31191,13 +31191,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, - "src": "7301:8:9", + "src": "7271:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7292:17:9", + "src": "7262:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -31212,7 +31212,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7311:38:9", + "src": "7281:38:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9c4dfb173f7764cc56b8beafaf67c514b7ff532825adbcaadabf621199a1950a", "typeString": "literal_string \"BEMultiSigWallet: insufficient delay\"" @@ -31239,7 +31239,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "7284:7:9", + "src": "7254:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -31253,7 +31253,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7284:66:9", + "src": "7254:66:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -31262,7 +31262,7 @@ }, "id": 1969, "nodeType": "ExpressionStatement", - "src": "7284:66:9" + "src": "7254:66:9" }, { "expression": { @@ -31278,7 +31278,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1422, - "src": "7356:11:9", + "src": "7326:11:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" @@ -31291,7 +31291,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1950, - "src": "7368:2:9", + "src": "7338:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31302,7 +31302,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7356:15:9", + "src": "7326:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31327,7 +31327,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967292, - "src": "7374:5:9", + "src": "7344:5:9", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" @@ -31340,7 +31340,7 @@ "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "7374:15:9", + "src": "7344:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31354,19 +31354,19 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, - "src": "7392:5:9", + "src": "7362:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7374:23:9", + "src": "7344:23:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7356:41:9", + "src": "7326:41:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31374,14 +31374,14 @@ }, "id": 1978, "nodeType": "ExpressionStatement", - "src": "7356:41:9" + "src": "7326:41:9" } ] }, "documentation": { "id": 1948, "nodeType": "StructuredDocumentation", - "src": "7054:87:9", + "src": "7024:87:9", "text": " @dev Schedule an operation that is to becomes valid after a given delay." }, "id": 1980, @@ -31389,7 +31389,7 @@ "kind": "function", "modifiers": [], "name": "_schedule", - "nameLocation": "7153:9:9", + "nameLocation": "7123:9:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1953, @@ -31400,10 +31400,10 @@ "id": 1950, "mutability": "mutable", "name": "id", - "nameLocation": "7171:2:9", + "nameLocation": "7141:2:9", "nodeType": "VariableDeclaration", "scope": 1980, - "src": "7163:10:9", + "src": "7133:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -31414,7 +31414,7 @@ "id": 1949, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "7163:7:9", + "src": "7133:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31427,10 +31427,10 @@ "id": 1952, "mutability": "mutable", "name": "delay", - "nameLocation": "7183:5:9", + "nameLocation": "7153:5:9", "nodeType": "VariableDeclaration", "scope": 1980, - "src": "7175:13:9", + "src": "7145:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -31441,7 +31441,7 @@ "id": 1951, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7175:7:9", + "src": "7145:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31450,16 +31450,16 @@ "visibility": "internal" } ], - "src": "7162:27:9" + "src": "7132:27:9" }, "returnParameters": { "id": 1954, "nodeType": "ParameterList", "parameters": [], - "src": "7198:0:9" + "src": "7168:0:9" }, "scope": 2331, - "src": "7144:258:9", + "src": "7114:258:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" @@ -31468,7 +31468,7 @@ "body": { "id": 2005, "nodeType": "Block", - "src": "7594:164:9", + "src": "7564:164:9", "statements": [ { "expression": { @@ -31481,7 +31481,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1983, - "src": "7634:2:9", + "src": "7604:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31500,7 +31500,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1657, - "src": "7615:18:9", + "src": "7585:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -31514,7 +31514,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7615:22:9", + "src": "7585:22:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -31530,7 +31530,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7645:49:9", + "src": "7615:49:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_18f4f64b96974e466ba9fe4c81e77d3a2e7e7ead1ec0709ce9c4a80df6bbe8e2", "typeString": "literal_string \"BEMultiSigWallet: operation cannot be cancelled\"" @@ -31557,7 +31557,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "7600:7:9", + "src": "7570:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -31571,7 +31571,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7600:100:9", + "src": "7570:100:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -31580,7 +31580,7 @@ }, "id": 1995, "nodeType": "ExpressionStatement", - "src": "7600:100:9" + "src": "7570:100:9" }, { "expression": { @@ -31592,7 +31592,7 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "7706:22:9", + "src": "7676:22:9", "subExpression": { "baseExpression": { "id": 1996, @@ -31600,7 +31600,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1422, - "src": "7713:11:9", + "src": "7683:11:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" @@ -31613,7 +31613,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1983, - "src": "7725:2:9", + "src": "7695:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31624,7 +31624,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7713:15:9", + "src": "7683:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -31637,7 +31637,7 @@ }, "id": 2000, "nodeType": "ExpressionStatement", - "src": "7706:22:9" + "src": "7676:22:9" }, { "eventCall": { @@ -31648,7 +31648,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1983, - "src": "7750:2:9", + "src": "7720:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31667,7 +31667,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1467, - "src": "7740:9:9", + "src": "7710:9:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" @@ -31681,7 +31681,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7740:13:9", + "src": "7710:13:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -31690,14 +31690,14 @@ }, "id": 2004, "nodeType": "EmitStatement", - "src": "7735:18:9" + "src": "7705:18:9" } ] }, "documentation": { "id": 1981, "nodeType": "StructuredDocumentation", - "src": "7406:118:9", + "src": "7376:118:9", "text": " @dev Cancel an operation.\n Requirements:\n - the caller must have the 'proposer' role." }, "functionSelector": "c4d252f5", @@ -31713,7 +31713,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1407, - "src": "7579:13:9", + "src": "7549:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31727,14 +31727,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "7570:8:9" + "src": "7540:8:9" }, "nodeType": "ModifierInvocation", - "src": "7570:23:9" + "src": "7540:23:9" } ], "name": "cancel", - "nameLocation": "7536:6:9", + "nameLocation": "7506:6:9", "nodeType": "FunctionDefinition", "parameters": { "id": 1984, @@ -31745,10 +31745,10 @@ "id": 1983, "mutability": "mutable", "name": "id", - "nameLocation": "7551:2:9", + "nameLocation": "7521:2:9", "nodeType": "VariableDeclaration", "scope": 2006, - "src": "7543:10:9", + "src": "7513:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -31759,7 +31759,7 @@ "id": 1982, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "7543:7:9", + "src": "7513:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31768,16 +31768,16 @@ "visibility": "internal" } ], - "src": "7542:12:9" + "src": "7512:12:9" }, "returnParameters": { "id": 1988, "nodeType": "ParameterList", "parameters": [], - "src": "7594:0:9" + "src": "7564:0:9" }, "scope": 2331, - "src": "7527:231:9", + "src": "7497:231:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" @@ -31786,7 +31786,7 @@ "body": { "id": 2037, "nodeType": "Block", - "src": "7987:194:9", + "src": "7955:194:9", "statements": [ { "expression": { @@ -31799,7 +31799,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, - "src": "8027:2:9", + "src": "7995:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31818,7 +31818,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1657, - "src": "8008:18:9", + "src": "7976:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -31832,7 +31832,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8008:22:9", + "src": "7976:22:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -31848,7 +31848,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8038:51:9", + "src": "8006:51:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f189764673a1904d80a5eac6f1e4952021d4400f0665b76222b6d1047bee845d", "typeString": "literal_string \"BEMultiSigWallet: operation not exist or finished\"" @@ -31875,7 +31875,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "7993:7:9", + "src": "7961:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -31889,7 +31889,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7993:102:9", + "src": "7961:102:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -31898,7 +31898,7 @@ }, "id": 2021, "nodeType": "ExpressionStatement", - "src": "7993:102:9" + "src": "7961:102:9" }, { "expression": { @@ -31915,7 +31915,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1428, - "src": "8101:13:9", + "src": "8069:13:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" @@ -31928,7 +31928,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, - "src": "8115:2:9", + "src": "8083:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -31939,7 +31939,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8101:17:9", + "src": "8069:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -31953,7 +31953,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "8119:3:9", + "src": "8087:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -31966,7 +31966,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "8119:10:9", + "src": "8087:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -31977,7 +31977,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8101:29:9", + "src": "8069:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -31994,14 +31994,14 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8133:4:9", + "src": "8101:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "8101:36:9", + "src": "8069:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -32009,7 +32009,7 @@ }, "id": 2030, "nodeType": "ExpressionStatement", - "src": "8101:36:9" + "src": "8069:36:9" }, { "eventCall": { @@ -32021,7 +32021,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "8161:3:9", + "src": "8129:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -32034,7 +32034,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "8161:10:9", + "src": "8129:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -32046,7 +32046,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, - "src": "8173:2:9", + "src": "8141:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32069,7 +32069,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, - "src": "8148:12:9", + "src": "8116:12:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$", "typeString": "function (address,bytes32)" @@ -32083,7 +32083,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8148:28:9", + "src": "8116:28:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32092,14 +32092,14 @@ }, "id": 2036, "nodeType": "EmitStatement", - "src": "8143:33:9" + "src": "8111:33:9" } ] }, "documentation": { "id": 2007, "nodeType": "StructuredDocumentation", - "src": "7762:131:9", + "src": "7732:131:9", "text": " @dev Allows an executor to confirm a transaction.\n Requirements\n - the caller must have the 'executor' role." }, "functionSelector": "79716e43", @@ -32115,7 +32115,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "7970:13:9", + "src": "7940:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32129,14 +32129,14 @@ "name": "onlyRoleOrOpenRole", "nodeType": "IdentifierPath", "referencedDeclaration": 1622, - "src": "7951:18:9" + "src": "7921:18:9" }, "nodeType": "ModifierInvocation", - "src": "7951:33:9" + "src": "7921:33:9" } ], "name": "confirmTransaction", - "nameLocation": "7905:18:9", + "nameLocation": "7875:18:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2010, @@ -32147,10 +32147,10 @@ "id": 2009, "mutability": "mutable", "name": "id", - "nameLocation": "7932:2:9", + "nameLocation": "7907:2:9", "nodeType": "VariableDeclaration", "scope": 2038, - "src": "7924:10:9", + "src": "7899:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -32161,7 +32161,7 @@ "id": 2008, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "7924:7:9", + "src": "7899:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32170,16 +32170,16 @@ "visibility": "internal" } ], - "src": "7923:12:9" + "src": "7893:20:9" }, "returnParameters": { "id": 2014, "nodeType": "ParameterList", "parameters": [], - "src": "7987:0:9" + "src": "7955:0:9" }, "scope": 2331, - "src": "7896:285:9", + "src": "7866:283:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -32188,7 +32188,7 @@ "body": { "id": 2069, "nodeType": "Block", - "src": "8428:193:9", + "src": "8394:193:9", "statements": [ { "expression": { @@ -32201,7 +32201,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2041, - "src": "8468:2:9", + "src": "8434:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32220,7 +32220,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1657, - "src": "8449:18:9", + "src": "8415:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -32234,7 +32234,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8449:22:9", + "src": "8415:22:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -32250,7 +32250,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8479:51:9", + "src": "8445:51:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f189764673a1904d80a5eac6f1e4952021d4400f0665b76222b6d1047bee845d", "typeString": "literal_string \"BEMultiSigWallet: operation not exist or finished\"" @@ -32277,7 +32277,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "8434:7:9", + "src": "8400:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -32291,7 +32291,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8434:102:9", + "src": "8400:102:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32300,7 +32300,7 @@ }, "id": 2053, "nodeType": "ExpressionStatement", - "src": "8434:102:9" + "src": "8400:102:9" }, { "expression": { @@ -32317,7 +32317,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1428, - "src": "8542:13:9", + "src": "8508:13:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" @@ -32330,7 +32330,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2041, - "src": "8556:2:9", + "src": "8522:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32341,7 +32341,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8542:17:9", + "src": "8508:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -32355,7 +32355,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "8560:3:9", + "src": "8526:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -32368,7 +32368,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "8560:10:9", + "src": "8526:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -32379,7 +32379,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "8542:29:9", + "src": "8508:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -32396,14 +32396,14 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8574:5:9", + "src": "8540:5:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "8542:37:9", + "src": "8508:37:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -32411,7 +32411,7 @@ }, "id": 2062, "nodeType": "ExpressionStatement", - "src": "8542:37:9" + "src": "8508:37:9" }, { "eventCall": { @@ -32423,7 +32423,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "8601:3:9", + "src": "8567:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -32436,7 +32436,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "8601:10:9", + "src": "8567:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -32448,7 +32448,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2041, - "src": "8613:2:9", + "src": "8579:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32471,7 +32471,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, - "src": "8590:10:9", + "src": "8556:10:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$", "typeString": "function (address,bytes32)" @@ -32485,7 +32485,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8590:26:9", + "src": "8556:26:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32494,14 +32494,14 @@ }, "id": 2068, "nodeType": "EmitStatement", - "src": "8585:31:9" + "src": "8551:31:9" } ] }, "documentation": { "id": 2039, "nodeType": "StructuredDocumentation", - "src": "8185:149:9", + "src": "8153:149:9", "text": " @dev Allows an executor to revoke a confirmation for a transaction.\n Requirements\n - the caller must have the 'executor' role." }, "functionSelector": "f3fc536d", @@ -32517,7 +32517,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "8411:13:9", + "src": "8379:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32531,14 +32531,14 @@ "name": "onlyRoleOrOpenRole", "nodeType": "IdentifierPath", "referencedDeclaration": 1622, - "src": "8392:18:9" + "src": "8360:18:9" }, "nodeType": "ModifierInvocation", - "src": "8392:33:9" + "src": "8360:33:9" } ], "name": "revokeConfirmation", - "nameLocation": "8346:18:9", + "nameLocation": "8314:18:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2042, @@ -32549,10 +32549,10 @@ "id": 2041, "mutability": "mutable", "name": "id", - "nameLocation": "8373:2:9", + "nameLocation": "8346:2:9", "nodeType": "VariableDeclaration", "scope": 2070, - "src": "8365:10:9", + "src": "8338:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -32563,7 +32563,7 @@ "id": 2040, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8365:7:9", + "src": "8338:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32572,16 +32572,16 @@ "visibility": "internal" } ], - "src": "8364:12:9" + "src": "8332:20:9" }, "returnParameters": { "id": 2046, "nodeType": "ParameterList", "parameters": [], - "src": "8428:0:9" + "src": "8394:0:9" }, "scope": 2331, - "src": "8337:284:9", + "src": "8305:282:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -32590,7 +32590,7 @@ "body": { "id": 2114, "nodeType": "Block", - "src": "9012:170:9", + "src": "8978:170:9", "statements": [ { "assignments": [ @@ -32602,10 +32602,10 @@ "id": 2088, "mutability": "mutable", "name": "id", - "nameLocation": "9026:2:9", + "nameLocation": "8992:2:9", "nodeType": "VariableDeclaration", "scope": 2114, - "src": "9018:10:9", + "src": "8984:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -32616,7 +32616,7 @@ "id": 2087, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9018:7:9", + "src": "8984:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32634,7 +32634,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2073, - "src": "9045:6:9", + "src": "9011:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -32646,7 +32646,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2075, - "src": "9053:5:9", + "src": "9019:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -32658,7 +32658,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2077, - "src": "9060:4:9", + "src": "9026:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -32670,7 +32670,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, - "src": "9066:11:9", + "src": "9032:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32682,7 +32682,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2081, - "src": "9079:4:9", + "src": "9045:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32717,7 +32717,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, - "src": "9031:13:9", + "src": "8997:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes calldata,bytes32,bytes32) pure returns (bytes32)" @@ -32731,7 +32731,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9031:53:9", + "src": "8997:53:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -32739,7 +32739,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9018:66:9" + "src": "8984:66:9" }, { "expression": { @@ -32750,7 +32750,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2088, - "src": "9102:2:9", + "src": "9068:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32762,7 +32762,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, - "src": "9106:11:9", + "src": "9072:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32785,7 +32785,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2237, - "src": "9090:11:9", + "src": "9056:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32) view" @@ -32799,7 +32799,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9090:28:9", + "src": "9056:28:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32808,7 +32808,7 @@ }, "id": 2101, "nodeType": "ExpressionStatement", - "src": "9090:28:9" + "src": "9056:28:9" }, { "expression": { @@ -32819,7 +32819,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2088, - "src": "9130:2:9", + "src": "9096:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32834,7 +32834,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9134:1:9", + "src": "9100:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -32847,7 +32847,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2073, - "src": "9137:6:9", + "src": "9103:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -32859,7 +32859,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2075, - "src": "9145:5:9", + "src": "9111:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -32871,7 +32871,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2077, - "src": "9152:4:9", + "src": "9118:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -32906,7 +32906,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2294, - "src": "9124:5:9", + "src": "9090:5:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", "typeString": "function (bytes32,uint256,address,uint256,bytes calldata)" @@ -32920,7 +32920,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9124:33:9", + "src": "9090:33:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32929,7 +32929,7 @@ }, "id": 2109, "nodeType": "ExpressionStatement", - "src": "9124:33:9" + "src": "9090:33:9" }, { "expression": { @@ -32940,7 +32940,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2088, - "src": "9174:2:9", + "src": "9140:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -32959,7 +32959,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2257, - "src": "9163:10:9", + "src": "9129:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" @@ -32973,7 +32973,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9163:14:9", + "src": "9129:14:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -32982,14 +32982,14 @@ }, "id": 2113, "nodeType": "ExpressionStatement", - "src": "9163:14:9" + "src": "9129:14:9" } ] }, "documentation": { "id": 2071, "nodeType": "StructuredDocumentation", - "src": "8625:199:9", + "src": "8591:199:9", "text": " @dev Execute an (ready) operation containing a single transaction.\n Emits a {CallExecuted} event.\n Requirements:\n - the caller must have the 'executor' role." }, "functionSelector": "134008d3", @@ -33005,7 +33005,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "8997:13:9", + "src": "8963:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33019,14 +33019,14 @@ "name": "onlyRoleOrOpenRole", "nodeType": "IdentifierPath", "referencedDeclaration": 1622, - "src": "8978:18:9" + "src": "8944:18:9" }, "nodeType": "ModifierInvocation", - "src": "8978:33:9" + "src": "8944:33:9" } ], "name": "execute", - "nameLocation": "8836:7:9", + "nameLocation": "8802:7:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2082, @@ -33037,10 +33037,10 @@ "id": 2073, "mutability": "mutable", "name": "target", - "nameLocation": "8857:6:9", + "nameLocation": "8823:6:9", "nodeType": "VariableDeclaration", "scope": 2115, - "src": "8849:14:9", + "src": "8815:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33051,7 +33051,7 @@ "id": 2072, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8849:7:9", + "src": "8815:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -33065,10 +33065,10 @@ "id": 2075, "mutability": "mutable", "name": "value", - "nameLocation": "8877:5:9", + "nameLocation": "8843:5:9", "nodeType": "VariableDeclaration", "scope": 2115, - "src": "8869:13:9", + "src": "8835:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33079,7 +33079,7 @@ "id": 2074, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8869:7:9", + "src": "8835:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33092,10 +33092,10 @@ "id": 2077, "mutability": "mutable", "name": "data", - "nameLocation": "8903:4:9", + "nameLocation": "8869:4:9", "nodeType": "VariableDeclaration", "scope": 2115, - "src": "8888:19:9", + "src": "8854:19:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -33106,7 +33106,7 @@ "id": 2076, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "8888:5:9", + "src": "8854:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -33119,10 +33119,10 @@ "id": 2079, "mutability": "mutable", "name": "predecessor", - "nameLocation": "8921:11:9", + "nameLocation": "8887:11:9", "nodeType": "VariableDeclaration", "scope": 2115, - "src": "8913:19:9", + "src": "8879:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33133,7 +33133,7 @@ "id": 2078, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8913:7:9", + "src": "8879:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33146,10 +33146,10 @@ "id": 2081, "mutability": "mutable", "name": "salt", - "nameLocation": "8946:4:9", + "nameLocation": "8912:4:9", "nodeType": "VariableDeclaration", "scope": 2115, - "src": "8938:12:9", + "src": "8904:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33160,7 +33160,7 @@ "id": 2080, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "8938:7:9", + "src": "8904:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33169,16 +33169,16 @@ "visibility": "internal" } ], - "src": "8843:111:9" + "src": "8809:111:9" }, "returnParameters": { "id": 2086, "nodeType": "ParameterList", "parameters": [], - "src": "9012:0:9" + "src": "8978:0:9" }, "scope": 2331, - "src": "8827:355:9", + "src": "8793:355:9", "stateMutability": "payable", "virtual": true, "visibility": "public" @@ -33187,7 +33187,7 @@ "body": { "id": 2199, "nodeType": "Block", - "src": "9639:451:9", + "src": "9605:451:9", "statements": [ { "expression": { @@ -33209,7 +33209,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2119, - "src": "9660:7:9", + "src": "9626:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -33222,7 +33222,7 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "9660:14:9", + "src": "9626:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33237,7 +33237,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2122, - "src": "9678:6:9", + "src": "9644:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -33250,13 +33250,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "9678:13:9", + "src": "9644:13:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9660:31:9", + "src": "9626:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -33271,7 +33271,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9699:35:9", + "src": "9665:35:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a34a486f9100b008712958931fe0a50ea69be145b7a3d1e8680fe7decf64e499", "typeString": "literal_string \"BEMultiSigWallet: length mismatch\"" @@ -33298,7 +33298,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "9645:7:9", + "src": "9611:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -33312,7 +33312,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9645:95:9", + "src": "9611:95:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -33321,7 +33321,7 @@ }, "id": 2143, "nodeType": "ExpressionStatement", - "src": "9645:95:9" + "src": "9611:95:9" }, { "expression": { @@ -33343,7 +33343,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2119, - "src": "9761:7:9", + "src": "9727:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -33356,7 +33356,7 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "9761:14:9", + "src": "9727:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33371,7 +33371,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2125, - "src": "9779:5:9", + "src": "9745:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -33384,13 +33384,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "9779:12:9", + "src": "9745:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9761:30:9", + "src": "9727:30:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -33405,7 +33405,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9799:35:9", + "src": "9765:35:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a34a486f9100b008712958931fe0a50ea69be145b7a3d1e8680fe7decf64e499", "typeString": "literal_string \"BEMultiSigWallet: length mismatch\"" @@ -33432,7 +33432,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "9746:7:9", + "src": "9712:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -33446,7 +33446,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9746:94:9", + "src": "9712:94:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -33455,7 +33455,7 @@ }, "id": 2152, "nodeType": "ExpressionStatement", - "src": "9746:94:9" + "src": "9712:94:9" }, { "assignments": [ @@ -33467,10 +33467,10 @@ "id": 2154, "mutability": "mutable", "name": "id", - "nameLocation": "9855:2:9", + "nameLocation": "9821:2:9", "nodeType": "VariableDeclaration", "scope": 2199, - "src": "9847:10:9", + "src": "9813:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33481,7 +33481,7 @@ "id": 2153, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9847:7:9", + "src": "9813:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33499,7 +33499,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2119, - "src": "9879:7:9", + "src": "9845:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -33511,7 +33511,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2122, - "src": "9888:6:9", + "src": "9854:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -33523,7 +33523,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2125, - "src": "9896:5:9", + "src": "9862:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -33535,7 +33535,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2127, - "src": "9903:11:9", + "src": "9869:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33547,7 +33547,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2129, - "src": "9916:4:9", + "src": "9882:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33582,7 +33582,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1817, - "src": "9860:18:9", + "src": "9826:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", "typeString": "function (address[] calldata,uint256[] calldata,bytes calldata[] calldata,bytes32,bytes32) pure returns (bytes32)" @@ -33596,7 +33596,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9860:61:9", + "src": "9826:61:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -33604,7 +33604,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9847:74:9" + "src": "9813:74:9" }, { "expression": { @@ -33615,7 +33615,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2154, - "src": "9939:2:9", + "src": "9905:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33627,7 +33627,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2127, - "src": "9943:11:9", + "src": "9909:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33650,7 +33650,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2237, - "src": "9927:11:9", + "src": "9893:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32) view" @@ -33664,7 +33664,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9927:28:9", + "src": "9893:28:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -33673,13 +33673,13 @@ }, "id": 2167, "nodeType": "ExpressionStatement", - "src": "9927:28:9" + "src": "9893:28:9" }, { "body": { "id": 2193, "nodeType": "Block", - "src": "10006:60:9", + "src": "9972:60:9", "statements": [ { "expression": { @@ -33690,7 +33690,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2154, - "src": "10020:2:9", + "src": "9986:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -33702,7 +33702,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "10024:1:9", + "src": "9990:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33715,7 +33715,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2119, - "src": "10027:7:9", + "src": "9993:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -33728,7 +33728,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "10035:1:9", + "src": "10001:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33739,7 +33739,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10027:10:9", + "src": "9993:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -33752,7 +33752,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2122, - "src": "10039:6:9", + "src": "10005:6:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -33765,7 +33765,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "10046:1:9", + "src": "10012:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33776,7 +33776,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10039:9:9", + "src": "10005:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33789,7 +33789,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2125, - "src": "10050:5:9", + "src": "10016:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" @@ -33802,7 +33802,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "10056:1:9", + "src": "10022:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33813,7 +33813,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10050:8:9", + "src": "10016:8:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -33848,7 +33848,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2294, - "src": "10014:5:9", + "src": "9980:5:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", "typeString": "function (bytes32,uint256,address,uint256,bytes calldata)" @@ -33862,7 +33862,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10014:45:9", + "src": "9980:45:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -33871,7 +33871,7 @@ }, "id": 2192, "nodeType": "ExpressionStatement", - "src": "10014:45:9" + "src": "9980:45:9" } ] }, @@ -33891,7 +33891,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "9981:1:9", + "src": "9947:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33906,7 +33906,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2119, - "src": "9985:7:9", + "src": "9951:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" @@ -33919,13 +33919,13 @@ "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "9985:14:9", + "src": "9951:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9981:18:9", + "src": "9947:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -33942,10 +33942,10 @@ "id": 2169, "mutability": "mutable", "name": "i", - "nameLocation": "9974:1:9", + "nameLocation": "9940:1:9", "nodeType": "VariableDeclaration", "scope": 2194, - "src": "9966:9:9", + "src": "9932:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -33956,7 +33956,7 @@ "id": 2168, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9966:7:9", + "src": "9932:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -33975,7 +33975,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9978:1:9", + "src": "9944:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -33983,7 +33983,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "9966:13:9" + "src": "9932:13:9" }, "loopExpression": { "expression": { @@ -33995,14 +33995,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "10001:3:9", + "src": "9967:3:9", "subExpression": { "id": 2176, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2169, - "src": "10003:1:9", + "src": "9969:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -34015,10 +34015,10 @@ }, "id": 2178, "nodeType": "ExpressionStatement", - "src": "10001:3:9" + "src": "9967:3:9" }, "nodeType": "ForStatement", - "src": "9961:105:9" + "src": "9927:105:9" }, { "expression": { @@ -34029,7 +34029,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2154, - "src": "10082:2:9", + "src": "10048:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34048,7 +34048,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2257, - "src": "10071:10:9", + "src": "10037:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" @@ -34062,7 +34062,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10071:14:9", + "src": "10037:14:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -34071,14 +34071,14 @@ }, "id": 2198, "nodeType": "ExpressionStatement", - "src": "10071:14:9" + "src": "10037:14:9" } ] }, "documentation": { "id": 2116, "nodeType": "StructuredDocumentation", - "src": "9186:233:9", + "src": "9152:233:9", "text": " @dev Execute an (ready) operation containing a batch of transactions.\n Emits one {CallExecuted} event per transaction in the batch.\n Requirements:\n - the caller must have the 'executor' role." }, "functionSelector": "e38335e5", @@ -34094,7 +34094,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1412, - "src": "9624:13:9", + "src": "9590:13:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34108,14 +34108,14 @@ "name": "onlyRoleOrOpenRole", "nodeType": "IdentifierPath", "referencedDeclaration": 1622, - "src": "9605:18:9" + "src": "9571:18:9" }, "nodeType": "ModifierInvocation", - "src": "9605:33:9" + "src": "9571:33:9" } ], "name": "executeBatch", - "nameLocation": "9431:12:9", + "nameLocation": "9397:12:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2130, @@ -34126,10 +34126,10 @@ "id": 2119, "mutability": "mutable", "name": "targets", - "nameLocation": "9468:7:9", + "nameLocation": "9434:7:9", "nodeType": "VariableDeclaration", "scope": 2200, - "src": "9449:26:9", + "src": "9415:26:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -34141,7 +34141,7 @@ "id": 2117, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9449:7:9", + "src": "9415:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -34150,7 +34150,7 @@ }, "id": 2118, "nodeType": "ArrayTypeName", - "src": "9449:9:9", + "src": "9415:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -34163,10 +34163,10 @@ "id": 2122, "mutability": "mutable", "name": "values", - "nameLocation": "9500:6:9", + "nameLocation": "9466:6:9", "nodeType": "VariableDeclaration", "scope": 2200, - "src": "9481:25:9", + "src": "9447:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -34178,7 +34178,7 @@ "id": 2120, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9481:7:9", + "src": "9447:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -34186,7 +34186,7 @@ }, "id": 2121, "nodeType": "ArrayTypeName", - "src": "9481:9:9", + "src": "9447:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -34199,10 +34199,10 @@ "id": 2125, "mutability": "mutable", "name": "datas", - "nameLocation": "9529:5:9", + "nameLocation": "9495:5:9", "nodeType": "VariableDeclaration", "scope": 2200, - "src": "9512:22:9", + "src": "9478:22:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -34214,7 +34214,7 @@ "id": 2123, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "9512:5:9", + "src": "9478:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -34222,7 +34222,7 @@ }, "id": 2124, "nodeType": "ArrayTypeName", - "src": "9512:7:9", + "src": "9478:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -34235,10 +34235,10 @@ "id": 2127, "mutability": "mutable", "name": "predecessor", - "nameLocation": "9548:11:9", + "nameLocation": "9514:11:9", "nodeType": "VariableDeclaration", "scope": 2200, - "src": "9540:19:9", + "src": "9506:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -34249,7 +34249,7 @@ "id": 2126, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9540:7:9", + "src": "9506:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34262,10 +34262,10 @@ "id": 2129, "mutability": "mutable", "name": "salt", - "nameLocation": "9573:4:9", + "nameLocation": "9539:4:9", "nodeType": "VariableDeclaration", "scope": 2200, - "src": "9565:12:9", + "src": "9531:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -34276,7 +34276,7 @@ "id": 2128, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "9565:7:9", + "src": "9531:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34285,16 +34285,16 @@ "visibility": "internal" } ], - "src": "9443:138:9" + "src": "9409:138:9" }, "returnParameters": { "id": 2134, "nodeType": "ParameterList", "parameters": [], - "src": "9639:0:9" + "src": "9605:0:9" }, "scope": 2331, - "src": "9422:668:9", + "src": "9388:668:9", "stateMutability": "payable", "virtual": true, "visibility": "public" @@ -34303,7 +34303,7 @@ "body": { "id": 2236, "nodeType": "Block", - "src": "10232:326:9", + "src": "10198:326:9", "statements": [ { "expression": { @@ -34316,7 +34316,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2203, - "src": "10263:2:9", + "src": "10229:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34335,7 +34335,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, - "src": "10246:16:9", + "src": "10212:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -34349,7 +34349,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10246:20:9", + "src": "10212:20:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -34365,7 +34365,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10268:42:9", + "src": "10234:42:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3071306add2bfff75b9ab79068a1537f4356af9ed062959388101e0b120a034f", "typeString": "literal_string \"BEMultiSigWallet: operation is not ready\"" @@ -34392,7 +34392,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "10238:7:9", + "src": "10204:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -34406,7 +34406,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10238:73:9", + "src": "10204:73:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -34415,7 +34415,7 @@ }, "id": 2214, "nodeType": "ExpressionStatement", - "src": "10238:73:9" + "src": "10204:73:9" }, { "expression": { @@ -34428,7 +34428,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2203, - "src": "10344:2:9", + "src": "10310:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34447,7 +34447,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1706, - "src": "10332:11:9", + "src": "10298:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -34461,7 +34461,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10332:15:9", + "src": "10298:15:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -34477,7 +34477,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10355:62:9", + "src": "10321:62:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_26f3351a4289a44b9dc71972f9cd6f45d47bd0c7add4c9d1015c299b64c9cdbe", "typeString": "literal_string \"BEMultiSigWallet: operation not reach required confirmations\"" @@ -34504,7 +34504,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "10317:7:9", + "src": "10283:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -34518,7 +34518,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10317:106:9", + "src": "10283:106:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -34527,7 +34527,7 @@ }, "id": 2221, "nodeType": "ExpressionStatement", - "src": "10317:106:9" + "src": "10283:106:9" }, { "expression": { @@ -34558,7 +34558,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2205, - "src": "10444:11:9", + "src": "10410:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34577,7 +34577,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10467:1:9", + "src": "10433:1:9", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -34598,7 +34598,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10459:7:9", + "src": "10425:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" @@ -34607,7 +34607,7 @@ "id": 2224, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "10459:7:9", + "src": "10425:7:9", "typeDescriptions": {} } }, @@ -34619,14 +34619,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10459:10:9", + "src": "10425:10:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "src": "10444:25:9", + "src": "10410:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -34642,7 +34642,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2205, - "src": "10489:11:9", + "src": "10455:11:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34661,7 +34661,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1745, - "src": "10473:15:9", + "src": "10439:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -34675,14 +34675,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10473:28:9", + "src": "10439:28:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "10444:57:9", + "src": "10410:57:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -34697,7 +34697,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10509:38:9", + "src": "10475:38:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dd941925c974bb4b37fc449c3636956979b5143840e3dd79fa264fd005e44275", "typeString": "literal_string \"BEMultiSigWallet: missing dependency\"" @@ -34724,7 +34724,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "10429:7:9", + "src": "10395:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -34738,7 +34738,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10429:124:9", + "src": "10395:124:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -34747,14 +34747,14 @@ }, "id": 2235, "nodeType": "ExpressionStatement", - "src": "10429:124:9" + "src": "10395:124:9" } ] }, "documentation": { "id": 2201, "nodeType": "StructuredDocumentation", - "src": "10094:68:9", + "src": "10060:68:9", "text": " @dev Checks before execution of an operation's calls." }, "id": 2237, @@ -34762,7 +34762,7 @@ "kind": "function", "modifiers": [], "name": "_beforeCall", - "nameLocation": "10174:11:9", + "nameLocation": "10140:11:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2206, @@ -34773,10 +34773,10 @@ "id": 2203, "mutability": "mutable", "name": "id", - "nameLocation": "10194:2:9", + "nameLocation": "10160:2:9", "nodeType": "VariableDeclaration", "scope": 2237, - "src": "10186:10:9", + "src": "10152:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -34787,7 +34787,7 @@ "id": 2202, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "10186:7:9", + "src": "10152:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34800,10 +34800,10 @@ "id": 2205, "mutability": "mutable", "name": "predecessor", - "nameLocation": "10206:11:9", + "nameLocation": "10172:11:9", "nodeType": "VariableDeclaration", "scope": 2237, - "src": "10198:19:9", + "src": "10164:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -34814,7 +34814,7 @@ "id": 2204, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "10198:7:9", + "src": "10164:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34823,16 +34823,16 @@ "visibility": "internal" } ], - "src": "10185:33:9" + "src": "10151:33:9" }, "returnParameters": { "id": 2207, "nodeType": "ParameterList", "parameters": [], - "src": "10232:0:9" + "src": "10198:0:9" }, "scope": 2331, - "src": "10165:393:9", + "src": "10131:393:9", "stateMutability": "view", "virtual": false, "visibility": "private" @@ -34841,7 +34841,7 @@ "body": { "id": 2256, "nodeType": "Block", - "src": "10672:123:9", + "src": "10638:123:9", "statements": [ { "expression": { @@ -34854,7 +34854,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2240, - "src": "10703:2:9", + "src": "10669:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34873,7 +34873,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1730, - "src": "10686:16:9", + "src": "10652:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" @@ -34887,7 +34887,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10686:20:9", + "src": "10652:20:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -34903,7 +34903,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10708:42:9", + "src": "10674:42:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3071306add2bfff75b9ab79068a1537f4356af9ed062959388101e0b120a034f", "typeString": "literal_string \"BEMultiSigWallet: operation is not ready\"" @@ -34930,7 +34930,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "10678:7:9", + "src": "10644:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -34944,7 +34944,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10678:73:9", + "src": "10644:73:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -34953,7 +34953,7 @@ }, "id": 2249, "nodeType": "ExpressionStatement", - "src": "10678:73:9" + "src": "10644:73:9" }, { "expression": { @@ -34969,7 +34969,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1422, - "src": "10757:11:9", + "src": "10723:11:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" @@ -34982,7 +34982,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2240, - "src": "10769:2:9", + "src": "10735:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -34993,7 +34993,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "10757:15:9", + "src": "10723:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35007,13 +35007,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1418, - "src": "10775:15:9", + "src": "10741:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10757:33:9", + "src": "10723:33:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35021,14 +35021,14 @@ }, "id": 2255, "nodeType": "ExpressionStatement", - "src": "10757:33:9" + "src": "10723:33:9" } ] }, "documentation": { "id": 2238, "nodeType": "StructuredDocumentation", - "src": "10562:67:9", + "src": "10528:67:9", "text": " @dev Checks after execution of an operation's calls." }, "id": 2257, @@ -35036,7 +35036,7 @@ "kind": "function", "modifiers": [], "name": "_afterCall", - "nameLocation": "10641:10:9", + "nameLocation": "10607:10:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2241, @@ -35047,10 +35047,10 @@ "id": 2240, "mutability": "mutable", "name": "id", - "nameLocation": "10660:2:9", + "nameLocation": "10626:2:9", "nodeType": "VariableDeclaration", "scope": 2257, - "src": "10652:10:9", + "src": "10618:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35061,7 +35061,7 @@ "id": 2239, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "10652:7:9", + "src": "10618:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -35070,16 +35070,16 @@ "visibility": "internal" } ], - "src": "10651:12:9" + "src": "10617:12:9" }, "returnParameters": { "id": 2242, "nodeType": "ParameterList", "parameters": [], - "src": "10672:0:9" + "src": "10638:0:9" }, "scope": 2331, - "src": "10632:163:9", + "src": "10598:163:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" @@ -35088,7 +35088,7 @@ "body": { "id": 2293, "nodeType": "Block", - "src": "11016:192:9", + "src": "10982:192:9", "statements": [ { "assignments": [ @@ -35101,10 +35101,10 @@ "id": 2272, "mutability": "mutable", "name": "success", - "nameLocation": "11028:7:9", + "nameLocation": "10994:7:9", "nodeType": "VariableDeclaration", "scope": 2293, - "src": "11023:12:9", + "src": "10989:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35115,7 +35115,7 @@ "id": 2271, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11023:4:9", + "src": "10989:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -35134,7 +35134,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2268, - "src": "11067:4:9", + "src": "11033:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -35161,7 +35161,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2264, - "src": "11041:6:9", + "src": "11007:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -35174,7 +35174,7 @@ "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", - "src": "11041:11:9", + "src": "11007:11:9", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" @@ -35196,14 +35196,14 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2266, - "src": "11060:5:9", + "src": "11026:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "src": "11041:25:9", + "src": "11007:25:9", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" @@ -35217,7 +35217,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11041:31:9", + "src": "11007:31:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", @@ -35225,7 +35225,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "11022:50:9" + "src": "10988:50:9" }, { "expression": { @@ -35236,7 +35236,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2272, - "src": "11086:7:9", + "src": "11052:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -35251,7 +35251,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11095:51:9", + "src": "11061:51:9", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4887496109bd7042bc943a0ba0978efb71ff89756cc68bec9bd24ffa06316a33", "typeString": "literal_string \"BEMultiSigWallet: underlying transaction reverted\"" @@ -35278,7 +35278,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "11078:7:9", + "src": "11044:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -35292,7 +35292,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11078:69:9", + "src": "11044:69:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -35301,7 +35301,7 @@ }, "id": 2284, "nodeType": "ExpressionStatement", - "src": "11078:69:9" + "src": "11044:69:9" }, { "eventCall": { @@ -35312,7 +35312,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2260, - "src": "11172:2:9", + "src": "11138:2:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -35324,7 +35324,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2262, - "src": "11176:5:9", + "src": "11142:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35336,7 +35336,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2264, - "src": "11183:6:9", + "src": "11149:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -35348,7 +35348,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2266, - "src": "11191:5:9", + "src": "11157:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35360,7 +35360,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2268, - "src": "11198:4:9", + "src": "11164:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -35395,7 +35395,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1462, - "src": "11159:12:9", + "src": "11125:12:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint256,address,uint256,bytes memory)" @@ -35409,7 +35409,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11159:44:9", + "src": "11125:44:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -35418,14 +35418,14 @@ }, "id": 2292, "nodeType": "EmitStatement", - "src": "11154:49:9" + "src": "11120:49:9" } ] }, "documentation": { "id": 2258, "nodeType": "StructuredDocumentation", - "src": "10799:88:9", + "src": "10765:88:9", "text": " @dev Execute an operation's call.\n Emits a {CallExecuted} event." }, "id": 2294, @@ -35433,7 +35433,7 @@ "kind": "function", "modifiers": [], "name": "_call", - "nameLocation": "10899:5:9", + "nameLocation": "10865:5:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2269, @@ -35444,10 +35444,10 @@ "id": 2260, "mutability": "mutable", "name": "id", - "nameLocation": "10918:2:9", + "nameLocation": "10884:2:9", "nodeType": "VariableDeclaration", "scope": 2294, - "src": "10910:10:9", + "src": "10876:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35458,7 +35458,7 @@ "id": 2259, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "10910:7:9", + "src": "10876:7:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -35471,10 +35471,10 @@ "id": 2262, "mutability": "mutable", "name": "index", - "nameLocation": "10934:5:9", + "nameLocation": "10900:5:9", "nodeType": "VariableDeclaration", "scope": 2294, - "src": "10926:13:9", + "src": "10892:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35485,7 +35485,7 @@ "id": 2261, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10926:7:9", + "src": "10892:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35498,10 +35498,10 @@ "id": 2264, "mutability": "mutable", "name": "target", - "nameLocation": "10953:6:9", + "nameLocation": "10919:6:9", "nodeType": "VariableDeclaration", "scope": 2294, - "src": "10945:14:9", + "src": "10911:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35512,7 +35512,7 @@ "id": 2263, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10945:7:9", + "src": "10911:7:9", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -35526,10 +35526,10 @@ "id": 2266, "mutability": "mutable", "name": "value", - "nameLocation": "10973:5:9", + "nameLocation": "10939:5:9", "nodeType": "VariableDeclaration", "scope": 2294, - "src": "10965:13:9", + "src": "10931:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35540,7 +35540,7 @@ "id": 2265, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10965:7:9", + "src": "10931:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35553,10 +35553,10 @@ "id": 2268, "mutability": "mutable", "name": "data", - "nameLocation": "10999:4:9", + "nameLocation": "10965:4:9", "nodeType": "VariableDeclaration", "scope": 2294, - "src": "10984:19:9", + "src": "10950:19:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -35567,7 +35567,7 @@ "id": 2267, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "10984:5:9", + "src": "10950:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -35576,16 +35576,16 @@ "visibility": "internal" } ], - "src": "10904:103:9" + "src": "10870:103:9" }, "returnParameters": { "id": 2270, "nodeType": "ParameterList", "parameters": [], - "src": "11016:0:9" + "src": "10982:0:9" }, "scope": 2331, - "src": "10890:318:9", + "src": "10856:318:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" @@ -35594,7 +35594,7 @@ "body": { "id": 2311, "nodeType": "Block", - "src": "11641:77:9", + "src": "11607:77:9", "statements": [ { "eventCall": { @@ -35605,7 +35605,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, - "src": "11667:8:9", + "src": "11633:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35617,7 +35617,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, - "src": "11677:9:9", + "src": "11643:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35640,7 +35640,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, - "src": "11652:14:9", + "src": "11618:14:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" @@ -35654,7 +35654,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11652:35:9", + "src": "11618:35:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -35663,7 +35663,7 @@ }, "id": 2306, "nodeType": "EmitStatement", - "src": "11647:40:9" + "src": "11613:40:9" }, { "expression": { @@ -35678,7 +35678,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, - "src": "11693:8:9", + "src": "11659:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35692,13 +35692,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, - "src": "11704:9:9", + "src": "11670:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11693:20:9", + "src": "11659:20:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35706,14 +35706,14 @@ }, "id": 2310, "nodeType": "ExpressionStatement", - "src": "11693:20:9" + "src": "11659:20:9" } ] }, "documentation": { "id": 2295, "nodeType": "StructuredDocumentation", - "src": "11212:358:9", + "src": "11178:358:9", "text": " @dev Changes the minimum wallet duration for future operations.\n Emits a {MinDelayChange} event.\n Requirements:\n - the caller must be the wallet itself. This can only be achieved by scheduling and later executing\n an operation where the wallet is the target and the data is the ABI-encoded call to this function." }, "functionSelector": "5037ec62", @@ -35729,14 +35729,14 @@ "name": "onlyWallet", "nodeType": "IdentifierPath", "referencedDeclaration": 1508, - "src": "11630:10:9" + "src": "11596:10:9" }, "nodeType": "ModifierInvocation", - "src": "11630:10:9" + "src": "11596:10:9" } ], "name": "changeDelay", - "nameLocation": "11582:11:9", + "nameLocation": "11548:11:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2298, @@ -35747,10 +35747,10 @@ "id": 2297, "mutability": "mutable", "name": "_minDelay", - "nameLocation": "11602:9:9", + "nameLocation": "11568:9:9", "nodeType": "VariableDeclaration", "scope": 2312, - "src": "11594:17:9", + "src": "11560:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35761,7 +35761,7 @@ "id": 2296, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "11594:7:9", + "src": "11560:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35770,16 +35770,16 @@ "visibility": "internal" } ], - "src": "11593:19:9" + "src": "11559:19:9" }, "returnParameters": { "id": 2301, "nodeType": "ParameterList", "parameters": [], - "src": "11641:0:9" + "src": "11607:0:9" }, "scope": 2331, - "src": "11573:145:9", + "src": "11539:145:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" @@ -35788,7 +35788,7 @@ "body": { "id": 2329, "nodeType": "Block", - "src": "11967:80:9", + "src": "11933:80:9", "statements": [ { "eventCall": { @@ -35799,7 +35799,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1432, - "src": "11996:8:9", + "src": "11962:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35811,7 +35811,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2315, - "src": "12006:9:9", + "src": "11972:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35834,7 +35834,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, - "src": "11978:17:9", + "src": "11944:17:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" @@ -35848,7 +35848,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11978:38:9", + "src": "11944:38:9", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -35857,7 +35857,7 @@ }, "id": 2324, "nodeType": "EmitStatement", - "src": "11973:43:9" + "src": "11939:43:9" }, { "expression": { @@ -35872,7 +35872,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1432, - "src": "12022:8:9", + "src": "11988:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35886,13 +35886,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2315, - "src": "12033:9:9", + "src": "11999:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "12022:20:9", + "src": "11988:20:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35900,14 +35900,14 @@ }, "id": 2328, "nodeType": "ExpressionStatement", - "src": "12022:20:9" + "src": "11988:20:9" } ] }, "documentation": { "id": 2313, "nodeType": "StructuredDocumentation", - "src": "11722:168:9", + "src": "11688:168:9", "text": " @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.\n @param _required Number of required confirmations." }, "functionSelector": "ba51a6df", @@ -35923,14 +35923,14 @@ "name": "onlyWallet", "nodeType": "IdentifierPath", "referencedDeclaration": 1508, - "src": "11956:10:9" + "src": "11922:10:9" }, "nodeType": "ModifierInvocation", - "src": "11956:10:9" + "src": "11922:10:9" } ], "name": "changeRequirement", - "nameLocation": "11902:17:9", + "nameLocation": "11868:17:9", "nodeType": "FunctionDefinition", "parameters": { "id": 2316, @@ -35941,10 +35941,10 @@ "id": 2315, "mutability": "mutable", "name": "_required", - "nameLocation": "11928:9:9", + "nameLocation": "11894:9:9", "nodeType": "VariableDeclaration", "scope": 2330, - "src": "11920:17:9", + "src": "11886:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -35955,7 +35955,7 @@ "id": 2314, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "11920:7:9", + "src": "11886:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -35964,27 +35964,27 @@ "visibility": "internal" } ], - "src": "11919:19:9" + "src": "11885:19:9" }, "returnParameters": { "id": 2319, "nodeType": "ParameterList", "parameters": [], - "src": "11967:0:9" + "src": "11933:0:9" }, "scope": 2331, - "src": "11893:154:9", + "src": "11859:154:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" } ], "scope": 2332, - "src": "168:11881:9", + "src": "168:11847:9", "usedErrors": [] } ], - "src": "32:12018:9" + "src": "32:11984:9" }, "compiler": { "name": "solc", @@ -35992,7 +35992,7 @@ }, "networks": {}, "schemaVersion": "3.4.11", - "updatedAt": "2023-01-17T09:56:25.802Z", + "updatedAt": "2023-04-07T02:40:27.596Z", "devdoc": { "events": { "CallExecuted(bytes32,uint256,address,uint256,bytes)": { diff --git a/src/chain/BlockChain.ts b/src/chain/BlockChain.ts index 7a5463a..77a421f 100644 --- a/src/chain/BlockChain.ts +++ b/src/chain/BlockChain.ts @@ -1,11 +1,13 @@ import { singleton } from 'decorators/singleton' import logger from 'logger/logger' +import { TaskType } from 'models/RequestTask' import { ConfirmQueue } from 'queue/confirm.queue' import Web3 from 'web3' import { TransactionReceipt, AddedAccount } from 'web3-core' import { ERC20Reactor } from './ERC20Reactor' import { ERC721Reactor } from './ERC721Reactor' import { HttpRetryProvider } from './HttpRetryProvider' +import { WalletReactor } from './WalletReactor' @singleton export class BlockChain { @@ -14,6 +16,7 @@ export class BlockChain { private accountMaster: AddedAccount public erc20Reactor: ERC20Reactor public erc721Reactor: ERC721Reactor + public walletReactor: WalletReactor public confirmQueue: ConfirmQueue public currentBlockNum: number = 0 @@ -32,6 +35,10 @@ export class BlockChain { web3: this.web3, address: process.env.CHAIN_NFT_ADDRESS, }) + this.walletReactor = new WalletReactor({ + web3: this.web3, + address: process.env.CHAIN_WALLET_ADDRESS, + }) } public async getContractInstance(address: string, abi: any) { @@ -56,4 +63,27 @@ export class BlockChain { this.currentBlockNum = await this.web3.eth.getBlockNumber() logger.debug(`update block num: ${this.currentBlockNum}`) } + + public async generateFunAbi(reqData: any) { + let taskType = reqData.type + let abi + switch (taskType) { + case TaskType.MINT_FT: + abi = await this.erc20Reactor.mint(reqData) + break + case TaskType.MINT_NFT: + abi = await this.erc721Reactor.batchMint(reqData) + break + case TaskType.TRANSFER_FT: + abi = await this.erc20Reactor.transfer(reqData) + break + case TaskType.TRANSFER_NFT: + abi = await this.erc721Reactor.transfer(reqData) + break + case TaskType.MINT_PRESALE_BOX: + abi = await this.erc721Reactor.mint(reqData) + break + } + return abi + } } diff --git a/src/chain/ERC20Reactor.ts b/src/chain/ERC20Reactor.ts index ea48caa..f44970d 100644 --- a/src/chain/ERC20Reactor.ts +++ b/src/chain/ERC20Reactor.ts @@ -115,6 +115,7 @@ export class ERC20Reactor { amount, account, gas, + encodeABI = false, }: { address: string from: string @@ -122,19 +123,38 @@ export class ERC20Reactor { account?: string amount: number | string gas?: number + encodeABI: boolean }) { const contract = new this.web3.eth.Contract(abiFt, address, { from: account || this.account.address }) const amountBN = Web3.utils.toBN(Web3.utils.toWei(amount + '')) + if (encodeABI) { + return contract.methods.transfer(to, amountBN).encodeABI() + } return contract.methods.transferFrom(from, to, amountBN).send({ gas: gas || 1000000, }) } - async mint({ address, to, amount, account }: { account?: string; address?: string; to: string; amount: string }) { + async mint({ + address, + to, + amount, + account, + encodeABI = false, + }: { + account?: string + address?: string + to: string + amount: string + encodeABI: boolean + }) { const contract = address ? new this.web3.eth.Contract(abiFt, address, { from: account || this.account.address }) : this.contract let amountBN = Web3.utils.toBN(Web3.utils.toWei(amount + '')) + if (encodeABI) { + return contract.methods.mint(to, amountBN).encodeABI() + } let gas = await contract.methods.mint(to, amountBN).estimateGas({ gas: 1000000 }) return contract.methods.mint(to, amountBN).send({ gas: (gas * 1.1) | 0 }) } diff --git a/src/chain/ERC721Reactor.ts b/src/chain/ERC721Reactor.ts index c83e0ef..b101722 100644 --- a/src/chain/ERC721Reactor.ts +++ b/src/chain/ERC721Reactor.ts @@ -300,6 +300,7 @@ export class ERC721Reactor { tokenId, account, gas, + encodeABI = false, }: { address?: string from: string @@ -307,20 +308,37 @@ export class ERC721Reactor { tokenId: string account?: string gas?: number + encodeABI?: boolean }) { const contract = address ? new this.web3.eth.Contract(abiNft, address, { from: account || this.account.address }) : this.contract + if (encodeABI) { + return contract.methods.safeTransferFrom(from, to, tokenId).encodeABI() + } return contract.methods.safeTransferFrom(from, to, tokenId).send({ from, gas: gas || 1000000, }) } - async mint({ address, to, tokenId }: { address?: string; to: string; tokenId: string }) { + async mint({ + address, + to, + tokenId, + encodeABI = false, + }: { + address?: string + to: string + tokenId: string + encodeABI?: boolean + }) { const contract = address ? new this.web3.eth.Contract(abiNft, address, { from: this.account.address }) : this.contract + if (encodeABI) { + return contract.methods.mint(to, tokenId).encodeABI() + } let gas = await contract.methods.mint(to, tokenId).estimateGas({ gas: 1000000 }) return contract.methods.mint(to, tokenId).send({ gas: (gas * 1.1) | 0 }) } @@ -330,16 +348,21 @@ export class ERC721Reactor { address, to, tokenIds, + encodeABI = false, }: { account?: string address?: string to: string tokenIds: string[] + encodeABI?: boolean }) { const contract = address ? new this.web3.eth.Contract(abiNft, address, { from: account || this.account.address }) : this.contract // let gas = await contract.methods.batchMint(to, tokenIds, configIds).estimateGas({ gas: 1000000 }) + if (encodeABI) { + return contract.methods.batchMint(to, tokenIds).encodeABI() + } return contract.methods.batchMint(to, tokenIds).send({ gas: 1000000 }) } diff --git a/src/chain/WalletReactor.ts b/src/chain/WalletReactor.ts index 88a81b2..ea1d872 100644 --- a/src/chain/WalletReactor.ts +++ b/src/chain/WalletReactor.ts @@ -1,8 +1,24 @@ import { Contract } from 'web3-eth-contract' import Web3 from 'web3' import { Account } from 'web3-core' +import { ZERO_BYTES32 } from 'common/Constants' const abi = require('abis/BEMultiSigWallet.json').abi +/** + * ["address", "uint256", "bytes", "uint256", "bytes32"], + * [target, value, data, predecessor, salt] + * data: method.encodeABI + * salt: generateRandomBytes32(); + */ +export interface IOperationData { + scheduleId?: string + targets: string[] + values: string[] + datas: string[] + predecessor: string + salt: string + transactionHash?: string +} export class WalletReactor { private web3: Web3 private contract: Contract @@ -13,4 +29,97 @@ export class WalletReactor { this.account = this.web3.eth.accounts.wallet[0] this.contract = new this.web3.eth.Contract(abi, address, { from: this.account.address }) } + + /** + * 开启执行一个timelock的任务, 该方法需要有proposer角色 + * @param {*} seconds delay的秒数 + * @returns + */ + async beginSchedule(operation: IOperationData, seconds: number) { + // let operation: any = this.genOperation(contractAddress, 0, data, ZERO_BYTES32, salt) + let res = await this.contract.methods + .scheduleBatch( + operation.targets, + operation.values, + operation.datas, + operation.predecessor, + operation.salt, + seconds, + ) + .send({ gas: 1000000 }) + operation.transactionHash = res.transactionHash + return operation + } + + /** + * 取消定时, 该方法需要有proposer角色 + * @param {bytes32} id beginSchedule返回的id + * @returns + */ + async cancelSchedule(id) { + let res = await this.contract.methods.cancel(id).send({ gas: 1000000 }) + return res + } + /** + * 查询定时 + * @param {bytes32} scheduleId beginSchedule返回的id + * @returns + */ + async querySchedule(scheduleId: string) { + let instance = this.contract + return this.makeBatchRequest([ + instance.methods.isOperation(scheduleId).call(), + instance.methods.isOperationPending(scheduleId).call(), + instance.methods.isOperationReady(scheduleId).call(), + instance.methods.isOperationDone(scheduleId).call(), + instance.methods.getTimestamp(scheduleId).call(), + ]) + } + /** + * 执行schedule的任务, 该方法需要有executor的role + * @returns + */ + async executeSchedule(operation: IOperationData) { + let res = await this.contract.methods + .executeBatch(operation.targets, operation.values, operation.datas, operation.predecessor, operation.salt) + .send({ gas: 1000000 }) + return res + } + + /** + * 组装schedule的请求数据 + * @param {address} targets 方法所在contract的address + * @param {uint256} values 如果调用的方法涉及到转账, 这里表示转账金额 + * @param {bytes} datas 通过contract.methods.methodName(params).encodeABI()获取 + * @param {bytes32} predecessor that specifies a dependency between operations, 如果没有, 则传bytes32(0) + * @param {bytes32} salt 随机串, 用于区分不同的执行任务 + * @returns + */ + genOperation({ targets, values, datas, predecessor, salt }: IOperationData): IOperationData { + const scheduleId = this.web3.utils.keccak256( + this.web3.eth.abi.encodeParameters( + ['[address]', '[uint256]', '[bytes]', 'uint256', 'bytes32'], + [targets, values, datas, predecessor, salt], + ), + ) + return { scheduleId, targets, values, datas, predecessor, salt } + } + + makeBatchRequest(calls: any[], callFrom?: any) { + let batch = new this.web3.BatchRequest() + let promises = calls.map(call => { + return new Promise((resolve, reject) => { + let request = call.request({ from: callFrom }, (error, data) => { + if (error) { + reject(error) + } else { + resolve(data) + } + }) + batch.add(request) + }) + }) + batch.execute() + return Promise.all(promises) + } } diff --git a/src/common/Constants.ts b/src/common/Constants.ts index e1118ce..f051e7b 100644 --- a/src/common/Constants.ts +++ b/src/common/Constants.ts @@ -1 +1,5 @@ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' + +export const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000' + +export const MAX_BATCH_REQ_COUNT = 50 diff --git a/src/models/ChainTask.ts b/src/models/ChainTask.ts index f506458..ae2fafc 100644 --- a/src/models/ChainTask.ts +++ b/src/models/ChainTask.ts @@ -1,5 +1,8 @@ import { getModelForClass, index, modelOptions, mongoose, pre, prop, Ref, Severity } from '@typegoose/typegoose' +import { BlockChain } from 'chain/BlockChain' +import { MAX_BATCH_REQ_COUNT, ZERO_BYTES32 } from 'common/Constants' import { dbconn } from 'decorators/dbconn' +import { generateRandomBytes32 } from 'utils/wallet.util' import { BaseModule } from './Base' import { ReqTaskStatus, RequestTask, RequestTaskClass } from './RequestTask' @@ -13,6 +16,7 @@ export enum TaskStatus { } @dbconn() +@index({ taskId: 1 }, { unique: false }) @modelOptions({ schemaOptions: { collection: 'chain_task', timestamps: true }, options: { allowMixed: Severity.ALLOW }, @@ -110,20 +114,32 @@ export class ChainTaskClass extends BaseModule { let chainTask = await ChainTask.insertOrUpdate({ taskId }, { name, desc, starter, data }) let subTasks: any = [] if (chainTask.newRecord) { + let subTask + let index = 0 for (let sub of data) { - let subType = sub.type - let subTask = new RequestTask({ - taskId, - chainTaskId: chainTask.id, - taskType: subType, - reqData: sub, - maxTryCount, - }) + if (!subTask || subTask.reqDatas.length >= MAX_BATCH_REQ_COUNT) { + index += 1 + subTask = new RequestTask({ + taskId, + index, + chainTaskId: chainTask.id, + reqDatas: [], + maxTryCount, + predecessor: ZERO_BYTES32, + salt: generateRandomBytes32(), + }) + subTasks.push(subTasks) + } + subTask.reqDatas.push(sub) + subTask.targets.push(sub.address) + let abi = await new BlockChain().generateFunAbi(sub) + subTask.datas.push(abi) + subTask.values.push('0') await subTask.save() chainTask.tasks.pushOnce(subTask.id) - subTasks.push(subTask) } } + chainTask.newRecord = false await chainTask.save() return subTasks } diff --git a/src/models/RequestTask.ts b/src/models/RequestTask.ts index fac9ce9..e3659e4 100644 --- a/src/models/RequestTask.ts +++ b/src/models/RequestTask.ts @@ -17,7 +17,8 @@ export enum ReqTaskStatus { NOTSTART = 0, PEDING = 1, WAIT_CONFIRM = 2, - SUCCESS = 3, + WAIT_EXEC = 3, + SUCCESS = 4, REVERT = 8, ERROR = 9, } @@ -34,17 +35,15 @@ export class RequestTaskClass extends BaseModule { @prop({ required: true }) public chainTaskId!: string - @prop({ enum: TaskType, default: TaskType.UNKNOW }) - public taskType: TaskType + @prop({ default: 0 }) + public index: number @prop({ required: true, default: 0 }) public tryCount: number @prop({ required: true, default: 0 }) public maxTryCount: number - /** - * address: string - */ + @prop({ type: mongoose.Schema.Types.Mixed }) public reqData: any @@ -60,6 +59,26 @@ export class RequestTaskClass extends BaseModule { @prop() public endTime: number + //begin for schedule + @prop() + public scheduleId: string + + @prop({ type: () => [String] }) + public targets: string[] + + @prop({ type: () => [String] }) + public datas: string[] + + @prop({ type: () => [String] }) + public values: string[] + + @prop() + public predecessor: string + + @prop() + public salt: string + //end for schedule + @prop() public txHash: string /** @@ -77,28 +96,10 @@ export class RequestTaskClass extends BaseModule { public errMsg: any[] public async requestChain(this: DocumentType) { - let result let self = this self.blockReq = new BlockChain().currentBlockNum await self.save() - - switch (self.taskType) { - case TaskType.MINT_FT: - result = await new BlockChain().erc20Reactor.mint(self.reqData) - break - case TaskType.MINT_NFT: - result = await new BlockChain().erc721Reactor.batchMint(self.reqData) - break - case TaskType.TRANSFER_FT: - result = await new BlockChain().erc20Reactor.transfer(self.reqData) - break - case TaskType.TRANSFER_NFT: - result = await new BlockChain().erc721Reactor.transfer(self.reqData) - break - case TaskType.MINT_PRESALE_BOX: - result = await new BlockChain().erc721Reactor.mint(self.reqData) - break - } + let result = await new BlockChain().walletReactor.beginSchedule(self, 60) logger.info(result) let { transactionHash } = result self.txHash = transactionHash diff --git a/src/service/task.service.ts b/src/service/task.service.ts index 5fbc2a8..7a812e0 100644 --- a/src/service/task.service.ts +++ b/src/service/task.service.ts @@ -1,3 +1,4 @@ +import { BlockChain } from 'chain/BlockChain' import { singleton } from 'decorators/singleton' import { ChainTask } from 'models/ChainTask' import { ChainQueue } from 'queue/chain.queue' @@ -9,6 +10,9 @@ export class TaskSvr { let data = await new WechatWorkService().parseOneTask(spNo) let subTasks = await ChainTask.parseWxApprovalInfo(data) for (let subTask of subTasks) { + let { scheduleId } = new BlockChain().walletReactor.genOperation(subTask) + subTask.scheduleId = scheduleId + await subTask.save() new ChainQueue().addTaskToQueue(subTask) } } diff --git a/src/utils/wallet.util.ts b/src/utils/wallet.util.ts index 47bd9c4..a5b0f78 100644 --- a/src/utils/wallet.util.ts +++ b/src/utils/wallet.util.ts @@ -1,4 +1,4 @@ -import { renderFromTokenMinimalUnit } from "./number.util"; +import { renderFromTokenMinimalUnit } from './number.util' /** * Removes IPFS protocol prefix from input string. @@ -8,13 +8,13 @@ import { renderFromTokenMinimalUnit } from "./number.util"; * @throws Will throw if the url passed is not IPFS. */ export function removeIpfsProtocolPrefix(ipfsUrl: string) { - if (ipfsUrl.startsWith("ipfs://ipfs/")) { - return ipfsUrl.replace("ipfs://ipfs/", ""); - } else if (ipfsUrl.startsWith("ipfs://")) { - return ipfsUrl.replace("ipfs://", ""); + if (ipfsUrl.startsWith('ipfs://ipfs/')) { + return ipfsUrl.replace('ipfs://ipfs/', '') + } else if (ipfsUrl.startsWith('ipfs://')) { + return ipfsUrl.replace('ipfs://', '') } // this method should not be used with non-ipfs urls (i.e. startsWith('ipfs://') === true) - throw new Error("this method should not be used with non ipfs urls"); + throw new Error('this method should not be used with non ipfs urls') } /** @@ -25,16 +25,16 @@ export function removeIpfsProtocolPrefix(ipfsUrl: string) { * @throws Will throw if the url passed is not ipfs. */ export function getIpfsCIDv1AndPath(ipfsUrl: string): { - cid: string; - path?: string; + cid: string + path?: string } { - const url = removeIpfsProtocolPrefix(ipfsUrl); + const url = removeIpfsProtocolPrefix(ipfsUrl) // check if there is a path // (CID is everything preceding first forward slash, path is everything after) - const index = url.indexOf("/"); - const cid = index !== -1 ? url.substring(0, index) : url; - const path = index !== -1 ? url.substring(index) : undefined; + const index = url.indexOf('/') + const cid = index !== -1 ? url.substring(0, index) : url + const path = index !== -1 ? url.substring(index) : undefined //TODO: // We want to ensure that the CID is v1 (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats) // because most cid v0s appear to be incompatible with IPFS subdomains @@ -45,7 +45,7 @@ export function getIpfsCIDv1AndPath(ipfsUrl: string): { return { cid, path, - }; + } } /** @@ -56,9 +56,9 @@ export function getIpfsCIDv1AndPath(ipfsUrl: string): { */ export function addUrlProtocolPrefix(urlString: string): string { if (!urlString.match(/(^http:\/\/)|(^https:\/\/)/u)) { - return `https://${urlString}`; + return `https://${urlString}` } - return urlString; + return urlString } /** @@ -69,21 +69,16 @@ export function addUrlProtocolPrefix(urlString: string): string { * @param subdomainSupported - Boolean indicating whether the URL should be formatted with subdomains or not. * @returns A formatted URL, with the user's preferred IPFS gateway and format (subdomain or not), pointing to an asset hosted on IPFS. */ -export function getFormattedIpfsUrl( - ipfsGateway: string, - ipfsUrl: string, - subdomainSupported: boolean -): string { - const { host, protocol, origin } = new URL(addUrlProtocolPrefix(ipfsGateway)); +export function getFormattedIpfsUrl(ipfsGateway: string, ipfsUrl: string, subdomainSupported: boolean): string { + const { host, protocol, origin } = new URL(addUrlProtocolPrefix(ipfsGateway)) if (subdomainSupported) { - const { cid, path } = getIpfsCIDv1AndPath(ipfsUrl); - return `${protocol}//${cid}.ipfs.${host}${path || ""}`; + const { cid, path } = getIpfsCIDv1AndPath(ipfsUrl) + return `${protocol}//${cid}.ipfs.${host}${path || ''}` } - const cidAndPath = removeIpfsProtocolPrefix(ipfsUrl); - return `${origin}/ipfs/${cidAndPath}`; + const cidAndPath = removeIpfsProtocolPrefix(ipfsUrl) + return `${origin}/ipfs/${cidAndPath}` } - /** * Returns whether the given code corresponds to a smart contract. * @@ -93,27 +88,37 @@ export function getFormattedIpfsUrl( export function isSmartContractCode(code: string) { /* istanbul ignore if */ if (!code) { - return false; + return false } // Geth will return '0x', and ganache-core v2.2.1 will return '0x0' - const smartContractCode = code !== '0x' && code !== '0x0'; - return smartContractCode; + const smartContractCode = code !== '0x' && code !== '0x0' + return smartContractCode } export function formatAddress(address: string) { if (address.length >= 10) { - return address.substring(0, 6) + '...' + address.substring(address.length - 4) + return address.substring(0, 6) + '...' + address.substring(address.length - 4) } else if (address.length > 0 && address.length < 10) { - return address + return address } else { - return '' + return '' } } export function formatMoney(balance: number | string, symbol: string) { if (balance === '-') { - return `- ${symbol}`; + return `- ${symbol}` } let money = renderFromTokenMinimalUnit(balance, 18, 4) - return `${money} ${symbol}`; -} \ No newline at end of file + return `${money} ${symbol}` +} + +/** + * 生成随机的bytes32的字符串 + * @returns + */ +export function generateRandomBytes32() { + const v1 = (Math.random() * 9000000 + 1000000) | 0 + const v2 = (Math.random() * 900000 + 100000) | 0 + return this.web3.utils.asciiToHex(v1 + '' + v2) +}