UNPKG

@openzeppelin/contracts-upgradeable

Version:
731 lines (730 loc) 41.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "TimelockControllerUpgradeable", "sourceName": "contracts/governance/TimelockControllerUpgradeable.sol", "abi": [ { "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": false, "internalType": "uint256", "name": "oldDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newDuration", "type": "uint256" } ], "name": "MinDelayChange", "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": "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": [], "name": "getMinDelay", "outputs": [ { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "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": "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": "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": [ { "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": "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" }, { "inputs": [ { "internalType": "uint256", "name": "newDelay", "type": "uint256" } ], "name": "updateDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x608060405234801561001057600080fd5b506119a2806100206000396000f3fe60806040526004361061014f5760003560e01c806364d62353116100b6578063b1c5f4271161006f578063b1c5f427146103f2578063c4d252f514610412578063d45c443514610432578063d547741f1461045f578063e38335e51461047f578063f27a0c921461049257610156565b806364d623531461033b5780638065657f1461035b5780638f2a0bb01461037b5780638f61f4f51461039b57806391d14854146103bd578063a217fddf146103dd57610156565b8063248a9ca311610108578063248a9ca31461025b5780632ab0f5291461028b5780632f2ff15d146102bb57806331d50750146102db57806336568abe146102fb578063584b153e1461031b57610156565b806301d5062a1461015b57806301ffc9a71461017d57806307bd0265146101b25780630d3cf6fc146101f4578063134008d31461022857806313bc9f201461023b57610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611317565b6104a7565b005b34801561018957600080fd5b5061019d610198366004611520565b61052c565b60405190151581526020015b60405180910390f35b3480156101be57600080fd5b506101e67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101a9565b34801561020057600080fd5b506101e67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b61017b6102363660046112ad565b610565565b34801561024757600080fd5b5061019d6102563660046114dd565b6105dd565b34801561026757600080fd5b506101e66102763660046114dd565b60009081526065602052604090206001015490565b34801561029757600080fd5b5061019d6102a63660046114dd565b60009081526097602052604090205460011490565b3480156102c757600080fd5b5061017b6102d63660046114f5565b610603565b3480156102e757600080fd5b5061019d6102f63660046114dd565b61062e565b34801561030757600080fd5b5061017b6103163660046114f5565b610647565b34801561032757600080fd5b5061019d6103363660046114dd565b6106ca565b34801561034757600080fd5b5061017b6103563660046114dd565b6106e1565b34801561036757600080fd5b506101e66103763660046112ad565b610785565b34801561038757600080fd5b5061017b61039636600461142f565b6107c4565b3480156103a757600080fd5b506101e660008051602061194d83398151915281565b3480156103c957600080fd5b5061019d6103d83660046114f5565b61092f565b3480156103e957600080fd5b506101e6600081565b3480156103fe57600080fd5b506101e661040d36600461138a565b61095a565b34801561041e57600080fd5b5061017b61042d3660046114dd565b61099f565b34801561043e57600080fd5b506101e661044d3660046114dd565b60009081526097602052604090205490565b34801561046b57600080fd5b5061017b61047a3660046114f5565b610a63565b61017b61048d36600461138a565b610a89565b34801561049e57600080fd5b506098546101e6565b60008051602061194d8339815191526104c181335b610be8565b60006104d1898989898989610785565b90506104dd8184610c4c565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610519969594939291906116b6565b60405180910390a3505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061055d57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361059181600061092f565b61059f5761059f81336104bc565b60006105af888888888888610785565b90506105bb8185610d3b565b6105ca8160008a8a8a8a610dd6565b6105d381610eea565b5050505050505050565b6000818152609760205260408120546001811180156105fc5750428111155b9392505050565b60008281526065602052604090206001015461061f81336104bc565b6106298383610f23565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146106bc5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106c68282610fa9565b5050565b600081815260976020526040812054600190610640565b3330146107445760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016106b3565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b60008686868686866040516020016107a2969594939291906116b6565b6040516020818303038152906040528051906020012090509695505050505050565b60008051602061194d8339815191526107dd81336104bc565b8887146107fc5760405162461bcd60e51b81526004016106b3906117cb565b88851461081b5760405162461bcd60e51b81526004016106b3906117cb565b600061082d8b8b8b8b8b8b8b8b61095a565b90506108398184610c4c565b60005b8a8110156109215780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e8581811061088757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061089c9190611293565b8d8d868181106108bc57634e487b7160e01b600052603260045260246000fd5b905060200201358c8c878181106108e357634e487b7160e01b600052603260045260246000fd5b90506020028101906108f59190611858565b8c8b604051610909969594939291906116b6565b60405180910390a361091a8161191b565b905061083c565b505050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000888888888888888860405160200161097b9897969594939291906116f3565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061194d8339815191526109b881336104bc565b6109c1826106ca565b610a275760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016106b3565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610a7f81336104bc565b6106298383610fa9565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610ab581600061092f565b610ac357610ac381336104bc565b878614610ae25760405162461bcd60e51b81526004016106b3906117cb565b878414610b015760405162461bcd60e51b81526004016106b3906117cb565b6000610b138a8a8a8a8a8a8a8a61095a565b9050610b1f8185610d3b565b60005b89811015610bd257610bc282828d8d85818110610b4f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b649190611293565b8c8c86818110610b8457634e487b7160e01b600052603260045260246000fd5b905060200201358b8b87818110610bab57634e487b7160e01b600052603260045260246000fd5b9050602002810190610bbd9190611858565b610dd6565b610bcb8161191b565b9050610b22565b50610bdc81610eea565b50505050505050505050565b610bf2828261092f565b6106c657610c0a816001600160a01b03166014611010565b610c15836020611010565b604051602001610c2692919061160f565b60408051601f198184030181529082905262461bcd60e51b82526106b391600401611798565b610c558261062e565b15610cba5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016106b3565b609854811015610d1b5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016106b3565b610d25814261189d565b6000928352609760205260409092209190915550565b610d44826105dd565b610d605760405162461bcd60e51b81526004016106b39061180e565b801580610d7b57506000818152609760205260409020546001145b6106c65760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016106b3565b6000846001600160a01b0316848484604051610df39291906115ff565b60006040518083038185875af1925050503d8060008114610e30576040519150601f19603f3d011682016040523d82523d6000602084013e610e35565b606091505b5050905080610ea25760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016106b3565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051610ed99493929190611684565b60405180910390a350505050505050565b610ef3816105dd565b610f0f5760405162461bcd60e51b81526004016106b39061180e565b600090815260976020526040902060019055565b610f2d828261092f565b6106c65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610f653390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610fb3828261092f565b156106c65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060600061101f8360026118b5565b61102a90600261189d565b67ffffffffffffffff81111561105057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561107a576020820181803683370190505b509050600360fc1b816000815181106110a357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006111048460026118b5565b61110f90600161189d565b90505b60018111156111a3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061115157634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061117557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361119c81611904565b9050611112565b5083156105fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106b3565b80356001600160a01b038116811461056057600080fd5b60008083601f84011261121a578182fd5b50813567ffffffffffffffff811115611231578182fd5b6020830191508360208260051b850101111561124c57600080fd5b9250929050565b60008083601f840112611264578182fd5b50813567ffffffffffffffff81111561127b578182fd5b60208301915083602082850101111561124c57600080fd5b6000602082840312156112a4578081fd5b6105fc826111f2565b60008060008060008060a087890312156112c5578182fd5b6112ce876111f2565b955060208701359450604087013567ffffffffffffffff8111156112f0578283fd5b6112fc89828a01611253565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a031215611331578081fd5b61133a886111f2565b965060208801359550604088013567ffffffffffffffff81111561135c578182fd5b6113688a828b01611253565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156113a5578081fd5b883567ffffffffffffffff808211156113bc578283fd5b6113c88c838d01611209565b909a50985060208b01359150808211156113e0578283fd5b6113ec8c838d01611209565b909850965060408b0135915080821115611404578283fd5b506114118b828c01611209565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c03121561144c578081fd5b893567ffffffffffffffff80821115611463578283fd5b61146f8d838e01611209565b909b50995060208c0135915080821115611487578283fd5b6114938d838e01611209565b909950975060408c01359150808211156114ab578283fd5b506114b88c828d01611209565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b6000602082840312156114ee578081fd5b5035919050565b60008060408385031215611507578182fd5b82359150611517602084016111f2565b90509250929050565b600060208284031215611531578081fd5b81356001600160e01b0319811681146105fc578182fd5b60008284526020808501808196508560051b8101915084845b878110156115c85782840389528135601e19883603018112611581578687fd5b8701803567ffffffffffffffff811115611599578788fd5b8036038913156115a7578788fd5b6115b486828985016115d5565b9a87019a9550505090840190600101611561565b5091979650505050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516116478160178501602088016118d4565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116788160288401602088016118d4565b01602801949350505050565b600060018060a01b0386168252846020830152606060408301526116ac6060830184866115d5565b9695505050505050565b600060018060a01b038816825286602083015260a060408301526116de60a0830186886115d5565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b811015611734576001600160a01b0361171f846111f2565b16825260209283019290910190600101611706565b5083810360208501528881526001600160fb1b03891115611753578283fd5b8860051b9150818a6020830137016020818101838152848303909101604085015261177f81888a611548565b6060850196909652505050608001529695505050505050565b60006020825282518060208401526117b78160408501602087016118d4565b601f01601f19169190910160400192915050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b6000808335601e1984360301811261186e578283fd5b83018035915067ffffffffffffffff821115611888578283fd5b60200191503681900382131561124c57600080fd5b600082198211156118b0576118b0611936565b500190565b60008160001904831182151516156118cf576118cf611936565b500290565b60005b838110156118ef5781810151838201526020016118d7565b838111156118fe576000848401525b50505050565b60008161191357611913611936565b506000190190565b600060001982141561192f5761192f611936565b5060010190565b634e487b7160e01b600052601160045260246000fdfeb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1a2646970667358221220795be445b44c6eff1744929657fcbaab272b11550dda1eead9cf6b16b22755cb64736f6c63430008030033", "deployedBytecode": "0x60806040526004361061014f5760003560e01c806364d62353116100b6578063b1c5f4271161006f578063b1c5f427146103f2578063c4d252f514610412578063d45c443514610432578063d547741f1461045f578063e38335e51461047f578063f27a0c921461049257610156565b806364d623531461033b5780638065657f1461035b5780638f2a0bb01461037b5780638f61f4f51461039b57806391d14854146103bd578063a217fddf146103dd57610156565b8063248a9ca311610108578063248a9ca31461025b5780632ab0f5291461028b5780632f2ff15d146102bb57806331d50750146102db57806336568abe146102fb578063584b153e1461031b57610156565b806301d5062a1461015b57806301ffc9a71461017d57806307bd0265146101b25780630d3cf6fc146101f4578063134008d31461022857806313bc9f201461023b57610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611317565b6104a7565b005b34801561018957600080fd5b5061019d610198366004611520565b61052c565b60405190151581526020015b60405180910390f35b3480156101be57600080fd5b506101e67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101a9565b34801561020057600080fd5b506101e67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b61017b6102363660046112ad565b610565565b34801561024757600080fd5b5061019d6102563660046114dd565b6105dd565b34801561026757600080fd5b506101e66102763660046114dd565b60009081526065602052604090206001015490565b34801561029757600080fd5b5061019d6102a63660046114dd565b60009081526097602052604090205460011490565b3480156102c757600080fd5b5061017b6102d63660046114f5565b610603565b3480156102e757600080fd5b5061019d6102f63660046114dd565b61062e565b34801561030757600080fd5b5061017b6103163660046114f5565b610647565b34801561032757600080fd5b5061019d6103363660046114dd565b6106ca565b34801561034757600080fd5b5061017b6103563660046114dd565b6106e1565b34801561036757600080fd5b506101e66103763660046112ad565b610785565b34801561038757600080fd5b5061017b61039636600461142f565b6107c4565b3480156103a757600080fd5b506101e660008051602061194d83398151915281565b3480156103c957600080fd5b5061019d6103d83660046114f5565b61092f565b3480156103e957600080fd5b506101e6600081565b3480156103fe57600080fd5b506101e661040d36600461138a565b61095a565b34801561041e57600080fd5b5061017b61042d3660046114dd565b61099f565b34801561043e57600080fd5b506101e661044d3660046114dd565b60009081526097602052604090205490565b34801561046b57600080fd5b5061017b61047a3660046114f5565b610a63565b61017b61048d36600461138a565b610a89565b34801561049e57600080fd5b506098546101e6565b60008051602061194d8339815191526104c181335b610be8565b60006104d1898989898989610785565b90506104dd8184610c4c565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610519969594939291906116b6565b60405180910390a3505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061055d57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361059181600061092f565b61059f5761059f81336104bc565b60006105af888888888888610785565b90506105bb8185610d3b565b6105ca8160008a8a8a8a610dd6565b6105d381610eea565b5050505050505050565b6000818152609760205260408120546001811180156105fc5750428111155b9392505050565b60008281526065602052604090206001015461061f81336104bc565b6106298383610f23565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146106bc5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106c68282610fa9565b5050565b600081815260976020526040812054600190610640565b3330146107445760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016106b3565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b60008686868686866040516020016107a2969594939291906116b6565b6040516020818303038152906040528051906020012090509695505050505050565b60008051602061194d8339815191526107dd81336104bc565b8887146107fc5760405162461bcd60e51b81526004016106b3906117cb565b88851461081b5760405162461bcd60e51b81526004016106b3906117cb565b600061082d8b8b8b8b8b8b8b8b61095a565b90506108398184610c4c565b60005b8a8110156109215780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e8581811061088757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061089c9190611293565b8d8d868181106108bc57634e487b7160e01b600052603260045260246000fd5b905060200201358c8c878181106108e357634e487b7160e01b600052603260045260246000fd5b90506020028101906108f59190611858565b8c8b604051610909969594939291906116b6565b60405180910390a361091a8161191b565b905061083c565b505050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000888888888888888860405160200161097b9897969594939291906116f3565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061194d8339815191526109b881336104bc565b6109c1826106ca565b610a275760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016106b3565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610a7f81336104bc565b6106298383610fa9565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610ab581600061092f565b610ac357610ac381336104bc565b878614610ae25760405162461bcd60e51b81526004016106b3906117cb565b878414610b015760405162461bcd60e51b81526004016106b3906117cb565b6000610b138a8a8a8a8a8a8a8a61095a565b9050610b1f8185610d3b565b60005b89811015610bd257610bc282828d8d85818110610b4f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b649190611293565b8c8c86818110610b8457634e487b7160e01b600052603260045260246000fd5b905060200201358b8b87818110610bab57634e487b7160e01b600052603260045260246000fd5b9050602002810190610bbd9190611858565b610dd6565b610bcb8161191b565b9050610b22565b50610bdc81610eea565b50505050505050505050565b610bf2828261092f565b6106c657610c0a816001600160a01b03166014611010565b610c15836020611010565b604051602001610c2692919061160f565b60408051601f198184030181529082905262461bcd60e51b82526106b391600401611798565b610c558261062e565b15610cba5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016106b3565b609854811015610d1b5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016106b3565b610d25814261189d565b6000928352609760205260409092209190915550565b610d44826105dd565b610d605760405162461bcd60e51b81526004016106b39061180e565b801580610d7b57506000818152609760205260409020546001145b6106c65760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016106b3565b6000846001600160a01b0316848484604051610df39291906115ff565b60006040518083038185875af1925050503d8060008114610e30576040519150601f19603f3d011682016040523d82523d6000602084013e610e35565b606091505b5050905080610ea25760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016106b3565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051610ed99493929190611684565b60405180910390a350505050505050565b610ef3816105dd565b610f0f5760405162461bcd60e51b81526004016106b39061180e565b600090815260976020526040902060019055565b610f2d828261092f565b6106c65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610f653390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610fb3828261092f565b156106c65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060600061101f8360026118b5565b61102a90600261189d565b67ffffffffffffffff81111561105057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561107a576020820181803683370190505b509050600360fc1b816000815181106110a357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006111048460026118b5565b61110f90600161189d565b90505b60018111156111a3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061115157634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061117557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361119c81611904565b9050611112565b5083156105fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106b3565b80356001600160a01b038116811461056057600080fd5b60008083601f84011261121a578182fd5b50813567ffffffffffffffff811115611231578182fd5b6020830191508360208260051b850101111561124c57600080fd5b9250929050565b60008083601f840112611264578182fd5b50813567ffffffffffffffff81111561127b578182fd5b60208301915083602082850101111561124c57600080fd5b6000602082840312156112a4578081fd5b6105fc826111f2565b60008060008060008060a087890312156112c5578182fd5b6112ce876111f2565b955060208701359450604087013567ffffffffffffffff8111156112f0578283fd5b6112fc89828a01611253565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a031215611331578081fd5b61133a886111f2565b965060208801359550604088013567ffffffffffffffff81111561135c578182fd5b6113688a828b01611253565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156113a5578081fd5b883567ffffffffffffffff808211156113bc578283fd5b6113c88c838d01611209565b909a50985060208b01359150808211156113e0578283fd5b6113ec8c838d01611209565b909850965060408b0135915080821115611404578283fd5b506114118b828c01611209565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c03121561144c578081fd5b893567ffffffffffffffff80821115611463578283fd5b61146f8d838e01611209565b909b50995060208c0135915080821115611487578283fd5b6114938d838e01611209565b909950975060408c01359150808211156114ab578283fd5b506114b88c828d01611209565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b6000602082840312156114ee578081fd5b5035919050565b60008060408385031215611507578182fd5b82359150611517602084016111f2565b90509250929050565b600060208284031215611531578081fd5b81356001600160e01b0319811681146105fc578182fd5b60008284526020808501808196508560051b8101915084845b878110156115c85782840389528135601e19883603018112611581578687fd5b8701803567ffffffffffffffff811115611599578788fd5b8036038913156115a7578788fd5b6115b486828985016115d5565b9a87019a9550505090840190600101611561565b5091979650505050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516116478160178501602088016118d4565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116788160288401602088016118d4565b01602801949350505050565b600060018060a01b0386168252846020830152606060408301526116ac6060830184866115d5565b9695505050505050565b600060018060a01b038816825286602083015260a060408301526116de60a0830186886115d5565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b811015611734576001600160a01b0361171f846111f2565b16825260209283019290910190600101611706565b5083810360208501528881526001600160fb1b03891115611753578283fd5b8860051b9150818a6020830137016020818101838152848303909101604085015261177f81888a611548565b6060850196909652505050608001529695505050505050565b60006020825282518060208401526117b78160408501602087016118d4565b601f01601f19169190910160400192915050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b6000808335601e1984360301811261186e578283fd5b83018035915067ffffffffffffffff821115611888578283fd5b60200191503681900382131561124c57600080fd5b600082198211156118b0576118b0611936565b500190565b60008160001904831182151516156118cf576118cf611936565b500290565b60005b838110156118ef5781810151838201526020016118d7565b838111156118fe576000848401525b50505050565b60008161191357611913611936565b506000190190565b600060001982141561192f5761192f611936565b5060010190565b634e487b7160e01b600052601160045260246000fdfeb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1a2646970667358221220795be445b44c6eff1744929657fcbaab272b11550dda1eead9cf6b16b22755cb64736f6c63430008030033", "linkReferences": {}, "deployedLinkReferences": {} }