[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "evilUser", "type": "address" } ], "name": "AddedBlackList", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newBlacklister", "type": "address" } ], "name": "BlacklisterChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" } ], "name": "BurnedByMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "blackListedUser", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "dirtyFunds", "type": "uint256" } ], "name": "DestroyedBlackFunds", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Issued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newMasterMinter", "type": "address" } ], "name": "MasterMinterChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" } ], "name": "MintedByMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "minterAllowanceAmount", "type": "uint256" } ], "name": "MinterConfigured", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "minter", "type": "address" } ], "name": "MinterRemoved", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "PauserChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Redeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "clearedUser", "type": "address" } ], "name": "RemovedBlackList", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRescuer", "type": "address" } ], "name": "RescuerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_evilUser", "type": "address" } ], "name": "addBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allMinters", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "blacklister", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnByMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "minterAllowanceAmount", "type": "uint256" } ], "name": "configureMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_blackListedUser", "type": "address" } ], "name": "destroyBlackFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_maker", "type": "address" } ], "name": "getBlackListStatus", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "issue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "masterMinter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintByMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "minterAddresses", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minterAllowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minterUsedAllowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minters", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauser", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_clearedUser", "type": "address" } ], "name": "removeBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "removeMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenContract", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "rescueERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rescuer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newBlacklister", "type": "address" } ], "name": "updateBlacklister", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newMasterMinter", "type": "address" } ], "name": "updateMasterMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newPauser", "type": "address" } ], "name": "updatePauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRescuer", "type": "address" } ], "name": "updateRescuer", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506040518060400160405280600581526020016450697a7a6160d81b8152506040518060400160405280600581526020016450495a5a4160d81b8152506200006862000062620000d860201b60201c565b620000dc565b600180546001600160a81b031916339081178255600380546001600160a01b031990811683179091556004805490911690911790556005556009620000ae8382620001d1565b50600a620000bd8282620001d1565b5050600b80546001600160a01b03191633179055506200029d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015757607f821691505b6020821081036200017857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cc57600081815260208120601f850160051c81016020861015620001a75750805b601f850160051c820191505b81811015620001c857828155600101620001b3565b5050505b505050565b81516001600160401b03811115620001ed57620001ed6200012c565b6200020581620001fe845462000142565b846200017e565b602080601f8311600181146200023d5760008415620002245750858301515b600019600386901b1c1916600185901b178555620001c8565b600085815260208120601f198616915b828110156200026e578886015182559484019460019091019084016200024d565b50858210156200028d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61268e80620002ad6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80638456cb5911610151578063b2118a8d116100c3578063dd62ed3e11610087578063dd62ed3e1461055f578063e4997dc514610572578063f2fde38b14610585578063f3bdc22814610598578063f46eccc4146105ab578063fe575a87146105ce57600080fd5b8063b2118a8d146104fe578063b302e0a714610511578063bd10243014610526578063cc872b6614610539578063db006a751461054c57600080fd5b80639fd0506d116101155780639fd0506d1461048c578063a457c2d71461049f578063a9059cbb146104b2578063aa20e1e4146104c5578063aa271e1a146104d8578063ad38bf22146104eb57600080fd5b80638456cb59146104385780638a6db9c3146104405780638da5cb5b1461046057806395d89b41146104715780639cfe42da1461047957600080fd5b806338a63183116101ea578063554bab3c116101ae578063554bab3c146103ac57806359bf1abe146103bf5780635c975abb146103eb57806370a08231146103fd578063715018a614610410578063836c748c1461041857600080fd5b806338a6318314610358578063395093511461036b5780633f4ba83a1461037e5780634e44d9561461038657806352491d771461039957600080fd5b8063294425251161023157806329442525146102fb5780632ab60045146103105780633092afd514610323578063313ce5671461033657806335d99f351461034557600080fd5b8063028850971461026e57806306fdde031461029e578063095ea7b3146102b357806318160ddd146102d657806323b872dd146102e8575b600080fd5b61028161027c366004612296565b6105f1565b6040516001600160a01b0390911681526020015b60405180910390f35b6102a661061b565b60405161029591906122af565b6102c66102c1366004612314565b6106ad565b6040519015158152602001610295565b6008545b604051908152602001610295565b6102c66102f636600461233e565b6106c7565b61030e610309366004612314565b610765565b005b61030e61031e36600461237a565b610917565b6102c661033136600461237a565b6109d2565b60405160128152602001610295565b600b54610281906001600160a01b031681565b600454610281906001600160a01b031681565b6102c6610379366004612314565b610ca1565b6102c6610cc3565b6102c6610394366004612314565b610d0a565b61030e6103a7366004612314565b610e4f565b61030e6103ba36600461237a565b6110a7565b6102c66103cd36600461237a565b6001600160a01b031660009081526002602052604090205460ff1690565b600154600160a01b900460ff166102c6565b6102da61040b36600461237a565b611160565b61030e61117b565b6102da61042636600461237a565b600f6020526000908152604090205481565b6102c661118f565b6102da61044e36600461237a565b600e6020526000908152604090205481565b6000546001600160a01b0316610281565b6102a66111c4565b61030e61048736600461237a565b6111d3565b600154610281906001600160a01b031681565b6102c66104ad366004612314565b611249565b6102c66104c0366004612314565b6112cf565b61030e6104d336600461237a565b611357565b6102c66104e636600461237a565b611457565b61030e6104f936600461237a565b6114c0565b61030e61050c36600461233e565b611583565b610519611662565b604051610295919061239c565b600354610281906001600160a01b031681565b61030e610547366004612296565b6116c3565b61030e61055a366004612296565b611820565b6102da61056d3660046123e9565b6118ff565b61030e61058036600461237a565b61192a565b61030e61059336600461237a565b61199d565b61030e6105a636600461237a565b611a16565b6102c66105b936600461237a565b600d6020526000908152604090205460ff1681565b6102c66105dc36600461237a565b60026020526000908152604090205460ff1681565b600c818154811061060157600080fd5b6000918252602090912001546001600160a01b0316905081565b60606009805461062a9061241c565b80601f01602080910402602001604051908101604052809291908181526020018280546106569061241c565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b6000336106bb818585611b06565b60019150505b92915050565b60006106d1611c2b565b6001600160a01b038416600090815260026020526040902054849060ff16156107155760405162461bcd60e51b815260040161070c90612456565b60405180910390fd5b6001600160a01b038416600090815260026020526040902054849060ff16156107505760405162461bcd60e51b815260040161070c90612456565b61075b868686611c78565b9695505050505050565b61076d611c91565b336000908152600d602052604090205460ff166107cc5760405162461bcd60e51b815260206004820152601d60248201527f50697a7a613a2063616c6c6572206973206e6f742061206d696e746572000000604482015260640161070c565b6107d4611c2b565b3360008181526002602052604090205460ff16156108045760405162461bcd60e51b815260040161070c90612456565b6001600160a01b038316600090815260026020526040902054839060ff161561083f5760405162461bcd60e51b815260040161070c90612456565b8261084960085490565b101561085457600080fd5b8261085e85611160565b101561086957600080fd5b6108738484611cea565b336000908152600f6020526040902054838110156108a057336000908152600f60205260408120556108c5565b336000908152600f6020526040812080548692906108bf9084906124b1565b90915550505b604080518581526001600160a01b03871660208201527f7083ba3b497feec3a0cbd87eba92fea5320a9e302b45709c1952df267b2f7463910160405180910390a15050506109136001600555565b5050565b61091f611e16565b6001600160a01b0381166109885760405162461bcd60e51b815260206004820152602a60248201527f526573637561626c653a206e6577207265736375657220697320746865207a65604482015269726f206164647265737360b01b606482015260840161070c565b600480546001600160a01b0319166001600160a01b0383169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60006109dc611c2b565b600b546001600160a01b03163314610a065760405162461bcd60e51b815260040161070c906124c4565b6001600160a01b038216610a4c5760405162461bcd60e51b815260206004820152600d60248201526c5a65726f20616464726573732160981b604482015260640161070c565b6000546001600160a01b03166001600160a01b0316826001600160a01b031603610ab85760405162461bcd60e51b815260206004820152601c60248201527f596f752063616e6e6f742072656d6f766520746865206f776e65722100000000604482015260640161070c565b610ac182611457565b610b1e5760405162461bcd60e51b815260206004820152602860248201527f41646472657373206e6f74206f6e206c697374206f66206d696e746572206164604482015267647265737365732160c01b606482015260840161070c565b6001600160a01b0382166000908152600d60209081526040808320805460ff19169055600e8252808320839055600f90915281208190555b600c54811015610c5b57826001600160a01b0316600c8281548110610b7d57610b7d612509565b6000918252602090912001546001600160a01b031603610c4957600c8054610ba7906001906124b1565b81548110610bb757610bb7612509565b600091825260209091200154600c80546001600160a01b039092169183908110610be357610be3612509565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600c805480610c2257610c2261251f565b600082815260209020810160001990810180546001600160a01b0319169055019055610c5b565b80610c5381612535565b915050610b56565b506040516001600160a01b03831681527fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929060200160405180910390a15060015b919050565b6000336106bb818585610cb483836118ff565b610cbe919061254e565b611b06565b6001546000906001600160a01b03163314610cf05760405162461bcd60e51b815260040161070c90612561565b610cf8611e70565b600154600160a01b900460ff16905090565b6000610d14611c2b565b600b546001600160a01b03163314610d3e5760405162461bcd60e51b815260040161070c906124c4565b600b546001600160a01b0390811690841603610d9c5760405162461bcd60e51b815260206004820152601a60248201527f747279696e6720746f20616464206d61737465724d696e746572000000000000604482015260640161070c565b6001600160a01b0383166000818152600d60209081526040808320805460ff19166001908117909155600e909252808320869055600c805492830181559092527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191683179055517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d2090610e3e9085815260200190565b60405180910390a250600192915050565b610e57611c91565b336000908152600d602052604090205460ff16610eb65760405162461bcd60e51b815260206004820152601d60248201527f50697a7a613a2063616c6c6572206973206e6f742061206d696e746572000000604482015260640161070c565b610ebe611c2b565b3360008181526002602052604090205460ff1615610eee5760405162461bcd60e51b815260040161070c90612456565b6001600160a01b038316600090815260026020526040902054839060ff1615610f295760405162461bcd60e51b815260040161070c90612456565b336000908152600e6020908152604080832054600f9092529091205481610f50868361254e565b10610f965760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b604482015260640161070c565b600854610fa3868261254e565b11610fc05760405162461bcd60e51b815260040161070c906125a3565b610fc986611160565b85610fd388611160565b610fdd919061254e565b1161102a5760405162461bcd60e51b815260206004820181905260248201527f69737375696e67206e6567617469766520616d6f756e7420746f206f776e6572604482015260640161070c565b6110348686611ec5565b336000908152600f60205260408120805487929061105390849061254e565b9091555050604080518681526001600160a01b03881660208201527ffc1ebd3c32a78077819284e18347c81e3871c724530d32affebb831658c17d39910160405180910390a1505050506109136001600555565b6110af611e16565b6001600160a01b0381166111165760405162461bcd60e51b815260206004820152602860248201527f5061757361626c653a206e65772070617573657220697320746865207a65726f604482015267206164647265737360c01b606482015260840161070c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b6001600160a01b031660009081526006602052604090205490565b611183611e16565b61118d6000611f86565b565b6001546000906001600160a01b031633146111bc5760405162461bcd60e51b815260040161070c90612561565b610cf8611fd6565b6060600a805461062a9061241c565b6003546001600160a01b031633146111fd5760405162461bcd60e51b815260040161070c906125ea565b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc9190a250565b6000338161125782866118ff565b9050838110156112b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161070c565b6112c48286868403611b06565b506001949350505050565b60006112d9611c2b565b3360008181526002602052604090205460ff16156113095760405162461bcd60e51b815260040161070c90612456565b6001600160a01b038416600090815260026020526040902054849060ff16156113445760405162461bcd60e51b815260040161070c90612456565b61134e8585612019565b95945050505050565b61135f611c2b565b611367611e16565b6001600160a01b038116600090815260026020526040902054819060ff16156113a25760405162461bcd60e51b815260040161070c90612456565b6001600160a01b03821661140c5760405162461bcd60e51b815260206004820152602b60248201527f50697a7a613a206e6577206d61737465724d696e74657220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161070c565b600b80546001600160a01b0319166001600160a01b0384169081179091556040517fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a25050565b6000805b600c548110156114b757826001600160a01b0316600c828154811061148257611482612509565b6000918252602090912001546001600160a01b0316036114a55750600192915050565b806114af81612535565b91505061145b565b50600092915050565b6114c8611e16565b6001600160a01b0381166115395760405162461bcd60e51b815260206004820152603260248201527f426c61636b6c69737461626c653a206e657720626c61636b6c697374657220696044820152717320746865207a65726f206164647265737360701b606482015260840161070c565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b6004546001600160a01b031633146115e95760405162461bcd60e51b8152602060048201526024808201527f526573637561626c653a2063616c6c6572206973206e6f74207468652072657360448201526331bab2b960e11b606482015260840161070c565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165c9190612636565b50505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156106a357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161169c575050505050905090565b600b546001600160a01b031633146116ed5760405162461bcd60e51b815260040161070c906124c4565b6116f5611c2b565b3360008181526002602052604090205460ff16156117255760405162461bcd60e51b815260040161070c90612456565b600854611732838261254e565b1161174f5760405162461bcd60e51b815260040161070c906125a3565b600b54611764906001600160a01b0316611160565b600b54839061177b906001600160a01b0316611160565b611785919061254e565b116117d25760405162461bcd60e51b815260206004820181905260248201527f69737375696e67206e6567617469766520616d6f756e7420746f206f776e6572604482015260640161070c565b600b546117e8906001600160a01b031683611ec5565b6040518281527f0ff70e913721268f674352b5efa2e7268fcc191c80983d3fdf95fb474768b468906020015b60405180910390a15050565b600b546001600160a01b0316331461184a5760405162461bcd60e51b815260040161070c906124c4565b611852611c2b565b3360008181526002602052604090205460ff16156118825760405162461bcd60e51b815260040161070c90612456565b8161188c60085490565b101561189757600080fd5b600b5482906118ae906001600160a01b0316611160565b10156118b957600080fd5b600b546118cf906001600160a01b031683611cea565b6040518281527f82498456531a1065f689ba348ce20bda781238c424cf36748dd40bc282831e0390602001611814565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6003546001600160a01b031633146119545760405162461bcd60e51b815260040161070c906125ea565b6001600160a01b038116600081815260026020526040808220805460ff19169055517fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c9190a250565b6119a5611e16565b6001600160a01b038116611a0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161070c565b611a1381611f86565b50565b600b546001600160a01b03163314611a405760405162461bcd60e51b815260040161070c906124c4565b6001600160a01b03811660009081526002602052604090205460ff16611aa85760405162461bcd60e51b815260206004820152601860248201527f75736572206973206e6f7420626c61636b6c6973746564210000000000000000604482015260640161070c565b6000611ab382611160565b9050611abf8282611cea565b816001600160a01b03167f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c682604051611afa91815260200190565b60405180910390a25050565b6001600160a01b038316611b685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161070c565b6001600160a01b038216611bc95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161070c565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600154600160a01b900460ff161561118d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161070c565b600033611c86858285612027565b6112c485858561209b565b600260055403611ce35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b6002600555565b6001600160a01b038216611d4a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161070c565b6001600160a01b03821660009081526006602052604090205481811015611dbe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161070c565b6001600160a01b03831660008181526006602090815260408083208686039055600880548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c1e565b6000546001600160a01b0316331461118d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070c565b611e78612246565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216611f1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161070c565b8060086000828254611f2d919061254e565b90915550506001600160a01b0382166000818152600660209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611fde611c2b565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611ea83390565b6000336106bb81858561209b565b600061203384846118ff565b9050600019811461165c578181101561208e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161070c565b61165c8484848403611b06565b6001600160a01b0383166120ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161070c565b6001600160a01b0382166121615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161070c565b6001600160a01b038316600090815260066020526040902054818110156121d95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161070c565b6001600160a01b0380851660008181526006602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122399086815260200190565b60405180910390a361165c565b600154600160a01b900460ff1661118d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161070c565b6000602082840312156122a857600080fd5b5035919050565b600060208083528351808285015260005b818110156122dc578581018301518582016040015282016122c0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c9c57600080fd5b6000806040838503121561232757600080fd5b612330836122fd565b946020939093013593505050565b60008060006060848603121561235357600080fd5b61235c846122fd565b925061236a602085016122fd565b9150604084013590509250925092565b60006020828403121561238c57600080fd5b612395826122fd565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156123dd5783516001600160a01b0316835292840192918401916001016123b8565b50909695505050505050565b600080604083850312156123fc57600080fd5b612405836122fd565b9150612413602084016122fd565b90509250929050565b600181811c9082168061243057607f821691505b60208210810361245057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c6040820152641a5cdd195960da1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156106c1576106c161249b565b60208082526025908201527f50697a7a613a2063616c6c6572206973206e6f7420746865206d61737465724d60408201526434b73a32b960d91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600182016125475761254761249b565b5060010190565b808201808211156106c1576106c161249b565b60208082526022908201527f5061757361626c653a2063616c6c6572206973206e6f7420746865207061757360408201526132b960f11b606082015260800190565b60208082526027908201527f69737375696e67206e6567617469766520616d6f756e7420746f20746f74616c60408201526620737570706c7960c81b606082015260800190565b6020808252602c908201527f426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686560408201526b10313630b1b5b634b9ba32b960a11b606082015260800190565b60006020828403121561264857600080fd5b8151801515811461239557600080fdfea26469706673582212201c2c9a9f51f1b9cf089b2de42d74bd1dfa0ca74a55263b66e47d61d8c3321ebb64736f6c63430008130033