Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "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" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "BorrowableBalance", "outputs": [ { "internalType": "uint256", "name": "tethysAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "TETHYSBalance", "outputs": [ { "internalType": "uint256", "name": "tethysAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "admin", "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": [ { "internalType": "contract TMarketRouter", "name": "newRouter", "type": "address" } ], "name": "changeRouterAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20Votes.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "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": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "enter", "outputs": [ { "internalType": "uint256", "name": "sharesAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "enterBorrowable", "outputs": [ { "internalType": "uint256", "name": "sharesAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enterBorrowableAllIn", "outputs": [ { "internalType": "uint256", "name": "sharesAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "_share", "type": "uint256" } ], "name": "leave", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_share", "type": "uint256" } ], "name": "leaveWithBorrowable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrateFromOldStaking", "outputs": [ { "internalType": "uint256", "name": "sharesAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oldStaking", "outputs": [ { "internalType": "contract TethysTempleV1", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revoke", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardBorrowable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract TMarketRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tethysBorrowable", "outputs": [ { "internalType": "contract Borrowable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tethysUnderlying", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_xTETHYSAmount", "type": "uint256" } ], "name": "xTETHYSForBorrowable", "outputs": [ { "internalType": "uint256", "name": "tethysAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_xTETHYSAmount", "type": "uint256" } ], "name": "xTETHYSForTETHYS", "outputs": [ { "internalType": "uint256", "name": "tethysAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
6101606040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961014052600980546001600160a01b03199081167369fdb77064ec5c84fa2f21072973eb28441f43f317909155600a80548216731f4997494fcc21768a9afb92a80e2a9d29b64782179055600b8054821673c6028358251ce7773c12cb84fd6228c4a65d74b0179055600c805490911673716678968fd6e518cb1d56c9720fc8eeeba6ceab179055348015620000bb57600080fd5b506040518060400160405280600d81526020016c5465746879732054656d706c6560981b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600d81526020016c5465746879732054656d706c6560981b815250604051806040016040528060078152602001667854455448595360c81b81525081600390805190602001906200015b9291906200021f565b508051620001719060049060208401906200021f565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c052610120525050600d80546001600160a01b031916331790555062000302915050565b8280546200022d90620002c5565b90600052602060002090601f0160209004810192826200025157600085556200029c565b82601f106200026c57805160ff19168380011785556200029c565b828001600101855582156200029c579182015b828111156200029c5782518255916020019190600101906200027f565b50620002aa929150620002ae565b5090565b5b80821115620002aa5760008155600101620002af565b600181811c90821680620002da57607f821691505b60208210811415620002fc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161325e6200035d600039600061193601526000612243015260006122920152600061226d015260006121c6015260006121f00152600061221a015261325e6000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80638e539e8c1161013b578063c3cda520116100b8578063ebe730601161007c578063ebe7306014610549578063eff6c02a1461055c578063f1127ed814610564578063f851a440146105a1578063f887ea40146105b457600080fd5b8063c3cda520146104cf578063d505accf146104e2578063d98827f1146104f5578063dd62ed3e14610508578063e6fee2d11461054157600080fd5b8063a9059cbb116100ff578063a9059cbb14610486578063b41933e714610499578063b4febb22146104ac578063b6549f75146104b4578063bf3664d6146104bc57600080fd5b80638e539e8c1461043257806395d89b41146104455780639ab24eb01461044d578063a457c2d714610460578063a59f3e0c1461047357600080fd5b80633a46b1a8116101c957806367dfd4c91161018d57806367dfd4c9146103a85780636fcfff45146103bb57806370a08231146103e35780637ecebe001461040c57806386a1ec541461041f57600080fd5b80633a46b1a8146103185780634edf89801461032b5780635845dab114610356578063587cde1e146103695780635c19a95c1461039557600080fd5b806323b872dd1161021057806323b872dd146102c8578063244e90b2146102db578063313ce567146102ee5780633644e515146102fd578063395093511461030557600080fd5b806304db6e681461024d57806306fdde0314610262578063095ea7b31461028057806318160ddd146102a357806322691be9146102b5575b600080fd5b61026061025b366004612e4c565b6105c7565b005b61026a610634565b6040516102779190612eb6565b60405180910390f35b61029361028e366004612ec9565b6106c6565b6040519015158152602001610277565b6002545b604051908152602001610277565b6102606102c3366004612ef5565b6106dc565b6102936102d6366004612f0e565b6107f6565b6102a76102e9366004612ef5565b6108a0565b60405160128152602001610277565b6102a76109e0565b610293610313366004612ec9565b6109ef565b6102a7610326366004612ec9565b610a2b565b600c5461033e906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b6102a7610364366004612ef5565b610aa5565b61033e610377366004612e4c565b6001600160a01b039081166000908152600660205260409020541690565b6102606103a3366004612e4c565b610bcc565b6102606103b6366004612ef5565b610bd9565b6103ce6103c9366004612e4c565b610dba565b60405163ffffffff9091168152602001610277565b6102a76103f1366004612e4c565b6001600160a01b031660009081526020819052604090205490565b6102a761041a366004612e4c565b610de2565b60095461033e906001600160a01b031681565b6102a7610440366004612ef5565b610e00565b61026a610e5c565b6102a761045b366004612e4c565b610e6b565b61029361046e366004612ec9565b610ef2565b6102a7610481366004612ef5565b610f8b565b610293610494366004612ec9565b6111d5565b6102a76104a7366004612e4c565b6111e2565b6102a7611286565b61026061170b565b6102a76104ca366004612ef5565b611763565b6102606104dd366004612f65565b6117ac565b6102606104f0366004612fbf565b6118e2565b6102a7610503366004612e4c565b611a46565b6102a761051636600461302d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102a7611b77565b600a5461033e906001600160a01b031681565b610260611d28565b610577610572366004613066565b611e11565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610277565b600d5461033e906001600160a01b031681565b600b5461033e906001600160a01b031681565b600d546001600160a01b031633146106125760405162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b60448201526064015b60405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600380546106439061309d565b80601f016020809104026020016040519081016040528092919081815260200182805461066f9061309d565b80156106bc5780601f10610691576101008083540402835291602001916106bc565b820191906000526020600020905b81548152906001019060200180831161069f57829003601f168201915b5050505050905090565b60006106d3338484611e95565b50600192915050565b60006106e760025490565b600a546040516370a0823160e01b815230600482015291925060009161076f918491610769916001600160a01b0316906370a08231906024015b602060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076291906130d2565b8690611fb9565b90611fc5565b905061077b3384611fd1565b600a5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f091906130eb565b50505050565b6000610803848484611fdb565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108885760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610609565b6108958533858403611e95565b506001949350505050565b600a546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091191906130d2565b9050600061091e60025490565b905080158061092b575081155b156109425761093a33856121af565b839250610961565b6000610952836107698785611fb9565b905061095e33826121af565b92505b600a546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906109959033903090899060040161310d565b6020604051808303816000875af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906130eb565b505050919050565b60006109ea6121b9565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106d3918590610a26908690613147565b611e95565b6000438210610a7c5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610609565b6001600160a01b0383166000908152600760205260409020610a9e90836122e0565b9392505050565b600080610ab160025490565b90506000600a60009054906101000a90046001600160a01b03166001600160a01b031663be340e326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2c91906130d2565b600a546040516370a0823160e01b8152306004820152919250610bc491670de0b6b3a764000091610769918591610bbe91889185916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb791906130d2565b8b90611fb9565b90611fb9565b949350505050565b610bd6338261239d565b50565b6000610be460025490565b600a546040516370a0823160e01b8152306004820152919250600091610c22918491610769916001600160a01b0316906370a0823190602401610721565b9050610c2e3384611fd1565b600a54600b5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca791906130eb565b50600b54600a5460408051600080825260208201928390526307c7316f60e21b90925290926001600160a01b0390811692631f1cc5bc92610cfa92909116908690309064174876e7ff906024810161315f565b6020604051808303816000875af1158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d91906130d2565b60095460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db391906130eb565b5050505050565b6001600160a01b038116600090815260076020526040812054610ddc90612416565b92915050565b6001600160a01b038116600090815260056020526040812054610ddc565b6000438210610e515760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610609565b610ddc6008836122e0565b6060600480546106439061309d565b6001600160a01b0381166000908152600760205260408120548015610edf576001600160a01b0383166000908152600760205260409020610ead6001836131a4565b81548110610ebd57610ebd6131bb565b60009182526020909120015464010000000090046001600160e01b0316610ee2565b60005b6001600160e01b03169392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610609565b610f813385858403611e95565b5060019392505050565b600a546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc91906130d2565b9050600061100960025490565b600954600b5460405163095ea7b360e01b81526001600160a01b03918216600482015260248101889052929350169063095ea7b3906044016020604051808303816000875af1158015611060573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108491906130eb565b506009546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906110b99033903090899060040161310d565b6020604051808303816000875af11580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc91906130eb565b50600b54600a54604051633c173a4f60e01b81526001600160a01b0391821660048201526024810187905230604482015264174876e7ff60648201526000929190911690633c173a4f906084016020604051808303816000875af1158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c91906130d2565b9050811580611199575082155b156111b0576111a833826121af565b8093506109d8565b60006111c0846107698486611fb9565b90506111cc33826121af565b95945050505050565b60006106d3338484611fdb565b6001600160a01b038116600090815260208190526040812054600061120660025490565b600a546040516370a0823160e01b8152306004820152919250610bc4918391610769916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f91906130d2565b8590611fb9565b6009546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f791906130d2565b600c546040516370a0823160e01b81523360048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611345573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136991906130d2565b600c546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd9061139e9033903090869060040161310d565b6020604051808303816000875af11580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e191906130eb565b50600c5460405163095ea7b360e01b81526001600160a01b0390911660048201819052602482018390529063095ea7b3906044016020604051808303816000875af1158015611434573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145891906130eb565b50600c546040516367dfd4c960e01b8152600481018390526001600160a01b03909116906367dfd4c990602401600060405180830381600087803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b50506009546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015611502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152691906130d2565b90506000611534828561247f565b600a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a691906130d2565b905060006115b360025490565b600954600b5460405163095ea7b360e01b81526001600160a01b03918216600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af115801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e91906130eb565b50600b54600a54604051633c173a4f60e01b81526001600160a01b0391821660048201526024810186905230604482015264174876e7ff60648201526000929190911690633c173a4f906084016020604051808303816000875af115801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be91906130d2565b90508115806116cb575082155b156116e2576116da33826121af565b809750611701565b60006116f2846107698486611fb9565b90506116fe33826121af565b97505b5050505050505090565b600d546001600160a01b031633146117515760405162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b6044820152606401610609565b600d80546001600160a01b0319169055565b60008061176f60025490565b600a546040516370a0823160e01b8152306004820152919250610a9e918391610769916001600160a01b03909116906370a0823190602401610721565b834211156117fc5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610609565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906118769061186e9060a0016040516020818303038152906040528051906020012061248b565b8585856124d9565b905061188181612501565b86146118cf5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610609565b6118d9818861239d565b50505050505050565b834211156119325760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610609565b60007f00000000000000000000000000000000000000000000000000000000000000008888886119618c612501565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006119bc8261248b565b905060006119cc828787876124d9565b9050896001600160a01b0316816001600160a01b031614611a2f5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610609565b611a3a8a8a8a611e95565b50505050505050505050565b6001600160a01b0381166000908152602081905260408120546000611a6a60025490565b90506000600a60009054906101000a90046001600160a01b03166001600160a01b031663be340e326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae591906130d2565b600a546040516370a0823160e01b81523060048201529192506111cc91670de0b6b3a764000091610769918591610bbe91889185916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906130d2565b8a90611fb9565b600a546040516370a0823160e01b815233600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be891906130d2565b600a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a91906130d2565b90506000611c6760025490565b9050801580611c74575081155b15611c8b57611c8333846121af565b829350611caa565b6000611c9b836107698685611fb9565b9050611ca733826121af565b93505b600a546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611cde9033903090889060040161310d565b6020604051808303816000875af1158015611cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2191906130eb565b5050505090565b600a546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9591906130d2565b600a546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd90611dca9033903090869060040161310d565b6020604051808303816000875af1158015611de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0d91906130eb565b5050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600760205260409020805463ffffffff8416908110611e5557611e556131bb565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b038316611ef75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6001600160a01b038216611f585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610609565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a9e82846131d1565b6000610a9e82846131f0565b611e0d8282612529565b6001600160a01b03831661203f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610609565b6001600160a01b0382166120a15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610609565b6001600160a01b038316600090815260208190526040902054818110156121195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610609565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612150908490613147565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219c91815260200190565b60405180910390a36107f0848484612546565b611e0d8282612551565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561221257507f000000000000000000000000000000000000000000000000000000000000000046145b1561223c57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156123445760006122fb82846125db565b905084868281548110612310576123106131bb565b60009182526020909120015463ffffffff1611156123305780925061233e565b61233b816001613147565b91505b506122e7565b811561238857846123566001846131a4565b81548110612366576123666131bb565b60009182526020909120015464010000000090046001600160e01b031661238b565b60005b6001600160e01b031695945050505050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46107f08284836125f6565b600063ffffffff82111561247b5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610609565b5090565b6000610a9e82846131a4565b6000610ddc6124986121b9565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006124ea87878787612733565b915091506124f781612820565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b61253382826129db565b6107f0600861247f83612b30565b505050565b612541838383612ca9565b61255b8282612cdb565b6002546001600160e01b0310156125cd5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610609565b6107f06008612dc283612b30565b60006125ea60028484186131f0565b610a9e90848416613147565b816001600160a01b0316836001600160a01b0316141580156126185750600081115b15612541576001600160a01b038316156126a6576001600160a01b038316600090815260076020526040812081906126539061247f85612b30565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161269b929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615612541576001600160a01b038216600090815260076020526040812081906126dc90612dc285612b30565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612724929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561276a5750600090506003612817565b8460ff16601b1415801561278257508460ff16601c14155b156127935750600090506004612817565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661281057600060019250925050612817565b9150600090505b94509492505050565b600081600481111561283457612834613212565b141561283d5750565b600181600481111561285157612851613212565b141561289f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610609565b60028160048111156128b3576128b3613212565b14156129015760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610609565b600381600481111561291557612915613212565b141561296e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610609565b600481600481111561298257612982613212565b1415610bd65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610609565b6001600160a01b038216612a3b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610609565b6001600160a01b03821660009081526020819052604090205481811015612aaf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610609565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ade9084906131a4565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361254183600084612546565b825460009081908015612b7b5785612b496001836131a4565b81548110612b5957612b596131bb565b60009182526020909120015464010000000090046001600160e01b0316612b7e565b60005b6001600160e01b03169250612b9783858763ffffffff16565b9150600081118015612bd557504386612bb16001846131a4565b81548110612bc157612bc16131bb565b60009182526020909120015463ffffffff16145b15612c3557612be382612dce565b86612bef6001846131a4565b81548110612bff57612bff6131bb565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550612ca0565b856040518060400160405280612c4a43612416565b63ffffffff168152602001612c5e85612dce565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6001600160a01b03838116600090815260066020526040808220548584168352912054612541929182169116836125f6565b6001600160a01b038216612d315760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610609565b8060026000828254612d439190613147565b90915550506001600160a01b03821660009081526020819052604081208054839290612d70908490613147565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611e0d60008383612546565b6000610a9e8284613147565b60006001600160e01b0382111561247b5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610609565b6001600160a01b0381168114610bd657600080fd5b600060208284031215612e5e57600080fd5b8135610a9e81612e37565b6000815180845260005b81811015612e8f57602081850181015186830182015201612e73565b81811115612ea1576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610a9e6020830184612e69565b60008060408385031215612edc57600080fd5b8235612ee781612e37565b946020939093013593505050565b600060208284031215612f0757600080fd5b5035919050565b600080600060608486031215612f2357600080fd5b8335612f2e81612e37565b92506020840135612f3e81612e37565b929592945050506040919091013590565b803560ff81168114612f6057600080fd5b919050565b60008060008060008060c08789031215612f7e57600080fd5b8635612f8981612e37565b95506020870135945060408701359350612fa560608801612f4f565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215612fda57600080fd5b8735612fe581612e37565b96506020880135612ff581612e37565b9550604088013594506060880135935061301160808901612f4f565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561304057600080fd5b823561304b81612e37565b9150602083013561305b81612e37565b809150509250929050565b6000806040838503121561307957600080fd5b823561308481612e37565b9150602083013563ffffffff8116811461305b57600080fd5b600181811c908216806130b157607f821691505b6020821081141561252357634e487b7160e01b600052602260045260246000fd5b6000602082840312156130e457600080fd5b5051919050565b6000602082840312156130fd57600080fd5b81518015158114610a9e57600080fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561315a5761315a613131565b500190565b6001600160a01b03868116825260208201869052841660408201526060810183905260a06080820181905260009061319990830184612e69565b979650505050505050565b6000828210156131b6576131b6613131565b500390565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156131eb576131eb613131565b500290565b60008261320d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a84d8607b4bc9691232818c5e81af1f729e3ad1bb56dc26de6b1d62cec6aa24364736f6c634300080a0033