UNPKG

@gooddollar/goodprotocol

Version:
879 lines 61.9 kB
{ "_format": "hh-sol-artifact-1", "contractName": "AdminWalletFuse", "sourceName": "contracts/utils/AdminWalletFuse.sol", "abi": [ { "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 payable[]", "name": "admins", "type": "address[]" } ], "name": "AdminsAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address[]", "name": "admins", "type": "address[]" } ], "name": "AdminsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_contract", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_data", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "_success", "type": "bool" } ], "name": "GenericCall", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WalletTopped", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WALLET_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable[]", "name": "_admins", "type": "address[]" } ], "name": "addAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "adminToppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "day", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gasPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gd", "outputs": [ { "internalType": "contract ERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "genericCall", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "bytes", "name": "returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getIdentity", "outputs": [ { "internalType": "contract IIdentityV2", "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": "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 payable[]", "name": "_admins", "type": "address[]" }, { "internalType": "contract NameService", "name": "_ns", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastGdBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxDailyNewWallets", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nameService", "outputs": [ { "internalType": "contract NameService", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_admins", "type": "address[]" } ], "name": "removeAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeWhitelist", "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_toppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_adminToppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_toppingTimes", "type": "uint256" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "setDefaults", "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": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "endIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_user", "type": "address" } ], "name": "topWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "toppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toppingTimes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "upgrade", "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": "version", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" }, { "internalType": "uint256", "name": "orgChain", "type": "uint256" }, { "internalType": "uint256", "name": "dateAuthenticated", "type": "uint256" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612a5c61004c600039600081816109d601528181610a1601528181610e8e01528181610ece0152610f460152612a5c6000f3fe6080604052600436106101cf5760003560e01c806301ffc9a7146101db578063133d93a114610210578063248a9ca31461024057806324d7806c146102605780632beeaca4146102805780632bf16458146102a25780632f2ff15d146102d057806336568abe146102f05780633659cfe61461031057806336afc6fa146103305780633771dcf814610352578063377e11e0146103725780633e6326fc146103925780634f1ef286146103b357806352d1902d146103c657806354fd4d50146103db5780635b61e2c1146104155780635fc944e91461044e578063715018a61461046e57806378c8cda7146104835780637b76ac91146104a35780637e2c1355146104cb5780637fad46f2146104eb5780638da5cb5b1461050b57806391d1485414610520578063971d902c146105405780639c54df6414610560578063a217fddf14610580578063a5e598fc14610595578063bf64e66c146105b6578063c4892496146105e4578063d547741f146105fb578063d55ec6971461061b578063db62683814610630578063e6ea393914610650578063eb91e65114610667578063f2fde38b14610687578063f3da9f05146106a7578063f9f92be4146106be578063fe173b97146106de57600080fd5b366101d657005b600080fd5b3480156101e757600080fd5b506101fb6101f6366004612112565b6106f5565b60405190151581526020015b60405180910390f35b34801561021c57600080fd5b506102326000805160206129a083398151915281565b604051908152602001610207565b34801561024c57600080fd5b5061023261025b36600461213c565b61072c565b34801561026c57600080fd5b506101fb61027b36600461216a565b610741565b34801561028c57600080fd5b506102a061029b36600461223c565b61075b565b005b3480156102ae57600080fd5b506102c26102bd36600461228b565b610826565b604051610207929190612333565b3480156102dc57600080fd5b506102a06102eb366004612356565b610931565b3480156102fc57600080fd5b506102a061030b366004612356565b610952565b34801561031c57600080fd5b506102a061032b36600461216a565b6109cc565b34801561033c57600080fd5b50610345610a94565b6040516102079190612386565b34801561035e57600080fd5b506102a061036d36600461216a565b610b20565b34801561037e57600080fd5b506102a061038d3660046123bd565b610deb565b34801561039e57600080fd5b5061013254610345906001600160a01b031681565b6102a06103c136600461223c565b610e84565b3480156103d257600080fd5b50610232610f39565b3480156103e757600080fd5b506101345461040090600160801b900463ffffffff1681565b60405163ffffffff9091168152602001610207565b34801561042157600080fd5b5061013454610436906001600160401b031681565b6040516001600160401b039091168152602001610207565b34801561045a57600080fd5b506102a061046936600461245b565b610fe7565b34801561047a57600080fd5b506102a0611115565b34801561048f57600080fd5b506102a061049e36600461216a565b611129565b3480156104af57600080fd5b506101345461043690600160401b90046001600160401b031681565b3480156104d757600080fd5b506102a06104e636600461247d565b6111c3565b3480156104f757600080fd5b506102a061050636600461251e565b6111dd565b34801561051757600080fd5b506103456113dc565b34801561052c57600080fd5b506101fb61053b366004612356565b6113eb565b34801561054c57600080fd5b506102a061055b366004612587565b611416565b34801561056c57600080fd5b506102a061057b3660046125e6565b6114d8565b34801561058c57600080fd5b50610232600081565b3480156105a157600080fd5b5061013554610345906001600160a01b031681565b3480156105c257600080fd5b506102326105d136600461216a565b6101366020526000908152604090205481565b3480156105f057600080fd5b5061023261012f5481565b34801561060757600080fd5b506102a0610616366004612356565b6115ed565b34801561062757600080fd5b506102a0611609565b34801561063c57600080fd5b506102a061064b36600461213c565b6116a4565b34801561065c57600080fd5b5061023261012e5481565b34801561067357600080fd5b506102a061068236600461216a565b6116c3565b34801561069357600080fd5b506102a06106a236600461216a565b61171b565b3480156106b357600080fd5b506102326101305481565b3480156106ca57600080fd5b506102a06106d936600461216a565b611791565b3480156106ea57600080fd5b506102326101315481565b60006001600160e01b03198216637965db0b60e01b148061072657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b60006107266000805160206129a0833981519152836113eb565b61076433610741565b6107895760405162461bcd60e51b81526004016107809061261a565b60405180910390fd5b610791610a94565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016107be929190612647565b600060405180830381600087803b1580156107d857600080fd5b505af11580156107ec573d6000803e3d6000fd5b50505050600261012f546108009190612681565b333111801590610814575061081433610741565b1561082257610822336117e9565b5050565b6000606061083333610741565b61084f5760405162461bcd60e51b81526004016107809061261a565b846001600160a01b0316838560405161086891906126a3565b60006040518083038185875af1925050503d80600081146108a5576040519150601f19603f3d011682016040523d82523d6000602084013e6108aa565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0906108ef908790879087906126bf565b60405180910390a2600261012f546109079190612681565b33311180159061091b575061091b33610741565b1561092957610929336117e9565b935093915050565b61093a8261072c565b610943816118f5565b61094d83836118ff565b505050565b6001600160a01b03811633146109c25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610780565b6108228282611985565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a145760405162461bcd60e51b8152600401610780906126e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a466119ec565b6001600160a01b031614610a6c5760405162461bcd60e51b815260040161078090612723565b610a7581611a08565b60408051600080825260208201909252610a9191839190611a10565b50565b6101325460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1b919061275d565b905090565b610b2933610741565b610b455760405162461bcd60e51b81526004016107809061261a565b610135546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b77908590600401612386565b602060405180830381865afa158015610b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb8919061277a565b9050610bc2610a94565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401610bed9190612386565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190612793565b80610c5257506001600160a01b038216600090815261013660205260409020548114155b610c955760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b6044820152606401610780565b610130546101336000610ca6611b7b565b81526020019081526020016000206000846001600160a01b03166001600160a01b031681526020019081526020016000205410610d3e5760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b6064820152608401610780565b600461012e54610d4e9190612681565b826001600160a01b03163110610d935760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b6044820152606401610780565b6001600160a01b038216600090815261013660205260409020819055610db8826117e9565b50600261012f54610dc99190612681565b333111801590610ddd5750610ddd33610741565b15610a9157610a91336117e9565b610df3611b8a565b60005b8151811015610e4257610e306000805160206129a0833981519152838381518110610e2357610e236127b5565b60200260200101516115ed565b80610e3a816127cb565b915050610df6565b5080604051610e5191906127e4565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ecc5760405162461bcd60e51b8152600401610780906126e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610efe6119ec565b6001600160a01b031614610f245760405162461bcd60e51b815260040161078090612723565b610f2d82611a08565b61082282826001611a10565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fd45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610780565b506000805160206129e083398151915290565b61012d54821061102f5760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b6044820152606401610780565b815b61012d548110801561104257508181105b156111045761107861012d828154811061105e5761105e6127b5565b6000918252602090912001546001600160a01b0316610741565b80156110bc5750600261012f5461108f9190612681565b61012d82815481106110a3576110a36127b5565b6000918252602090912001546001600160a01b03163111155b156110f2576110f261012d82815481106110d8576110d86127b5565b6000918252602090912001546001600160a01b03166117e9565b806110fc816127cb565b915050611031565b50600261012f546108009190612681565b61111d611b8a565b6111276000611be9565b565b61113233610741565b61114e5760405162461bcd60e51b81526004016107809061261a565b611156610a94565b6001600160a01b031663291d9549826040518263ffffffff1660e01b81526004016111819190612386565b600060405180830381600087803b15801561119b57600080fd5b505af11580156111af573d6000803e3d6000fd5b50505050600261012f54610dc99190612681565b6111cb611b8a565b6111d784848484611c3b565b50505050565b600054610100900460ff16158080156111fd5750600054600160ff909116105b8061121e575061120c30611c66565b15801561121e575060005460ff166001145b6112815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610780565b6000805460ff1916600117905580156112a4576000805461ff0019166101001790555b6112ac611c75565b6112b4611c9c565b6112bf600084611ccc565b6112d2620927c062895440600385611c3b565b61013280546001600160a01b0319166001600160a01b0386161790558451156112fe576112fe856114d8565b6101325460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061132d90600401612823565b602060405180830381865afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e919061275d565b61013580546001600160a01b0319166001600160a01b039290921691909117905580156113d5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6097546001600160a01b031690565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61141f33610741565b61143b5760405162461bcd60e51b81526004016107809061261a565b611443610a94565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b81526004016114749493929190612847565b600060405180830381600087803b15801561148e57600080fd5b505af11580156114a2573d6000803e3d6000fd5b50505050600261012f546114b69190612681565b3331118015906114ca57506114ca33610741565b156111d7576111d7336117e9565b6114e0611b8a565b60005b81518110156115ab5761150e828281518110611501576115016127b5565b6020026020010151610741565b1515600003611599576115486000805160206129a083398151915283838151811061153b5761153b6127b5565b6020026020010151610931565b61012d82828151811061155d5761155d6127b5565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b806115a3816127cb565b9150506114e3565b50806040516115ba91906127e4565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b6115f68261072c565b6115ff816118f5565b61094d8383611985565b611611611b8a565b6101325460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061164090600401612823565b602060405180830381865afa15801561165d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611681919061275d565b61013580546001600160a01b0319166001600160a01b0392909216919091179055565b6116b38161046981603261287e565b600261012f54610dc99190612681565b6116cc33610741565b6116e85760405162461bcd60e51b81526004016107809061261a565b6116f0610a94565b6001600160a01b031663c6a276c2826040518263ffffffff1660e01b81526004016111819190612386565b611723611b8a565b6001600160a01b0381166117885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610780565b610a9181611be9565b61179a33610741565b6117b65760405162461bcd60e51b81526004016107809061261a565b6117be610a94565b6001600160a01b031663188efc16826040518263ffffffff1660e01b81526004016111819190612386565b600161013360006117f8611b7b565b81526020019081526020016000206000836001600160a01b03166001600160a01b031681526020019081526020016000206000828254611838919061287e565b909155506000905061184982610741565b6118565761012e5461185b565b61012f545b905060006118736001600160a01b0384163183612891565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f193505050501580156118ac573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed985826040516118e891815260200190565b60405180910390a2505050565b610a918133611cd6565b61190982826113eb565b61082257600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119413390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61198f82826113eb565b1561082257600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206129e0833981519152546001600160a01b031690565b610a91611b8a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a435761094d83611d2f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a9d575060408051601f3d908101601f19168201909252611a9a9181019061277a565b60015b611b005760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610780565b6000805160206129e08339815191528114611b6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610780565b5061094d838383611dc9565b6000610b1b6201518042612681565b33611b936113dc565b6001600160a01b0316146111275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610780565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610131819055611c4b81856128a4565b61012e55611c5981846128a4565b61012f5550610130555050565b6001600160a01b03163b151590565b600054610100900460ff166111275760405162461bcd60e51b8152600401610780906128bb565b600054610100900460ff16611cc35760405162461bcd60e51b8152600401610780906128bb565b61112733611be9565b61082282826118ff565b611ce082826113eb565b61082257611ced81611dee565b611cf8836020611e00565b604051602001611d09929190612906565b60408051601f198184030181529082905262461bcd60e51b825261078091600401612975565b611d3881611c66565b611d9a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610780565b6000805160206129e083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611dd283611fa2565b600082511180611ddf5750805b1561094d576111d78383611fe2565b60606107266001600160a01b03831660145b60606000611e0f8360026128a4565b611e1a90600261287e565b6001600160401b03811115611e3157611e31612187565b6040519080825280601f01601f191660200182016040528015611e5b576020820181803683370190505b509050600360fc1b81600081518110611e7657611e766127b5565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ea557611ea56127b5565b60200101906001600160f81b031916908160001a9053506000611ec98460026128a4565b611ed490600161287e565b90505b6001811115611f4c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611f0857611f086127b5565b1a60f81b828281518110611f1e57611f1e6127b5565b60200101906001600160f81b031916908160001a90535060049490941c93611f4581612988565b9050611ed7565b508315611f9b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610780565b9392505050565b611fab81611d2f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611fed83611c66565b6120485760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610780565b600080846001600160a01b03168460405161206391906126a3565b600060405180830381855af49150503d806000811461209e576040519150601f19603f3d011682016040523d82523d6000602084013e6120a3565b606091505b50915091506120cb8282604051806060016040528060278152602001612a00602791396120d4565b95945050505050565b606083156120e3575081611f9b565b611f9b83838151156120f85781518083602001fd5b8060405162461bcd60e51b81526004016107809190612975565b60006020828403121561212457600080fd5b81356001600160e01b031981168114611f9b57600080fd5b60006020828403121561214e57600080fd5b5035919050565b6001600160a01b0381168114610a9157600080fd5b60006020828403121561217c57600080fd5b8135611f9b81612155565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156121c5576121c5612187565b604052919050565b600082601f8301126121de57600080fd5b81356001600160401b038111156121f7576121f7612187565b61220a601f8201601f191660200161219d565b81815284602083860101111561221f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561224f57600080fd5b823561225a81612155565b915060208301356001600160401b0381111561227557600080fd5b612281858286016121cd565b9150509250929050565b6000806000606084860312156122a057600080fd5b83356122ab81612155565b925060208401356001600160401b038111156122c657600080fd5b6122d2868287016121cd565b925050604084013590509250925092565b60005b838110156122fe5781810151838201526020016122e6565b50506000910152565b6000815180845261231f8160208601602086016122e3565b601f01601f19169290920160200192915050565b821515815260406020820152600061234e6040830184612307565b949350505050565b6000806040838503121561236957600080fd5b82359150602083013561237b81612155565b809150509250929050565b6001600160a01b0391909116815260200190565b60006001600160401b038211156123b3576123b3612187565b5060051b60200190565b600060208083850312156123d057600080fd5b82356001600160401b038111156123e657600080fd5b8301601f810185136123f757600080fd5b803561240a6124058261239a565b61219d565b81815260059190911b8201830190838101908783111561242957600080fd5b928401925b8284101561245057833561244181612155565b8252928401929084019061242e565b979650505050505050565b6000806040838503121561246e57600080fd5b50508035926020909101359150565b6000806000806080858703121561249357600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f8301126124c057600080fd5b813560206124d06124058361239a565b82815260059290921b840181019181810190868411156124ef57600080fd5b8286015b8481101561251357803561250681612155565b83529183019183016124f3565b509695505050505050565b6000806000806080858703121561253457600080fd5b84356001600160401b0381111561254a57600080fd5b612556878288016124af565b945050602085013561256781612155565b9250604085013561257781612155565b9396929550929360600135925050565b6000806000806080858703121561259d57600080fd5b84356125a881612155565b935060208501356001600160401b038111156125c357600080fd5b6125cf878288016121cd565b949794965050505060408301359260600135919050565b6000602082840312156125f857600080fd5b81356001600160401b0381111561260e57600080fd5b61234e848285016124af565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b038316815260406020820181905260009061234e90830184612307565b634e487b7160e01b600052601160045260246000fd5b60008261269e57634e487b7160e01b600052601260045260246000fd5b500490565b600082516126b58184602087016122e3565b9190910192915050565b6060815260006126d26060830186612307565b602083019490945250901515604090910152919050565b6020808252602c908201526000805160206129c083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206129c083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561276f57600080fd5b8151611f9b81612155565b60006020828403121561278c57600080fd5b5051919050565b6000602082840312156127a557600080fd5b81518015158114611f9b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016127dd576127dd61266b565b5060010190565b815160009082906020808601845b838110156128175781516001600160a01b0316855293820193908201906001016127f2565b50929695505050505050565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b6001600160a01b038516815260806020820181905260009061286b90830186612307565b6040830194909452506060015292915050565b808201808211156107265761072661266b565b818103818111156107265761072661266b565b80820281158282048414176107265761072661266b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516129388160178501602088016122e3565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516129698160288401602088016122e3565b01602801949350505050565b602081526000611f9b6020830184612307565b6000816129975761299761266b565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1377c0d84fe6558d615baae80404e1b10390bf9a3ff7baadd4ceab11b21412b64736f6c63430008130033", "deployedBytecode": "0x6080604052600436106101cf5760003560e01c806301ffc9a7146101db578063133d93a114610210578063248a9ca31461024057806324d7806c146102605780632beeaca4146102805780632bf16458146102a25780632f2ff15d146102d057806336568abe146102f05780633659cfe61461031057806336afc6fa146103305780633771dcf814610352578063377e11e0146103725780633e6326fc146103925780634f1ef286146103b357806352d1902d146103c657806354fd4d50146103db5780635b61e2c1146104155780635fc944e91461044e578063715018a61461046e57806378c8cda7146104835780637b76ac91146104a35780637e2c1355146104cb5780637fad46f2146104eb5780638da5cb5b1461050b57806391d1485414610520578063971d902c146105405780639c54df6414610560578063a217fddf14610580578063a5e598fc14610595578063bf64e66c146105b6578063c4892496146105e4578063d547741f146105fb578063d55ec6971461061b578063db62683814610630578063e6ea393914610650578063eb91e65114610667578063f2fde38b14610687578063f3da9f05146106a7578063f9f92be4146106be578063fe173b97146106de57600080fd5b366101d657005b600080fd5b3480156101e757600080fd5b506101fb6101f6366004612112565b6106f5565b60405190151581526020015b60405180910390f35b34801561021c57600080fd5b506102326000805160206129a083398151915281565b604051908152602001610207565b34801561024c57600080fd5b5061023261025b36600461213c565b61072c565b34801561026c57600080fd5b506101fb61027b36600461216a565b610741565b34801561028c57600080fd5b506102a061029b36600461223c565b61075b565b005b3480156102ae57600080fd5b506102c26102bd36600461228b565b610826565b604051610207929190612333565b3480156102dc57600080fd5b506102a06102eb366004612356565b610931565b3480156102fc57600080fd5b506102a061030b366004612356565b610952565b34801561031c57600080fd5b506102a061032b36600461216a565b6109cc565b34801561033c57600080fd5b50610345610a94565b6040516102079190612386565b34801561035e57600080fd5b506102a061036d36600461216a565b610b20565b34801561037e57600080fd5b506102a061038d3660046123bd565b610deb565b34801561039e57600080fd5b5061013254610345906001600160a01b031681565b6102a06103c136600461223c565b610e84565b3480156103d257600080fd5b50610232610f39565b3480156103e757600080fd5b506101345461040090600160801b900463ffffffff1681565b60405163ffffffff9091168152602001610207565b34801561042157600080fd5b5061013454610436906001600160401b031681565b6040516001600160401b039091168152602001610207565b34801561045a57600080fd5b506102a061046936600461245b565b610fe7565b34801561047a57600080fd5b506102a0611115565b34801561048f57600080fd5b506102a061049e36600461216a565b611129565b3480156104af57600080fd5b506101345461043690600160401b90046001600160401b031681565b3480156104d757600080fd5b506102a06104e636600461247d565b6111c3565b3480156104f757600080fd5b506102a061050636600461251e565b6111dd565b34801561051757600080fd5b506103456113dc565b34801561052c57600080fd5b506101fb61053b366004612356565b6113eb565b34801561054c57600080fd5b506102a061055b366004612587565b611416565b34801561056c57600080fd5b506102a061057b3660046125e6565b6114d8565b34801561058c57600080fd5b50610232600081565b3480156105a157600080fd5b5061013554610345906001600160a01b031681565b3480156105c257600080fd5b506102326105d136600461216a565b6101366020526000908152604090205481565b3480156105f057600080fd5b5061023261012f5481565b34801561060757600080fd5b506102a0610616366004612356565b6115ed565b34801561062757600080fd5b506102a0611609565b34801561063c57600080fd5b506102a061064b36600461213c565b6116a4565b34801561065c57600080fd5b5061023261012e5481565b34801561067357600080fd5b506102a061068236600461216a565b6116c3565b34801561069357600080fd5b506102a06106a236600461216a565b61171b565b3480156106b357600080fd5b506102326101305481565b3480156106ca57600080fd5b506102a06106d936600461216a565b611791565b3480156106ea57600080fd5b506102326101315481565b60006001600160e01b03198216637965db0b60e01b148061072657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b60006107266000805160206129a0833981519152836113eb565b61076433610741565b6107895760405162461bcd60e51b81526004016107809061261a565b60405180910390fd5b610791610a94565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016107be929190612647565b600060405180830381600087803b1580156107d857600080fd5b505af11580156107ec573d6000803e3d6000fd5b50505050600261012f546108009190612681565b333111801590610814575061081433610741565b1561082257610822336117e9565b5050565b6000606061083333610741565b61084f5760405162461bcd60e51b81526004016107809061261a565b846001600160a01b0316838560405161086891906126a3565b60006040518083038185875af1925050503d80600081146108a5576040519150601f19603f3d011682016040523d82523d6000602084013e6108aa565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0906108ef908790879087906126bf565b60405180910390a2600261012f546109079190612681565b33311180159061091b575061091b33610741565b1561092957610929336117e9565b935093915050565b61093a8261072c565b610943816118f5565b61094d83836118ff565b505050565b6001600160a01b03811633146109c25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610780565b6108228282611985565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a145760405162461bcd60e51b8152600401610780906126e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a466119ec565b6001600160a01b031614610a6c5760405162461bcd60e51b815260040161078090612723565b610a7581611a08565b60408051600080825260208201909252610a9191839190611a10565b50565b6101325460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1b919061275d565b905090565b610b2933610741565b610b455760405162461bcd60e51b81526004016107809061261a565b610135546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b77908590600401612386565b602060405180830381865afa158015610b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb8919061277a565b9050610bc2610a94565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401610bed9190612386565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190612793565b80610c5257506001600160a01b038216600090815261013660205260409020548114155b610c955760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b6044820152606401610780565b610130546101336000610ca6611b7b565b81526020019081526020016000206000846001600160a01b03166001600160a01b031681526020019081526020016000205410610d3e5760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b6064820152608401610780565b600461012e54610d4e9190612681565b826001600160a01b03163110610d935760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b6044820152606401610780565b6001600160a01b038216600090815261013660205260409020819055610db8826117e9565b50600261012f54610dc99190612681565b333111801590610ddd5750610ddd33610741565b15610a9157610a91336117e9565b610df3611b8a565b60005b8151811015610e4257610e306000805160206129a0833981519152838381518110610e2357610e236127b5565b60200260200101516115ed565b80610e3a816127cb565b915050610df6565b5080604051610e5191906127e4565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ecc5760405162461bcd60e51b8152600401610780906126e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610efe6119ec565b6001600160a01b031614610f245760405162461bcd60e51b815260040161078090612723565b610f2d82611a08565b61082282826001611a10565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fd45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610780565b506000805160206129e083398151915290565b61012d54821061102f5760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b6044820152606401610780565b815b61012d548110801561104257508181105b156111045761107861012d828154811061105e5761105e6127b5565b6000918252602090912001546001600160a01b0316610741565b80156110bc5750600261012f5461108f9190612681565b61012d82815481106110a3576110a36127b5565b6000918252602090912001546001600160a01b03163111155b156110f2576110f261012d82815481106110d8576110d86127b5565b6000918252602090912001546001600160a01b03166117e9565b806110fc816127cb565b915050611031565b50600261012f546108009190612681565b61111d611b8a565b6111276000611be9565b565b61113233610741565b61114e5760405162461bcd60e51b81526004016107809061261a565b611156610a94565b6001600160a01b031663291d9549826040518263ffffffff1660e01b81526004016111819190612386565b600060405180830381600087803b15801561119b57600080fd5b505af11580156111af573d6000803e3d6000fd5b50505050600261012f54610dc99190612681565b6111cb611b8a565b6111d784848484611c3b565b50505050565b600054610100900460ff16158080156111fd5750600054600160ff909116105b8061121e575061120c30611c66565b15801561121e575060005460ff166001145b6112815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610780565b6000805460ff1916600117905580156112a4576000805461ff0019166101001790555b6112ac611c75565b6112b4611c9c565b6112bf600084611ccc565b6112d2620927c062895440600385611c3b565b61013280546001600160a01b0319166001600160a01b0386161790558451156112fe576112fe856114d8565b6101325460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061132d90600401612823565b602060405180830381865afa158015