0 txs
57.9k calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
bondIssuer
viewfunction bondIssuer() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
feePolicy
viewfunction feePolicy() view returns (address)
keeper
viewfunction keeper() view returns (address)
MAX_RESERVE_COUNT
viewfunction MAX_RESERVE_COUNT() view returns (uint8)
maxDepositTrancheValuePerc
viewfunction maxDepositTrancheValuePerc() view returns (uint256)
maxSupply
viewfunction maxSupply() view returns (uint256)
maxTrancheMaturitySec
viewfunction maxTrancheMaturitySec() view returns (uint256)
minTrancheMaturitySec
viewfunction minTrancheMaturitySec() view returns (uint256)
name
viewfunction name() view returns (string)
ONE
viewfunction ONE() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PERC_DECIMALS
viewfunction PERC_DECIMALS() view returns (uint8)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
vault
viewfunction vault() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
computeMintAmt
nonpayablefunction computeMintAmt(address trancheIn, uint256 trancheInAmt) returns (uint256)
computeRedemptionAmts
nonpayablefunction computeRedemptionAmts(uint256 perpAmtBurnt) returns (tuple[])
computeRolloverAmt
nonpayablefunction computeRolloverAmt(address trancheIn, address tokenOut, uint256 trancheInAmtAvailable) returns (tuple)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(address trancheIn, uint256 trancheInAmt) returns (uint256)
deviationRatio
nonpayablefunction deviationRatio() returns (uint256)
getDepositBond
nonpayablefunction getDepositBond() returns (address)
getDepositTranche
nonpayablefunction getDepositTranche() returns (address)
getDepositTrancheRatio
nonpayablefunction getDepositTrancheRatio() returns (uint256)
getReserveAt
nonpayablefunction getReserveAt(uint256 i) returns (address)
getReserveCount
nonpayablefunction getReserveCount() returns (uint256)
getReserveTokenBalance
nonpayablefunction getReserveTokenBalance(address token) returns (uint256)
getReserveTokensUpForRollover
nonpayablefunction getReserveTokensUpForRollover() returns (address[])
getReserveTokenValue
nonpayablefunction getReserveTokenValue(address token) returns (uint256)
getTVL
nonpayablefunction getTVL() returns (uint256)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
init
nonpayablefunction init(string name, string symbol, address collateral_, address bondIssuer_, address feePolicy_)
inReserve
nonpayablefunction inReserve(address token) returns (bool)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(uint256 perpAmtBurnt) returns (tuple[])
renounceOwnership
nonpayablefunction renounceOwnership()
rollover
nonpayablefunction rollover(address trancheIn, address tokenOut, uint256 trancheInAmtAvailable) returns (tuple)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferERC20
nonpayablefunction transferERC20(address token, address to, uint256 amount)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateBondIssuer
nonpayablefunction updateBondIssuer(address bondIssuer_)
updateFeePolicy
nonpayablefunction updateFeePolicy(address feePolicy_)
updateKeeper
nonpayablefunction updateKeeper(address keeper_)
updateMaxDepositTrancheValuePerc
nonpayablefunction updateMaxDepositTrancheValuePerc(uint256 maxDepositTrancheValuePerc_)
updateMaxSupply
nonpayablefunction updateMaxSupply(uint256 maxSupply_)
updateState
nonpayablefunction updateState()
updateTolerableTrancheMaturity
nonpayablefunction updateTolerableTrancheMaturity(uint256 minTrancheMaturitySec_, uint256 maxTrancheMaturitySec_)
updateVault
nonpayablefunction updateVault(address vault_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ReserveSynced
event ReserveSynced(address token, uint256 balance)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
UpdatedDepositBond
event UpdatedDepositBond(address bond)
errors
ExceededMaxMintPerTranche
error ExceededMaxMintPerTranche()
ExceededMaxSupply
error ExceededMaxSupply()
InvalidPerc
error InvalidPerc()
ReserveCountOverLimit
error ReserveCountOverLimit()
UnacceptableParams
error UnacceptableParams()
UnacceptableRollover
error UnacceptableRollover()
UnauthorizedCall
error UnauthorizedCall()
UnauthorizedTransferOut
error UnauthorizedTransferOut()
UnexpectedAsset
error UnexpectedAsset()
UnexpectedDecimals
error UnexpectedDecimals()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614a1480620000f36000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806376500c17116101de5780639db5dbe41161010f578063dd62ed3e116100ad578063ef98f8841161007c578063ef98f8841461076b578063f103b4331461077e578063f2fde38b14610791578063fbfa77cf146107a457600080fd5b8063dd62ed3e14610702578063defb9fc11461073b578063e7563f3f1461074e578063eca05e961461076157600080fd5b8063aced1661116100e9578063aced1661146106b7578063c2ee3a08146106d0578063d5abeb01146106d8578063db006a75146106e257600080fd5b80639db5dbe41461067e578063a457c2d714610691578063a9059cbb146106a457600080fd5b80638da5cb5b1161017c57806395d89b411161015657806395d89b4114610653578063977902171461065b57806397b3fcaa1461066e578063998065461461067657600080fd5b80638da5cb5b146106275780638fb69c4b1461063857806392a18b441461064057600080fd5b806379cc6790116101b857806379cc6790146105f057806382589038146106035780638456cb59146106175780638b5393821461061f57600080fd5b806376500c17146105c257806377da7d8d146105ca57806378f3ae74146105dd57600080fd5b806342966c68116102c35780635ec572511161026157806370a082311161023057806370a0823114610575578063715018a61461059e578063729256eb146105a657806375d5179f146105ba57600080fd5b80635ec572511461053d57806361902ffc1461054757806369f6f92c1461055a5780636f307dc31461056d57600080fd5b80634951ef8d1161029d5780634951ef8d146105025780634ce2f3ca1461050c5780635c975abb1461051f5780635dcc45b71461052a57600080fd5b806342966c68146104c957806343cda19d146104dc57806347e7ef24146104ef57600080fd5b80632cff15ce116103305780633434dc4e1161030a5780633434dc4e14610491578063364d22fc1461049957806339509351146104ae5780633f4ba83a146104c157600080fd5b80632cff15ce1461045c578063313ce5671461046f578063332d83d51461048957600080fd5b806318160ddd1161036c57806318160ddd146103ff5780631d8557d71461041157806323b872dd1461041b5780632bf8f1a51461042e57600080fd5b806306fdde0314610393578063095ea7b3146103b1578063107c0418146103d4575b600080fd5b61039b6107b8565b6040516103a891906142b1565b60405180910390f35b6103c46103bf3660046142f9565b61084a565b60405190151581526020016103a8565b6103e76103e2366004614325565b610864565b6040516001600160a01b0390911681526020016103a8565b6035545b6040519081526020016103a8565b61041961087f565b005b6103c461042936600461433e565b610c0d565b61044161043c36600461433e565b610c33565b604080518251815260209283015192810192909252016103a8565b61041961046a36600461437f565b610d09565b61012d5460ff165b60405160ff90911681526020016103a8565b6103e7610d3f565b610403610d65565b6104a1610eb1565b6040516103a891906143a1565b6103c46104bc3660046142f9565b611159565b610419611198565b6104196104d7366004614325565b6111d1565b6104036104ea3660046143ee565b6111de565b6104036104fd3660046142f9565b611266565b6104036101375481565b61044161051a36600461433e565b6112f9565b60c95460ff166103c4565b6103c46105383660046143ee565b61134f565b6104036101335481565b6104036105553660046142f9565b611362565b6104196105683660046143ee565b61139c565b6103e761144f565b6104036105833660046143ee565b6001600160a01b031660009081526033602052604090205490565b61041961145b565b610131546103e7906001600160a01b031681565b610477600881565b610477600b81565b6104036105d83660046143ee565b61146d565b6104196105eb3660046144ae565b6115b0565b6104196105fe3660046142f9565b6117d8565b61012e546103e7906001600160a01b031681565b6104196117f1565b61040361182a565b6097546001600160a01b03166103e7565b6103e761184a565b61041961064e3660046143ee565b611865565b61039b61192c565b6104196106693660046143ee565b61193b565b610403611983565b610403611995565b61041961068c36600461433e565b6119aa565b6103c461069f3660046142f9565b611a0c565b6103c46106b23660046142f9565b611aa9565b61012d546103e79061010090046001600160a01b031681565b610403611ab7565b6104036101365481565b6106f56106f0366004614325565b611ac6565b6040516103a8919061454c565b6104036107103660046145a4565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b610419610749366004614325565b611bec565b61041961075c3660046143ee565b611c4f565b6104036101345481565b6106f5610779366004614325565b611c7a565b61041961078c366004614325565b611c8d565b61041961079f3660046143ee565b611cc4565b61013d546103e7906001600160a01b031681565b6060603680546107c7906145dd565b80601f01602080910402602001604051908101604052809291908181526020018280546107f3906145dd565b80156108405780601f1061081557610100808354040283529160200191610840565b820191906000526020600020905b81548152906001019060200180831161082357829003601f168201915b5050505050905090565b600033610858818585611d3a565b60019150505b92915050565b600061086e61087f565b61087782611e5e565b90505b919050565b610887611e6c565b60c95460ff16610c0157610131546040805163d5eb27a160e01b815290516000926001600160a01b03169163d5eb27a1916004808301926020929190829003018187875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190614617565b610132549091506001600160a01b03808316911614801590610927575061092781611ec5565b1561097f5761013280546001600160a01b0319166001600160a01b0383169081179091556040519081527f63e01b6b930f6bd3789aab43a62005627cb8a43517cd0569f997fd6b343b80239060200160405180910390a15b600061098c61013a612152565b9050600061099b60018361464a565b90505b60ff811615610bea5760006109b58260ff16611e5e565b90506000816001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190614617565b90506000610a31826001600160a01b031661215c565b1115610a3e575050610bd8565b806001600160a01b031663ae4e7fdf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190614663565b610af857806001600160a01b03166387b652076040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b03808316916333d20e34918591908216906370a0823190602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190614685565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b50505050610bd4826121db565b5050505b80610be28161469e565b91505061099e565b50610bfd610bf86000611e5e565b6121db565b5050505b610c0b600160fb55565b565b600033610c1b858285612345565b610c268585856123d7565b60019150505b9392505050565b604080518082019091526000808252602082015261013d546001600160a01b03163314610c7357604051637bf6a16f60e01b815260040160405180910390fd5b610c7b61087f565b610c83611e6c565b610c8b612582565b610c9584846125d5565b610cb257604051633c37540f60e21b815260040160405180910390fd5b6000610cbf858585612631565b60208101519091501580610cd257508051155b15610cde579050610cff565b610cec858260200151612ab7565b50610cfb848260000151612ad7565b5090505b610c2c600160fb55565b610d11612aed565b80821115610d3257604051638d2e9ded60e01b815260040160405180910390fd5b6101339190915561013455565b6000610d4961087f565b61013254610d5f906001600160a01b0316612b47565b90505b90565b6000610d6f61087f565b610d77611e6c565b61012e5460408051606081019091526001600160a01b03909116906301356c8c9080610da1612bb2565b815261013d5460408051634bd9fe5560e11b815290516020938401936001600160a01b03909316926397b3fcaa92600480820193918290030181865afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190614685565b815261013254602090910190610e31906001600160a01b0316612d24565b9052604080516001600160e01b031960e085901b16815282516004820152602083015160248201529101516044820152606401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190614685565b9050610d62600160fb55565b6060610ebb61087f565b6000610ec861013a612152565b905060008160ff1667ffffffffffffffff811115610ee857610ee861440b565b604051908082528060200260200182016040528015610f11578160200160208202803683370190505b509050600080610f216000611e5e565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190614685565b1115610fcf578083600081518110610fa957610fa96146bb565b6001600160a01b039092166020928302919091019091015281610fcb816146d1565b9250505b60015b8460ff168160ff16101561104b576000610fee8260ff16611e5e565b9050610ff981612d8f565b1561103a5780858360ff1681518110611014576110146146bb565b6001600160a01b039092166020928302919091019091015283611036816146d1565b9450505b50611044816146d1565b9050610fd2565b5060008260ff1667ffffffffffffffff81111561106a5761106a61440b565b604051908082528060200260200182016040528015611093578160200160208202803683370190505b5090506000805b8660ff168160ff16101561114d5760006001600160a01b0316868260ff16815181106110c8576110c86146bb565b60200260200101516001600160a01b03161461113d57858160ff16815181106110f3576110f36146bb565b6020026020010151838380611107906146d1565b945060ff168151811061111c5761111c6146bb565b60200260200101906001600160a01b031690816001600160a01b0316815250505b611146816146d1565b905061109a565b50909550505050505090565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061085890829086906111939087906146f0565b611d3a565b61012d5461010090046001600160a01b031633146111c957604051637bf6a16f60e01b815260040160405180910390fd5b610c0b612e10565b6111db3382612e62565b50565b60006111e861087f565b6111f182612f96565b6111fd57506000919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a08231906024015b602060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190614685565b600061127061087f565b611278611e6c565b611280612582565b61128983612fa4565b6112a657604051632c88119960e11b815260040160405180910390fd5b60006112b28484612fc1565b90508215806112bf575080155b156112ce5760009150506112ef565b6112d88484612ab7565b506112e333826130e9565b6112ec846131aa565b90505b61085e600160fb55565b604080518082019091526000808252602082015261131561087f565b61131f84846125d5565b61133c57604051633c37540f60e21b815260040160405180910390fd5b611347848484612631565b949350505050565b600061135961087f565b61087782612f96565b600061136c61087f565b61137583612fa4565b61139257604051632c88119960e11b815260040160405180910390fd5b610c2c8383612fc1565b6113a4612aed565b600860ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140b9190614703565b60ff161461142c5760405163c51d798560e01b815260040160405180910390fd5b61012e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5f6000611e5e565b611463612aed565b610c0b60006133c0565b600061147761087f565b61148082612f96565b61148c57506000919050565b61149582613412565b156114c6576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401611225565b60008290506000816001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561150b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152f9190614617565b905061134782826115406000611e5e565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a08231906024015b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190614685565b6001613439565b600054610100900460ff16158080156115d05750600054600160ff909116105b806115ea5750303b1580156115ea575060005460ff166001145b6116615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015611684576000805461ff0019166101001790555b61168e8686613545565b6116966135a8565b61169e613601565b6116a6613662565b6116ae6136c3565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190614703565b61012d805460ff191660ff9290921691909117905561173161013a85613724565b5061173b846121db565b506117516106696097546001600160a01b031690565b61175a8261139c565b61176383611865565b6117706001600019610d09565b61177b600019611c8d565b61178a6107496008600a61480a565b80156117d0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6117e3823383612345565b6117ed8282612e62565b5050565b61012d5461010090046001600160a01b0316331461182257604051637bf6a16f60e01b815260040160405180910390fd5b610c0b613739565b600061183461087f565b61013254610d5f906001600160a01b0316612d24565b600061185461087f565b50610132546001600160a01b031690565b61186d612aed565b6118776000611e5e565b6001600160a01b0316816001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190614617565b6001600160a01b03161461190957604051632c88119960e11b815260040160405180910390fd5b61013180546001600160a01b0319166001600160a01b0392909216919091179055565b6060603780546107c7906145dd565b611943612aed565b61012d80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600061198d61087f565b610d5f612bb2565b600061199f61087f565b610d5f61013a612152565b6119b261087f565b6119ba611e6c565b6119c2612aed565b6119cb83612f96565b156119e9576040516328071e2f60e11b815260040160405180910390fd5b6119fd6001600160a01b0384168383613776565b611a07600160fb55565b505050565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015611a915760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611658565b611a9e8286868403611d3a565b506001949350505050565b6000336108588185856123d7565b611ac36008600a61480a565b81565b6060611ad061087f565b611ad8611e6c565b611ae0612582565b60008211611b2d576040805160008082526020820190925290611b25565b6040805180820190915260008082526020820152815260200190600190039081611afe5790505b509050611be2565b6000611b38836137ee565b9050611b443384612e62565b805160005b8160ff168160ff161015611bdc576000838260ff1681518110611b6e57611b6e6146bb565b6020026020010151602001511115611bcc57611bca838260ff1681518110611b9857611b986146bb565b602002602001015160000151848360ff1681518110611bb957611bb96146bb565b602002602001015160200151612ad7565b505b611bd5816146d1565b9050611b49565b50909150505b61087a600160fb55565b61012d5461010090046001600160a01b03163314611c1d57604051637bf6a16f60e01b815260040160405180910390fd5b611c296008600a61480a565b811115611c49576040516366e3134960e11b815260040160405180910390fd5b61013755565b611c57612aed565b61013d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060611c8461087f565b610877826137ee565b61012d5461010090046001600160a01b03163314611cbe57604051637bf6a16f60e01b815260040160405180910390fd5b61013655565b611ccc612aed565b6001600160a01b038116611d315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611658565b6111db816133c0565b6001600160a01b038316611d9c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611658565b6001600160a01b038216611dfd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611658565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061087761013a83613a74565b600260fb5403611ebe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611658565b600260fb55565b6000611ed16000611e5e565b6001600160a01b0316826001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3c9190614617565b6001600160a01b0316148015611fb35750816001600160a01b03166359eb82246040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faf9190614685565b6002145b801561201e5750816001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201c9190614685565b155b801561203d57506101345461203b836001600160a01b031661215c565b105b80156120c557506001600160a01b038216612059816000613a80565b6001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ba9190614617565b6001600160a01b0316145b801561087757506001600160a01b0382166120e1816001613a80565b6001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121429190614617565b6001600160a01b03161492915050565b6000610877825490565b600080826001600160a01b031663d59624b46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c19190614685565b90504281116121d1576000610c2c565b610c2c4282614819565b6040516370a0823160e01b815230600482015260009081906001600160a01b038416906370a0823190602401602060405180830381865afa158015612224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122489190614685565b604080516001600160a01b0386168152602081018390529192507fd1fbbd81a5fd46d869b5cd6883d99108cd295072be1b09d36381bbc78b686939910160405180910390a161229683613412565b156122a15792915050565b60006122ac84612f96565b90506000821180156122bc575080155b156122ff576122cd61013a85613724565b50600b6122db61013a612152565b11156122fa57604051630aadf0b960e41b815260040160405180910390fd5b612337565b8115801561230a5750805b156123375761231b61013a85613af5565b506001600160a01b038416600090815261013860205260408120555b5092915050565b600160fb55565b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146123d157818110156123c45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611658565b6123d18484848403611d3a565b50505050565b6001600160a01b03831661243b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611658565b6001600160a01b03821661249d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611658565b6001600160a01b038316600090815260336020526040902054818110156125155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611658565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125759086815260200190565b60405180910390a36123d1565b60c95460ff1615610c0b5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611658565b60006125e082613412565b156125f5576125ee83612fa4565b905061085e565b816125ff84612fa4565b801561260f575061260f81612f96565b8015612621575061261f81612fa4565b155b8015611347575061134781612d8f565b604080518082019091526000808252602082015261012e5460408051606081019091526000916001600160a01b031690638b83535b9082906301356c8c9080612678612bb2565b815261013d5460408051634bd9fe5560e11b815290516020938401936001600160a01b03909316926397b3fcaa92600480820193918290030181865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190614685565b815261013254602090910190612708906001600160a01b0316612d24565b9052604080516001600160e01b031960e085901b16815282516004820152602083015160248201529101516044820152606401602060405180830381865afa158015612758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277c9190614685565b6040518263ffffffff1660e01b815260040161279a91815260200190565b602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db9190614685565b905060006127e96000611e5e565b61012d549091506000906128019060ff16600a61480a565b610132549091506000906128229089906001600160a01b0316858585613439565b9050816001600160a01b03888116908516146128b05760008890506128ac81826001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561287f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a39190614617565b87876001613439565b9150505b6040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa1580156128f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291b9190614685565b9050871580612928575080155b80612931575082155b8061293a575081155b156129635760405180604001604052806000815260200160008152509650505050505050610c2c565b60408051808201909152818152600090602081016129848486886001613b0a565b9052905060008713156129d7576129cd6129a06008600a61480a565b6129a989613b67565b6129b56008600a61480a565b6129bf9190614819565b602084015191906001613b0a565b6020820152612a14565b6000871215612a1457612a0e6129ef6008600a61480a565b6129f889613bbd565b612a046008600a61480a565b6129bf91906146f0565b60208201525b8881602001511115612aa95760208101899052612a32898585613bd0565b81526000871315612a7b57612a74612a4988613bbd565b612a556008600a61480a565b612a5f9190614819565b612a6b6008600a61480a565b83519190613bd0565b8152612aa9565b6000871215612aa957612aa6612a9088613bbd565b612a9c6008600a61480a565b612a5f91906146f0565b81525b9a9950505050505050505050565b6000612ace6001600160a01b038416333085613cc2565b610c2c836121db565b6000612ace6001600160a01b0384163384613776565b6097546001600160a01b03163314610c0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611658565b6040516313612cb160e11b8152600060048201819052906001600160a01b038316906326c25962906024016040805180830381865afa158015612b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612337919061482c565b600080612bbf6000611e5e565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015612c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2d9190614685565b90506000612c3c61013a612152565b905060015b8160ff168160ff161015612d1b576000612c5d8260ff16611e5e565b90506000816001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc39190614617565b6040516370a0823160e01b8152306004820152909150612cfc908390839089906001600160a01b038416906370a0823190602401611568565b612d0690866146f0565b9450505080612d14906146d1565b9050612c41565b50909392505050565b6040516313612cb160e11b8152600060048201819052906001600160a01b038316906326c25962906024016040805180830381865afa158015612d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c919061482c565b600061013354612e08836001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfa9190614617565b6001600160a01b031661215c565b111592915050565b612e18613cfa565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216612ec25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611658565b6001600160a01b03821660009081526033602052604090205481811015612f365760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611658565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600061087761013a83613d4c565b610132546000906001600160a01b03808416916121429116612b47565b610132546000908190612fea9085906001600160a01b0316612fe284611e5e565b866000613439565b61013d549091506000906001600160a01b031633146130805761012e60009054906101000a90046001600160a01b03166001600160a01b0316630a98b70d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307b9190614685565b613083565b60005b9050600061309060355490565b90508281156130b0576130ad826130a5612bb2565b839190613bd0565b90505b82156130df576130dc836130c66008600a61480a565b6130d09190614819565b6130a56008600a61480a565b90505b9695505050505050565b6001600160a01b03821661313f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611658565b806035600082825461315191906146f0565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006131b560355490565b9050610136548111156131db5760405163fb88d21560e01b815260040160405180910390fd5b60006131e76000611e5e565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132559190614685565b905080600061326561013a612152565b905060015b8160ff168160ff1610156133755760006132868260ff16611e5e565b9050600061331e82836001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f09190614617565b6040516370a0823160e01b81523060048201528a906001600160a01b038716906370a0823190602401611568565b9050886001600160a01b0316826001600160a01b03161480613344575061334482612d8f565b156133565761335381866146f0565b94505b61336081876146f0565b955050508061336e906146d1565b905061326a565b5060006133916133876008600a61480a565b8490866001613b0a565b9050610137548111156133b757604051630381ed1760e31b815260040160405180910390fd5b50505050505050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061341e6000611e5e565b6001600160a01b0316826001600160a01b0316149050919050565b6040516370a0823160e01b81526001600160a01b03858116600483015260009182918616906370a0823190602401602060405180830381865afa158015613484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a89190614685565b90506000876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350e9190614685565b9050600061351c8284613d6e565b90506000821161352c5785613538565b61353881878488613b0a565b9998505050505050505050565b600054610100900460ff1661359e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b6117ed8282613d84565b600054610100900460ff16610c0b5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b600054610100900460ff1661365a5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b610c0b613df6565b600054610100900460ff166136bb5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b610c0b613e58565b600054610100900460ff1661371c5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b610c0b613ebd565b6000610c2c836001600160a01b038416613f16565b613741612582565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e453390565b6040516001600160a01b038316602482015260448101829052611a0790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152613f65565b606060006137fb60355490565b61013d549091506000906001600160a01b031633146138915761012e60009054906101000a90046001600160a01b03166001600160a01b031663ca9cbcbe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388c9190614685565b613894565b60005b905060006138a361013a612152565b905060008160ff1667ffffffffffffffff8111156138c3576138c361440b565b60405190808252806020026020018201604052801561390857816020015b60408051808201909152600080825260208201528152602001906001900390816138e15790505b50905060005b8260ff168160ff161015613a6a57600061392a8260ff16611e5e565b6040805180820182526001600160a01b03831680825291516370a0823160e01b81523060048201529293509160208301916139b4918c918b916370a0823190602401602060405180830381865afa158015613989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ad9190614685565b9190613bd0565b815250838360ff16815181106139cc576139cc6146bb565b60209081029190910101528415613a5957613a33856139ed6008600a61480a565b6139f79190614819565b613a036008600a61480a565b858560ff1681518110613a1857613a186146bb565b602002602001015160200151613bd09092919063ffffffff16565b838360ff1681518110613a4857613a486146bb565b602002602001015160200181815250505b50613a63816146d1565b905061390e565b5095945050505050565b6000610c2c838361404d565b6040516313612cb160e11b815260ff821660048201526000906001600160a01b038416906326c25962906024016040805180830381865afa158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed919061482c565b509392505050565b6000610c2c836001600160a01b038416614077565b600080613b18868686613bd0565b90506001836002811115613b2e57613b2e61485a565b148015613b4b575060008480613b4657613b46614870565b868809115b15613b5e57613b5b6001826146f0565b90505b95945050505050565b600080821215613bb95760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611658565b5090565b600080821215613bb95781600003610877565b6000808060001985870985870292508281108382030391505080600003613c0a57838281613c0057613c00614870565b0492505050610c2c565b808411613c595760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401611658565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040516001600160a01b03808516602483015283166044820152606481018290526123d19085906323b872dd60e01b906084016137a2565b60c95460ff16610c0b5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611658565b6001600160a01b03811660009081526001830160205260408120541515610c2c565b6000818310613d7d5781610c2c565b5090919050565b600054610100900460ff16613ddd5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b6036613de983826148cc565b506037611a0782826148cc565b600054610100900460ff16613e4f5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b610c0b336133c0565b600054610100900460ff16613eb15760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b60c9805460ff19169055565b600054610100900460ff1661233e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149bf83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401611658565b6000818152600183016020526040812054613f5d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561085e565b50600061085e565b6000613fba826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661416a9092919063ffffffff16565b9050805160001480613fdb575080806020019051810190613fdb9190614663565b611a075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611658565b6000826000018281548110614064576140646146bb565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561416057600061409b600183614819565b85549091506000906140af90600190614819565b90508181146141145760008660000182815481106140cf576140cf6146bb565b90600052602060002001549050808760000184815481106140f2576140f26146bb565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806141255761412561498c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061085e565b600091505061085e565b6060611347848460008585600080866001600160a01b0316858760405161419191906149a2565b60006040518083038185875af1925050503d80600081146141ce576040519150601f19603f3d011682016040523d82523d6000602084013e6141d3565b606091505b50915091506141e4878383876141ef565b979650505050505050565b6060831561425e578251600003614257576001600160a01b0385163b6142575760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611658565b5081611347565b61134783838151156142735781518083602001fd5b8060405162461bcd60e51b815260040161165891906142b1565b60005b838110156142a8578181015183820152602001614290565b50506000910152565b60208152600082518060208401526142d081604085016020870161428d565b601f01601f19169190910160400192915050565b6001600160a01b03811681146111db57600080fd5b6000806040838503121561430c57600080fd5b8235614317816142e4565b946020939093013593505050565b60006020828403121561433757600080fd5b5035919050565b60008060006060848603121561435357600080fd5b833561435e816142e4565b9250602084013561436e816142e4565b929592945050506040919091013590565b6000806040838503121561439257600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156143e25783516001600160a01b0316835292840192918401916001016143bd565b50909695505050505050565b60006020828403121561440057600080fd5b8135610c2c816142e4565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261443257600080fd5b813567ffffffffffffffff8082111561444d5761444d61440b565b604051601f8301601f19908116603f011681019082821181831017156144755761447561440b565b8160405283815286602085880101111561448e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156144c657600080fd5b853567ffffffffffffffff808211156144de57600080fd5b6144ea89838a01614421565b9650602088013591508082111561450057600080fd5b5061450d88828901614421565b945050604086013561451e816142e4565b9250606086013561452e816142e4565b9150608086013561453e816142e4565b809150509295509295909350565b602080825282518282018190526000919060409081850190868401855b8281101561459757815180516001600160a01b03168552860151868501529284019290850190600101614569565b5091979650505050505050565b600080604083850312156145b757600080fd5b82356145c2816142e4565b915060208301356145d2816142e4565b809150509250929050565b600181811c908216806145f157607f821691505b60208210810361461157634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561462957600080fd5b8151610c2c816142e4565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561085e5761085e614634565b60006020828403121561467557600080fd5b81518015158114610c2c57600080fd5b60006020828403121561469757600080fd5b5051919050565b600060ff8216806146b1576146b1614634565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036146e7576146e7614634565b60010192915050565b8082018082111561085e5761085e614634565b60006020828403121561471557600080fd5b815160ff81168114610c2c57600080fd5b600181815b8085111561476157816000190482111561474757614747614634565b8085161561475457918102915b93841c939080029061472b565b509250929050565b6000826147785750600161085e565b816147855750600061085e565b816001811461479b57600281146147a5576147c1565b600191505061085e565b60ff8411156147b6576147b6614634565b50506001821b61085e565b5060208310610133831016604e8410600b84101617156147e4575081810a61085e565b6147ee8383614726565b806000190482111561480257614802614634565b029392505050565b6000610c2c60ff841683614769565b8181038181111561085e5761085e614634565b6000806040838503121561483f57600080fd5b825161484a816142e4565b6020939093015192949293505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b601f821115611a0757600081815260208120601f850160051c810160208610156148ad5750805b601f850160051c820191505b818110156117d0578281556001016148b9565b815167ffffffffffffffff8111156148e6576148e661440b565b6148fa816148f484546145dd565b84614886565b602080601f83116001811461492f57600084156149175750858301515b600019600386901b1c1916600185901b1785556117d0565b600085815260208120601f198616915b8281101561495e5788860151825594840194600190910190840161493f565b508582101561497c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b600082516149b481846020870161428d565b919091019291505056fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220019c9a2bbc687c80ec09fc6c20261660a471ee3a70c37457a3f64370378c211364736f6c63430008140033