@gooddollar/goodprotocol
Version:
GoodDollar Protocol
613 lines (612 loc) • 40.4 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "SuperfluidFaucet",
"sourceName": "contracts/fuseFaucet/SuperfluidFacuet.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"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": false,
"internalType": "uint256",
"name": "maxValuePerPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toppingPeriod",
"type": "uint256"
}
],
"name": "SettingsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "WalletTopped",
"type": "event"
},
{
"inputs": [],
"name": "ADMIN_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": "_deprecated",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "canTop",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "baseFee",
"type": "uint256"
}
],
"name": "canTop",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "firstGasToppingAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasToppingAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"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": "bool",
"name": "firstTime",
"type": "bool"
},
{
"internalType": "uint256",
"name": "baseFee",
"type": "uint256"
}
],
"name": "getToppingValue",
"outputs": [
{
"internalType": "uint256",
"name": "",
"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": "uint256",
"name": "_maxValuePerPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toppingPeriod",
"type": "uint256"
},
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "maxValuePerPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "recipientInfo",
"outputs": [
{
"internalType": "uint256",
"name": "lastWithdrawalPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalWithdrawnThisPeriod",
"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": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"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": "address payable",
"name": "recipient",
"type": "address"
}
],
"name": "topWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "toppingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_gasToppingAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_firstGasToppingAmount",
"type": "uint256"
}
],
"name": "updateGasToppingAmounts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxValuePerPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toppingPeriod",
"type": "uint256"
}
],
"name": "updateSettings",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e2565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611a62610119600039600081816105ac015281816105ec015281816109180152818161095801526109d00152611a626000f3fe60806040526004361061012a5760003560e01c8063015af8ee1461013657806301ffc9a714610158578063054c155c1461018d578063248a9ca3146101b15780632f2ff15d146101d157806336568abe146101f15780633659cfe6146102115780633771dcf8146102315780633ccfd60b1461025157806349a6fa9b146102665780634ca55d891461027c5780634f1ef2861461029257806352d1902d146102a557806368713a8b146102ba57806375b238fc146102da57806384540e01146102fc57806391d1485414610313578063941c3d6414610333578063a217fddf14610349578063a28e32b51461035e578063a6ab36f21461037e578063b58d66741461039e578063d547741f146103e7578063e97eefd214610407578063f3cb22b41461042757600080fd5b3661013157005b600080fd5b34801561014257600080fd5b5061015661015136600461156c565b610447565b005b34801561016457600080fd5b5061017861017336600461158e565b6104b2565b60405190151581526020015b60405180910390f35b34801561019957600080fd5b506101a360ff5481565b604051908152602001610184565b3480156101bd57600080fd5b506101a36101cc3660046115b8565b6104e9565b3480156101dd57600080fd5b506101566101ec3660046115e6565b6104fe565b3480156101fd57600080fd5b5061015661020c3660046115e6565b61051f565b34801561021d57600080fd5b5061015661022c366004611616565b6105a2565b34801561023d57600080fd5b5061015661024c366004611616565b61066a565b34801561025d57600080fd5b506101566108d4565b34801561027257600080fd5b506101a360fc5481565b34801561028857600080fd5b506101a360fb5481565b6101566102a0366004611649565b61090e565b3480156102b157600080fd5b506101a36109c3565b3480156102c657600080fd5b506101a36102d536600461170c565b610a71565b3480156102e657600080fd5b506101a3600080516020611a0d83398151915281565b34801561030857600080fd5b506101a36101005481565b34801561031f57600080fd5b5061017861032e3660046115e6565b610aae565b34801561033f57600080fd5b506101a360fd5481565b34801561035557600080fd5b506101a3600081565b34801561036a57600080fd5b5061015661037936600461156c565b610ad9565b34801561038a57600080fd5b5061015661039936600461173d565b610afe565b3480156103aa57600080fd5b506103d26103b9366004611616565b60fe602052600090815260409020805460019091015482565b60408051928352602083019190915201610184565b3480156103f357600080fd5b506101566104023660046115e6565b610c80565b34801561041357600080fd5b50610178610422366004611616565b610c9c565b34801561043357600080fd5b50610178610442366004611776565b610cb8565b600080516020611a0d83398151915261045f81610e10565b60fc83905561047182620151806117aa565b60fd5560408051848152602081018490527f290c7608baac88950f6f2bf919aee31e5caf8c7bf387f0e489159253ad2e39d5910160405180910390a1505050565b60006001600160e01b03198216637965db0b60e01b14806104e357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b610507826104e9565b61051081610e10565b61051a8383610e1a565b505050565b6001600160a01b03811633146105945760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61059e8282610ea0565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105ea5760405162461bcd60e51b815260040161058b906117c1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061c610f07565b6001600160a01b0316146106425760405162461bcd60e51b815260040161058b906117fb565b61064b81610f23565b6040805160008082526020820190925261066791839190610f2e565b50565b600080516020611a0d83398151915261068281610e10565b61068b82610c9c565b6106d75760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e742063616e6e6f7420626520746f70706564207570000000604482015260640161058b565b6001600160a01b038216600090815260fe60205260408120805490919015906107008248610a71565b9050600060fd54426107129190611835565b845490915015801590610729575083546303743463105b1561074b5760fd54845461073e90601e6117aa565b6107489190611835565b84555b835481111561075f57600060018501558084555b6000610775836001600160a01b03891631611099565b9050804710156107dc5760405162461bcd60e51b815260206004820152602c60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636520666f60448201526b07220746f7070696e672075760a41b606482015260840161058b565b60018501546107eb90826110a5565b60018601556040516000906001600160a01b0389169083908381818185875af1925050503d806000811461083b576040519150601f19603f3d011682016040523d82523d6000602084013e610840565b606091505b50509050806108885760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161058b565b604080516001600160a01b038a168152602081018490527ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed985910160405180910390a15050505050505050565b60006108df81610e10565b6040514790339082156108fc029083906000818181858888f1935050505015801561051a573d6000803e3d6000fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109565760405162461bcd60e51b815260040161058b906117c1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610988610f07565b6001600160a01b0316146109ae5760405162461bcd60e51b815260040161058b906117fb565b6109b782610f23565b61059e82826001610f2e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161058b565b506000805160206119c683398151915290565b600060648284610a835760ff54610a88565b610100545b610a9291906117aa565b610a9d90606e6117aa565b610aa79190611835565b9392505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611a0d833981519152610af181610e10565b5060ff9190915561010055565b600054610100900460ff1615808015610b1e5750600054600160ff909116105b80610b3f5750610b2d306110b1565b158015610b3f575060005460ff166001145b610ba25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161058b565b6000805460ff191660011790558015610bc5576000805461ff0019166101001790555b610bcd6110c0565b610bd56110c0565b610be060003361112d565b610bf8600080516020611a0d8339815191523361112d565b610c10600080516020611a0d83398151915283610e1a565b60fc849055610c2283620151806117aa565b60fd556207a12060ff55621e8480610100558015610c7a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610c89826104e9565b610c9281610e10565b61051a8383610ea0565b6000804815610cab5748610cb0565b629896805b9050610aa783825b6001600160a01b038216600090815260fe602090815260408083208151808301909252805480835260019091015492820192909252901582610cfa8286610a71565b90506001600160a01b038616610d1657600093505050506104e3565b80866001600160a01b03163110610d3357600093505050506104e3565b6000610d49826001600160a01b03891631611099565b905080471015610d605760009450505050506104e3565b600060fd5442610d709190611835565b855190915015801590610d87575084516303743463105b15610dbb5760fd548551610d9c90601e6117aa565b610da69190611835565b811115610dbb576001955050505050506104e3565b8451811115610dd2576001955050505050506104e3565b83158015610def575060fc546020860151610ded90846110a5565b115b15610e02576000955050505050506104e3565b506001979650505050505050565b6106678133611137565b610e248282610aae565b61059e57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e5c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610eaa8282610aae565b1561059e57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206119c6833981519152546001600160a01b031690565b600061059e81610e10565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f615761051a83611190565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fbb575060408051601f3d908101601f19168201909252610fb891810190611857565b60015b61101e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161058b565b6000805160206119c6833981519152811461108d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161058b565b5061051a83838361122a565b6000610aa78284611870565b6000610aa78284611883565b6001600160a01b03163b151590565b600054610100900460ff1661112b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161058b565b565b61059e8282610e1a565b6111418282610aae565b61059e5761114e8161124f565b611159836020611261565b60405160200161116a9291906118ba565b60408051601f198184030181529082905262461bcd60e51b825261058b91600401611929565b611199816110b1565b6111fb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161058b565b6000805160206119c683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611233836113fc565b6000825111806112405750805b1561051a57610c7a838361143c565b60606104e36001600160a01b03831660145b606060006112708360026117aa565b61127b906002611883565b6001600160401b0381111561129257611292611633565b6040519080825280601f01601f1916602001820160405280156112bc576020820181803683370190505b509050600360fc1b816000815181106112d7576112d761195c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113065761130661195c565b60200101906001600160f81b031916908160001a905350600061132a8460026117aa565b611335906001611883565b90505b60018111156113ad576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113695761136961195c565b1a60f81b82828151811061137f5761137f61195c565b60200101906001600160f81b031916908160001a90535060049490941c936113a681611972565b9050611338565b508315610aa75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161058b565b61140581611190565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611447836110b1565b6114a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161058b565b600080846001600160a01b0316846040516114bd9190611989565b600060405180830381855af49150503d80600081146114f8576040519150601f19603f3d011682016040523d82523d6000602084013e6114fd565b606091505b509150915061152582826040518060600160405280602781526020016119e66027913961152e565b95945050505050565b6060831561153d575081610aa7565b610aa783838151156115525781518083602001fd5b8060405162461bcd60e51b815260040161058b9190611929565b6000806040838503121561157f57600080fd5b50508035926020909101359150565b6000602082840312156115a057600080fd5b81356001600160e01b031981168114610aa757600080fd5b6000602082840312156115ca57600080fd5b5035919050565b6001600160a01b038116811461066757600080fd5b600080604083850312156115f957600080fd5b82359150602083013561160b816115d1565b809150509250929050565b60006020828403121561162857600080fd5b8135610aa7816115d1565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561165c57600080fd5b8235611667816115d1565b915060208301356001600160401b038082111561168357600080fd5b818501915085601f83011261169757600080fd5b8135818111156116a9576116a9611633565b604051601f8201601f19908116603f011681019083821181831017156116d1576116d1611633565b816040528281528860208487010111156116ea57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806040838503121561171f57600080fd5b8235801515811461172f57600080fd5b946020939093013593505050565b60008060006060848603121561175257600080fd5b8335925060208401359150604084013561176b816115d1565b809150509250925092565b6000806040838503121561178957600080fd5b823561172f816115d1565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104e3576104e3611794565b6020808252602c908201526000805160206119a683398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206119a683398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261185257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561186957600080fd5b5051919050565b818103818111156104e3576104e3611794565b808201808211156104e3576104e3611794565b60005b838110156118b1578181015183820152602001611899565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516118ec816017850160208801611896565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161191d816028840160208801611896565b01602801949350505050565b6020815260008251806020840152611948816040850160208701611896565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b60008161198157611981611794565b506000190190565b6000825161199b818460208701611896565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212202d2f92683382b9631b24b0129b0946edd8c950b4efd5fc86d0c89b5bc6cca36b64736f6c63430008130033",
"deployedBytecode": "0x60806040526004361061012a5760003560e01c8063015af8ee1461013657806301ffc9a714610158578063054c155c1461018d578063248a9ca3146101b15780632f2ff15d146101d157806336568abe146101f15780633659cfe6146102115780633771dcf8146102315780633ccfd60b1461025157806349a6fa9b146102665780634ca55d891461027c5780634f1ef2861461029257806352d1902d146102a557806368713a8b146102ba57806375b238fc146102da57806384540e01146102fc57806391d1485414610313578063941c3d6414610333578063a217fddf14610349578063a28e32b51461035e578063a6ab36f21461037e578063b58d66741461039e578063d547741f146103e7578063e97eefd214610407578063f3cb22b41461042757600080fd5b3661013157005b600080fd5b34801561014257600080fd5b5061015661015136600461156c565b610447565b005b34801561016457600080fd5b5061017861017336600461158e565b6104b2565b60405190151581526020015b60405180910390f35b34801561019957600080fd5b506101a360ff5481565b604051908152602001610184565b3480156101bd57600080fd5b506101a36101cc3660046115b8565b6104e9565b3480156101dd57600080fd5b506101566101ec3660046115e6565b6104fe565b3480156101fd57600080fd5b5061015661020c3660046115e6565b61051f565b34801561021d57600080fd5b5061015661022c366004611616565b6105a2565b34801561023d57600080fd5b5061015661024c366004611616565b61066a565b34801561025d57600080fd5b506101566108d4565b34801561027257600080fd5b506101a360fc5481565b34801561028857600080fd5b506101a360fb5481565b6101566102a0366004611649565b61090e565b3480156102b157600080fd5b506101a36109c3565b3480156102c657600080fd5b506101a36102d536600461170c565b610a71565b3480156102e657600080fd5b506101a3600080516020611a0d83398151915281565b34801561030857600080fd5b506101a36101005481565b34801561031f57600080fd5b5061017861032e3660046115e6565b610aae565b34801561033f57600080fd5b506101a360fd5481565b34801561035557600080fd5b506101a3600081565b34801561036a57600080fd5b5061015661037936600461156c565b610ad9565b34801561038a57600080fd5b5061015661039936600461173d565b610afe565b3480156103aa57600080fd5b506103d26103b9366004611616565b60fe602052600090815260409020805460019091015482565b60408051928352602083019190915201610184565b3480156103f357600080fd5b506101566104023660046115e6565b610c80565b34801561041357600080fd5b50610178610422366004611616565b610c9c565b34801561043357600080fd5b50610178610442366004611776565b610cb8565b600080516020611a0d83398151915261045f81610e10565b60fc83905561047182620151806117aa565b60fd5560408051848152602081018490527f290c7608baac88950f6f2bf919aee31e5caf8c7bf387f0e489159253ad2e39d5910160405180910390a1505050565b60006001600160e01b03198216637965db0b60e01b14806104e357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b610507826104e9565b61051081610e10565b61051a8383610e1a565b505050565b6001600160a01b03811633146105945760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61059e8282610ea0565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105ea5760405162461bcd60e51b815260040161058b906117c1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061c610f07565b6001600160a01b0316146106425760405162461bcd60e51b815260040161058b906117fb565b61064b81610f23565b6040805160008082526020820190925261066791839190610f2e565b50565b600080516020611a0d83398151915261068281610e10565b61068b82610c9c565b6106d75760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e742063616e6e6f7420626520746f70706564207570000000604482015260640161058b565b6001600160a01b038216600090815260fe60205260408120805490919015906107008248610a71565b9050600060fd54426107129190611835565b845490915015801590610729575083546303743463105b1561074b5760fd54845461073e90601e6117aa565b6107489190611835565b84555b835481111561075f57600060018501558084555b6000610775836001600160a01b03891631611099565b9050804710156107dc5760405162461bcd60e51b815260206004820152602c60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636520666f60448201526b07220746f7070696e672075760a41b606482015260840161058b565b60018501546107eb90826110a5565b60018601556040516000906001600160a01b0389169083908381818185875af1925050503d806000811461083b576040519150601f19603f3d011682016040523d82523d6000602084013e610840565b606091505b50509050806108885760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161058b565b604080516001600160a01b038a168152602081018490527ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed985910160405180910390a15050505050505050565b60006108df81610e10565b6040514790339082156108fc029083906000818181858888f1935050505015801561051a573d6000803e3d6000fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109565760405162461bcd60e51b815260040161058b906117c1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610988610f07565b6001600160a01b0316146109ae5760405162461bcd60e51b815260040161058b906117fb565b6109b782610f23565b61059e82826001610f2e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161058b565b506000805160206119c683398151915290565b600060648284610a835760ff54610a88565b610100545b610a9291906117aa565b610a9d90606e6117aa565b610aa79190611835565b9392505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020611a0d833981519152610af181610e10565b5060ff9190915561010055565b600054610100900460ff1615808015610b1e5750600054600160ff909116105b80610b3f5750610b2d306110b1565b158015610b3f575060005460ff166001145b610ba25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161058b565b6000805460ff191660011790558015610bc5576000805461ff0019166101001790555b610bcd6110c0565b610bd56110c0565b610be060003361112d565b610bf8600080516020611a0d8339815191523361112d565b610c10600080516020611a0d83398151915283610e1a565b60fc849055610c2283620151806117aa565b60fd556207a12060ff55621e8480610100558015610c7a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610c89826104e9565b610c9281610e10565b61051a8383610ea0565b6000804815610cab5748610cb0565b629896805b9050610aa783825b6001600160a01b038216600090815260fe602090815260408083208151808301909252805480835260019091015492820192909252901582610cfa8286610a71565b90506001600160a01b038616610d1657600093505050506104e3565b80866001600160a01b03163110610d3357600093505050506104e3565b6000610d49826001600160a01b03891631611099565b905080471015610d605760009450505050506104e3565b600060fd5442610d709190611835565b855190915015801590610d87575084516303743463105b15610dbb5760fd548551610d9c90601e6117aa565b610da69190611835565b811115610dbb576001955050505050506104e3565b8451811115610dd2576001955050505050506104e3565b83158015610def575060fc546020860151610ded90846110a5565b115b15610e02576000955050505050506104e3565b506001979650505050505050565b6106678133611137565b610e248282610aae565b61059e57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e5c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610eaa8282610aae565b1561059e57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206119c6833981519152546001600160a01b031690565b600061059e81610e10565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f615761051a83611190565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fbb575060408051601f3d908101601f19168201909252610fb891810190611857565b60015b61101e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161058b565b6000805160206119c6833981519152811461108d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161058b565b5061051a83838361122a565b6000610aa78284611870565b6000610aa78284611883565b6001600160a01b03163b151590565b600054610100900460ff1661112b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161058b565b565b61059e8282610e1a565b6111418282610aae565b61059e5761114e8161124f565b611159836020611261565b60405160200161116a9291906118ba565b60408051601f198184030181529082905262461bcd60e51b825261058b91600401611929565b611199816110b1565b6111fb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161058b565b6000805160206119c683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611233836113fc565b6000825111806112405750805b1561051a57610c7a838361143c565b60606104e36001600160a01b03831660145b606060006112708360026117aa565b61127b906002611883565b6001600160401b0381111561129257611292611633565b6040519080825280601f01601f1916602001820160405280156112bc576020820181803683370190505b509050600360fc1b816000815181106112d7576112d761195c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113065761130661195c565b60200101906001600160f81b031916908160001a905350600061132a8460026117aa565b611335906001611883565b90505b60018111156113ad576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113695761136961195c565b1a60f81b82828151811061137f5761137f61195c565b60200101906001600160f81b031916908160001a90535060049490941c936113a681611972565b9050611338565b508315610aa75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161058b565b61140581611190565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611447836110b1565b6114a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161058b565b600080846001600160a01b0316846040516114bd9190611989565b600060405180830381855af49150503d80600081146114f8576040519150601f19603f3d011682016040523d82523d6000602084013e6114fd565b606091505b509150915061152582826040518060600160405280602781526020016119e66027913961152e565b95945050505050565b6060831561153d575081610aa7565b610aa783838151156115525781518083602001fd5b8060405162461bcd60e51b815260040161058b9190611929565b6000806040838503121561157f57600080fd5b50508035926020909101359150565b6000602082840312156115a057600080fd5b81356001600160e01b031981168114610aa757600080fd5b6000602082840312156115ca57600080fd5b5035919050565b6001600160a01b038116811461066757600080fd5b600080604083850312156115f957600080fd5b82359150602083013561160b816115d1565b809150509250929050565b60006020828403121561162857600080fd5b8135610aa7816115d1565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561165c57600080fd5b8235611667816115d1565b915060208301356001600160401b038082111561168357600080fd5b818501915085601f83011261169757600080fd5b8135818111156116a9576116a9611633565b604051601f8201601f19908116603f011681019083821181831017156116d1576116d1611633565b816040528281528860208487010111156116ea57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806040838503121561171f57600080fd5b8235801515811461172f57600080fd5b946020939093013593505050565b60008060006060848603121561175257600080fd5b8335925060208401359150604084013561176b816115d1565b809150509250925092565b6000806040838503121561178957600080fd5b823561172f816115d1565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104e3576104e3611794565b6020808252602c908201526000805160206119a683398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206119a683398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261185257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561186957600080fd5b5051919050565b818103818111156104e3576104e3611794565b808201808211156104e3576104e3611794565b60005b838110156118b1578181015183820152602001611899565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516118ec816017850160208801611896565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161191d816028840160208801611896565b01602801949350505050565b6020815260008251806020840152611948816040850160208701611896565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b60008161198157611981611794565b506000190190565b6000825161199b818460208701611896565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212202d2f92683382b9631b24b0129b0946edd8c950b4efd5fc86d0c89b5bc6cca36b64736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}