0 txs
0 calls
constructor
constructor()
functions
accrualBlockNumber
viewfunction accrualBlockNumber() view returns (uint256)
admin
viewfunction admin() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
borrowBalanceStored
viewfunction borrowBalanceStored(address account) view returns (uint256)
borrowIndex
viewfunction borrowIndex() view returns (uint256)
borrowRatePerBlock
viewfunction borrowRatePerBlock() view returns (uint256)
comptroller
viewfunction comptroller() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
exchangeRateStored
viewfunction exchangeRateStored() view returns (uint256)
getAccountSnapshot
viewfunction getAccountSnapshot(address account) view returns (uint256, uint256, uint256, uint256)
getCash
viewfunction getCash() view returns (uint256)
implementation
viewfunction implementation() view returns (address)
interestRateModel
viewfunction interestRateModel() view returns (address)
isCToken
viewfunction isCToken() view returns (bool)
name
viewfunction name() view returns (string)
NO_ERROR
viewfunction NO_ERROR() view returns (uint256)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
protocolSeizeShareMantissa
viewfunction protocolSeizeShareMantissa() view returns (uint256)
reserveFactorMantissa
viewfunction reserveFactorMantissa() view returns (uint256)
supplyRatePerBlock
viewfunction supplyRatePerBlock() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalBorrows
viewfunction totalBorrows() view returns (uint256)
totalReserves
viewfunction totalReserves() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
whitelist
viewfunction whitelist() view returns (address)
_acceptAdmin
nonpayablefunction _acceptAdmin() returns (uint256)
_addReserves
nonpayablefunction _addReserves(uint256 addAmount) returns (uint256)
_becomeImplementation
nonpayablefunction _becomeImplementation(bytes data)
_delegateCompLikeTo
nonpayablefunction _delegateCompLikeTo(address compLikeDelegatee)
_reduceReserves
nonpayablefunction _reduceReserves(uint256 reduceAmount) returns (uint256)
_resignImplementation
nonpayablefunction _resignImplementation()
_setComptroller
nonpayablefunction _setComptroller(address newComptroller) returns (uint256)
_setInterestRateModel
nonpayablefunction _setInterestRateModel(address newInterestRateModel) returns (uint256)
_setPendingAdmin
nonpayablefunction _setPendingAdmin(address newPendingAdmin) returns (uint256)
_setReserveFactor
nonpayablefunction _setReserveFactor(uint256 newReserveFactorMantissa) returns (uint256)
_setWhitelist
nonpayablefunction _setWhitelist(address newWhitelist) returns (uint256)
accrueInterest
nonpayablefunction accrueInterest() returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
balanceOfUnderlying
nonpayablefunction balanceOfUnderlying(address owner) returns (uint256)
borrow
nonpayablefunction borrow(uint256 borrowAmount) returns (uint256)
borrowBalanceCurrent
nonpayablefunction borrowBalanceCurrent(address account) returns (uint256)
exchangeRateCurrent
nonpayablefunction exchangeRateCurrent() returns (uint256)
initialize
nonpayablefunction initialize(address comptroller_, address interestRateModel_, uint256 initialExchangeRateMantissa_, string name_, string symbol_, uint8 decimals_)
initialize
nonpayablefunction initialize(address underlying_, address comptroller_, address interestRateModel_, uint256 initialExchangeRateMantissa_, string name_, string symbol_, uint8 decimals_)
liquidateBorrow
nonpayablefunction liquidateBorrow(address borrower, uint256 repayAmount, address cTokenCollateral) returns (uint256)
mint
nonpayablefunction mint(uint256 mintAmount) returns (uint256)
redeem
nonpayablefunction redeem(uint256 redeemTokens) returns (uint256)
redeemUnderlying
nonpayablefunction redeemUnderlying(uint256 redeemAmount) returns (uint256)
repayBorrow
nonpayablefunction repayBorrow(uint256 repayAmount) returns (uint256)
repayBorrowBehalf
nonpayablefunction repayBorrowBehalf(address borrower, uint256 repayAmount) returns (uint256)
seize
nonpayablefunction seize(address liquidator, address borrower, uint256 seizeTokens) returns (uint256)
sweepToken
nonpayablefunction sweepToken(address token)
totalBorrowsCurrent
nonpayablefunction totalBorrowsCurrent() returns (uint256)
transfer
nonpayablefunction transfer(address dst, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address src, address dst, uint256 amount) returns (bool)
events
AccrueInterest
event AccrueInterest(uint256 cashPrior, uint256 interestAccumulated, uint256 borrowIndex, uint256 totalBorrows)
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
Borrow
event Borrow(address borrower, uint256 borrowAmount, uint256 accountBorrows, uint256 totalBorrows)
LiquidateBorrow
event LiquidateBorrow(address liquidator, address borrower, uint256 repayAmount, address cTokenCollateral, uint256 seizeTokens)
Mint
event Mint(address minter, uint256 mintAmount, uint256 mintTokens)
NewAdmin
event NewAdmin(address oldAdmin, address newAdmin)
NewComptroller
event NewComptroller(address oldComptroller, address newComptroller)
NewMarketInterestRateModel
event NewMarketInterestRateModel(address oldInterestRateModel, address newInterestRateModel)
NewPendingAdmin
event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)
NewReserveFactor
event NewReserveFactor(uint256 oldReserveFactorMantissa, uint256 newReserveFactorMantissa)
NewWhitelist
event NewWhitelist(address oldWhitelist, address newWhitelist)
Redeem
event Redeem(address redeemer, uint256 redeemAmount, uint256 redeemTokens)
RepayBorrow
event RepayBorrow(address payer, address borrower, uint256 repayAmount, uint256 accountBorrows, uint256 totalBorrows)
ReservesAdded
event ReservesAdded(address benefactor, uint256 addAmount, uint256 newTotalReserves)
ReservesReduced
event ReservesReduced(address admin, uint256 reduceAmount, uint256 newTotalReserves)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
errors
AcceptAdminPendingAdminCheck
error AcceptAdminPendingAdminCheck()
AddReservesFactorFreshCheck
error AddReservesFactorFreshCheck(uint256 actualAddAmount)
BorrowCashNotAvailable
error BorrowCashNotAvailable()
BorrowComptrollerRejection
error BorrowComptrollerRejection(uint256 errorCode)
BorrowFreshnessCheck
error BorrowFreshnessCheck()
LiquidateAccrueBorrowInterestFailed
error LiquidateAccrueBorrowInterestFailed(uint256 errorCode)
LiquidateAccrueCollateralInterestFailed
error LiquidateAccrueCollateralInterestFailed(uint256 errorCode)
LiquidateCloseAmountIsUintMax
error LiquidateCloseAmountIsUintMax()
LiquidateCloseAmountIsZero
error LiquidateCloseAmountIsZero()
LiquidateCollateralFreshnessCheck
error LiquidateCollateralFreshnessCheck()
LiquidateComptrollerRejection
error LiquidateComptrollerRejection(uint256 errorCode)
LiquidateFreshnessCheck
error LiquidateFreshnessCheck()
LiquidateLiquidatorIsBorrower
error LiquidateLiquidatorIsBorrower()
LiquidateRepayBorrowFreshFailed
error LiquidateRepayBorrowFreshFailed(uint256 errorCode)
LiquidateSeizeComptrollerRejection
error LiquidateSeizeComptrollerRejection(uint256 errorCode)
LiquidateSeizeLiquidatorIsBorrower
error LiquidateSeizeLiquidatorIsBorrower()
MintComptrollerRejection
error MintComptrollerRejection(uint256 errorCode)
MintFreshnessCheck
error MintFreshnessCheck()
RedeemComptrollerRejection
error RedeemComptrollerRejection(uint256 errorCode)
RedeemFreshnessCheck
error RedeemFreshnessCheck()
RedeemTransferOutNotPossible
error RedeemTransferOutNotPossible()
ReduceReservesAdminCheck
error ReduceReservesAdminCheck()
ReduceReservesCashNotAvailable
error ReduceReservesCashNotAvailable()
ReduceReservesCashValidation
error ReduceReservesCashValidation()
ReduceReservesFreshCheck
error ReduceReservesFreshCheck()
RepayBorrowComptrollerRejection
error RepayBorrowComptrollerRejection(uint256 errorCode)
RepayBorrowFreshnessCheck
error RepayBorrowFreshnessCheck()
SetComptrollerOwnerCheck
error SetComptrollerOwnerCheck()
SetInterestRateModelFreshCheck
error SetInterestRateModelFreshCheck()
SetInterestRateModelOwnerCheck
error SetInterestRateModelOwnerCheck()
SetPendingAdminOwnerCheck
error SetPendingAdminOwnerCheck()
SetReserveFactorAdminCheck
error SetReserveFactorAdminCheck()
SetReserveFactorBoundsCheck
error SetReserveFactorBoundsCheck()
SetReserveFactorFreshCheck
error SetReserveFactorFreshCheck()
SetWhitelistAdminOwnerCheck
error SetWhitelistAdminOwnerCheck()
TransferComptrollerRejection
error TransferComptrollerRejection(uint256 errorCode)
TransferNotAllowed
error TransferNotAllowed()
TransferNotEnough
error TransferNotEnough()
TransferTooMuch
error TransferTooMuch()
creation bytecode
0x608060405234801561001057600080fd5b50613dfe806100206000396000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c806373acee98116101de578063b71d1a0c1161010f578063f2b3abbd116100ad578063f8f9da281161007c578063f8f9da2814610778578063fca7820b14610780578063fe881bda14610793578063fe9c44ae146107a657600080fd5b8063f2b3abbd14610727578063f3fdb15a1461073a578063f5e3c4621461074d578063f851a4401461076057600080fd5b8063c5ebeaec116100e9578063c5ebeaec146106c0578063db006a75146106d3578063dd62ed3e146106e6578063e9c714f21461071f57600080fd5b8063b71d1a0c14610672578063bd6d894d14610685578063c37f68e21461068d57600080fd5b806399d8c1b41161017c578063a9059cbb11610156578063a9059cbb1461063b578063aa5af0fd1461064e578063ae9d70b014610657578063b2a02ff11461065f57600080fd5b806399d8c1b41461060d578063a0712d6814610620578063a6afed951461063357600080fd5b80638f840ddd116101b85780638f840ddd146105d657806393e59dc1146105df57806395d89b41146105f257806395dd9193146105fa57600080fd5b806373acee98146105a85780637f1e06be146105b0578063852a12e3146105c357600080fd5b80633af9e669116102b85780635fe3b5671161025657806369ab32501161023057806369ab32501461055b5780636c540baf146105635780636f307dc31461056c57806370a082311461057f57600080fd5b80635fe3b56714610527578063601a0bf11461053a5780636752e7021461054d57600080fd5b80634576b5db116102925780634576b5db146104e557806347bd3718146104f857806356e67728146105015780635c60da1b1461051457600080fd5b80633af9e669146104b75780633b1d21a2146104ca5780633e941010146104d257600080fd5b8063182df0f51161032557806323b872dd116102ff57806323b872dd146104475780632608f8181461045a578063267822471461046d578063313ce5671461049857600080fd5b8063182df0f5146104195780631a31d465146104215780631be195601461043457600080fd5b8063153ab50511610361578063153ab505146103ea578063173b9904146103f457806317bfdfbc146103fd57806318160ddd1461041057600080fd5b806306fdde0314610388578063095ea7b3146103a65780630e752702146103c9575b600080fd5b6103906107ae565b60405161039d91906137fd565b60405180910390f35b6103b96103b4366004613867565b61083c565b604051901515815260200161039d565b6103dc6103d7366004613893565b6108aa565b60405190815260200161039d565b6103f26108bd565b005b6103dc60085481565b6103dc61040b3660046138ac565b610939565b6103dc600d5481565b6103dc61098c565b6103f261042f36600461398b565b61099b565b6103f26104423660046138ac565b610a30565b6103b9610455366004613a41565b610bfc565b6103dc610468366004613867565b610c4c565b600454610480906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b6003546104a59060ff1681565b60405160ff909116815260200161039d565b6103dc6104c53660046138ac565b610c61565b6103dc610ca7565b6103dc6104e0366004613893565b610cb1565b6103dc6104f33660046138ac565b610cc2565b6103dc600b5481565b6103f261050f366004613a82565b610de4565b601354610480906001600160a01b031681565b600554610480906001600160a01b031681565b6103dc610548366004613893565b610e5c565b6103dc666379da05b6000081565b6103dc600081565b6103dc60095481565b601254610480906001600160a01b031681565b6103dc61058d3660046138ac565b6001600160a01b03166000908152600e602052604090205490565b6103dc610e9b565b6103f26105be3660046138ac565b610ee5565b6103dc6105d1366004613893565b610fbc565b6103dc600c5481565b601154610480906001600160a01b031681565b610390610fc7565b6103dc6106083660046138ac565b610fd4565b6103f261061b366004613acb565b610fdf565b6103dc61062e366004613893565b61123a565b6103dc611245565b6103b9610649366004613867565b611433565b6103dc600a5481565b6103dc611482565b6103dc61066d366004613a41565b61151a565b6103dc6106803660046138ac565b611569565b6103dc6115f6565b6106a061069b3660046138ac565b611646565b60408051948552602085019390935291830152606082015260800161039d565b6103dc6106ce366004613893565b611687565b6103dc6106e1366004613893565b611692565b6103dc6106f4366004613b6d565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b6103dc61169d565b6103dc6107353660046138ac565b6117a4565b600654610480906001600160a01b031681565b6103dc61075b366004613ba6565b6117b8565b6003546104809061010090046001600160a01b031681565b6103dc6117cf565b6103dc61078e366004613893565b611822565b6103dc6107a13660046138ac565b611861565b6103b9600181565b600180546107bb90613be8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e790613be8565b80156108345780601f1061080957610100808354040283529160200191610834565b820191906000526020600020905b81548152906001019060200180831161081757829003601f168201915b505050505081565b336000818152600f602090815260408083206001600160a01b03871680855292528083208590555191929182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108989087815260200190565b60405180910390a35060019392505050565b60006108b582611978565b506000919050565b60035461010090046001600160a01b031633146109375760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79207468652061646d696e206d61792063616c6c205f72657369676e4960448201526c36b83632b6b2b73a30ba34b7b760991b60648201526084015b60405180910390fd5b565b6000805460ff1661095c5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff1916905561096e611245565b5061097882610fd4565b90506000805460ff19166001179055919050565b60006109966119c9565b905090565b6109a9868686868686610fdf565b601280546001600160a01b0319166001600160a01b038916908117909155604080516318160ddd60e01b815290516318160ddd916004808201926020929091908290030181865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190613c47565b5050505050505050565b60035461010090046001600160a01b03163314610aa75760405162461bcd60e51b815260206004820152602f60248201527f4345726332303a3a7377656570546f6b656e3a206f6e6c792061646d696e206360448201526e616e20737765657020746f6b656e7360881b606482015260840161092e565b6012546001600160a01b0382811691161415610b205760405162461bcd60e51b815260206004820152603260248201527f4345726332303a3a7377656570546f6b656e3a2063616e206e6f74207377656560448201527138103ab73232b9363cb4b733903a37b5b2b760711b606482015260840161092e565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613c47565b60035460405163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810183905291925083169063a9059cbb90604401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505050565b6000805460ff16610c1f5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19168155610c3533868686611a33565b1490506000805460ff191660011790559392505050565b6000610c588383611c61565b50600092915050565b6000806040518060200160405280610c776115f6565b90526001600160a01b0384166000908152600e6020526040902054909150610ca0908290611cb3565b9392505050565b6000610996611cd3565b6000610cbc82611d48565b92915050565b60035460009061010090046001600160a01b03163314610cf55760405163d219dc1f60e01b815260040160405180910390fd5b60055460408051623f1ee960e11b815290516001600160a01b0392831692851691627e3dd29160048083019260209291908290030181865afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190613c60565b610d7f5760405162461bcd60e51b815260040161092e90613c82565b600580546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d91015b60405180910390a150600092915050565b60035461010090046001600160a01b03163314610e595760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79207468652061646d696e206d61792063616c6c205f6265636f6d654960448201526c36b83632b6b2b73a30ba34b7b760991b606482015260840161092e565b50565b6000805460ff16610e7f5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055610e91611245565b5061097882611d9f565b6000805460ff16610ebe5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055610ed0611245565b5050600b546000805460ff1916600117905590565b60035461010090046001600160a01b03163314610f5a5760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79207468652061646d696e206d6179207365742074686520636f6d702d60448201526c6c696b652064656c656761746560981b606482015260840161092e565b6012546040516317066a5760e21b81526001600160a01b03838116600483015290911690635c19a95c90602401600060405180830381600087803b158015610fa157600080fd5b505af1158015610fb5573d6000803e3d6000fd5b5050505050565b60006108b582611eba565b600280546107bb90613be8565b6000610cbc82611f0b565b60035461010090046001600160a01b0316331461104a5760405162461bcd60e51b8152602060048201526024808201527f6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d616044820152631c9ad95d60e21b606482015260840161092e565b60095415801561105a5750600a54155b6110b25760405162461bcd60e51b815260206004820152602360248201527f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6044820152626e636560e81b606482015260840161092e565b60078490558361111d5760405162461bcd60e51b815260206004820152603060248201527f696e697469616c2065786368616e67652072617465206d75737420626520677260448201526f32b0ba32b9103a3430b7103d32b9379760811b606482015260840161092e565b600061112887610cc2565b905080156111785760405162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015260640161092e565b43600955670de0b6b3a7640000600a5561119186611f55565b905080156111ec5760405162461bcd60e51b815260206004820152602260248201527f73657474696e6720696e7465726573742072617465206d6f64656c206661696c604482015261195960f21b606482015260840161092e565b83516111ff90600190602087019061376d565b50825161121390600290602086019061376d565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b60006108b58261209a565b60095460009043908082141561125e5760009250505090565b6000611268611cd3565b600b54600c54600a546006546040516315f2405360e01b81526004810186905260248101859052604481018490529495509293919290916000916001600160a01b0316906315f2405390606401602060405180830381865afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f69190613c47565b905065048c2739500081111561134e5760405162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015260640161092e565b600061135a8789613ccf565b9050600061137660405180602001604052808581525083612226565b905060006113848288611cb3565b905060006113928883613ce6565b905060006113b16040518060200160405280600854815250848a612257565b905060006113c085898a612257565b60098e9055600a819055600b849055600c839055604080518d815260208101879052908101829052606081018590529091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049060800160405180910390a160009d505050505050505050505050505090565b6000805460ff166114565760405162461bcd60e51b815260040161092e90613c23565b6000805460ff1916815561146c33808686611a33565b1490506000805460ff1916600117905592915050565b6006546000906001600160a01b031663b816881661149e611cd3565b600b54600c546008546040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526084015b602060405180830381865afa1580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190613c47565b6000805460ff1661153d5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff1916905561155333858585612278565b50600080805460ff191660011790559392505050565b60035460009061010090046001600160a01b0316331461159c57604051635cb56c2b60e01b815260040160405180910390fd5b600480546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101610dd3565b6000805460ff166116195760405162461bcd60e51b815260040161092e90613c23565b6000805460ff1916905561162b611245565b5061163461098c565b90506000805460ff1916600117905590565b6001600160a01b0381166000908152600e6020526040812054819081908190819061167087611f0b565b6116786119c9565b93509350935093509193509193565b60006108b5826124f1565b60006108b582612530565b6004546000906001600160a01b0316331415806116b8575033155b156116d657604051631ba24f2960e21b815260040160405180910390fd5b60038054600480546001600160a01b03808216610100818102610100600160a81b0319871617968790556001600160a01b031990931690935560408051948390048216808652929095041660208401529290917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600454604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9910160405180910390a160009250505090565b60006117ae611245565b50610cbc82611f55565b60006117c5848484612571565b5060009392505050565b6006546000906001600160a01b03166315f240536117eb611cd3565b600b54600c546040516001600160e01b031960e086901b1681526004810193909352602483019190915260448201526064016114d9565b6000805460ff166118455760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055611857611245565b506109788261264f565b60035460009061010090046001600160a01b031633146118945760405163231279eb60e21b815260040160405180910390fd5b6011546040805163b93eedff60e01b815290516001600160a01b039283169285169163b93eedff9160048083019260209291908290030181865afa1580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119049190613c60565b6119205760405162461bcd60e51b815260040161092e90613c82565b601180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f74dd9d466f35e6d6ff9fa8b6ba203f926982ab037ba5d8e8457a0a9516e27e149101610dd3565b60005460ff1661199a5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff191690556119ac611245565b506119b833338361270b565b50506000805460ff19166001179055565b600d54600090806119dc57505060075490565b60006119e6611cd3565b90506000600c54600b54836119fb9190613ce6565b611a059190613ccf565b9050600083611a1c670de0b6b3a764000084613cfe565b611a269190613d1d565b95945050505050565b5090565b6005546040516317b9b84b60e31b81523060048201526001600160a01b038581166024830152848116604483015260648201849052600092839291169063bdcdc258906084016020604051808303816000875af1158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc9190613c47565b90508015611ae05760405163089d427760e11b81526004810182905260240161092e565b836001600160a01b0316856001600160a01b03161415611b1357604051638cd22d1960e01b815260040160405180910390fd5b6000856001600160a01b0316876001600160a01b03161415611b385750600019611b60565b506001600160a01b038086166000908152600f60209081526040808320938a16835292905220545b6000611b6c8583613ccf565b6001600160a01b0388166000908152600e602052604081205491925090611b94908790613ccf565b6001600160a01b0388166000908152600e602052604081205491925090611bbc908890613ce6565b6001600160a01b03808b166000908152600e6020526040808220869055918b1681522081905590506000198414611c16576001600160a01b03808a166000908152600f60209081526040808320938e168352929052208390555b876001600160a01b0316896001600160a01b0316600080516020613da983398151915289604051611c4991815260200190565b60405180910390a35060009998505050505050505050565b60005460ff16611c835760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055611c95611245565b50611ca133838361270b565b50506000805460ff1916600117905550565b600080611cc08484612226565b9050611ccb816128b4565b949350505050565b6012546040516370a0823160e01b81523060048201526000916001600160a01b03169081906370a0823190602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d429190613c47565b91505090565b6000805460ff16611d6b5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055611d7d611245565b50611d87826128cc565b5050600090506000805460ff19166001179055919050565b600354600090819061010090046001600160a01b03163314611dd457604051630f7e5e6d60e41b815260040160405180910390fd5b4360095414611df657604051630dff50cb60e41b815260040160405180910390fd5b82611dff611cd3565b1015611e1e57604051633345e99960e01b815260040160405180910390fd5b600c54831115611e41576040516378d2980560e11b815260040160405180910390fd5b82600c54611e4f9190613ccf565b600c819055600354909150611e729061010090046001600160a01b031684612960565b7f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e600360019054906101000a90046001600160a01b03168483604051610dd393929190613d3f565b60005460ff16611edc5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055611eee611245565b50611efb33600083612a4a565b506000805460ff19166001179055565b6001600160a01b03811660009081526010602052604081208054611f325750600092915050565b600a548154600091611f4391613cfe565b9050816001015481611ccb9190613d1d565b600354600090819061010090046001600160a01b03163314611f8a5760405163407fded560e01b815260040160405180910390fd5b4360095414611fac57604051630be2a5cb60e11b815260040160405180910390fd5b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120269190613c60565b6120425760405162461bcd60e51b815260040161092e90613c82565b600680546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269101610dd3565b60005460ff166120bc5760405162461bcd60e51b815260040161092e90613c23565b6000805460ff1916905560115433906001600160a01b0316158015906121545750601160009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190613c60565b1561221357601154604051633af32abf60e01b81526001600160a01b03838116600483015290911690633af32abf90602401602060405180830381865afa1580156121a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c79190613c60565b6122135760405162461bcd60e51b815260206004820181905260248201527f57686974656c6973744163636573733a206e6f742077686974656c6973746564604482015260640161092e565b61221b611245565b506119b83383612d27565b604080516020810190915260008152604051806020016040528061224e856000015185612edd565b90529392505050565b6000806122648585612226565b9050611a26612272826128b4565b84612ee9565b60055460405163d02f735160e01b81523060048201526001600160a01b0386811660248301528581166044830152848116606483015260848201849052600092169063d02f73519060a4016020604051808303816000875af11580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190613c47565b9050801561232a576040516363e00e3360e11b81526004810182905260240161092e565b836001600160a01b0316836001600160a01b0316141561235d57604051633a94626760e11b815260040160405180910390fd5b600061237e836040518060200160405280666379da05b60000815250612ef5565b9050600061238c8285613ccf565b9050600060405180602001604052806123a36119c9565b9052905060006123b38285611cb3565b9050600081600c546123c59190613ce6565b600c819055600d549091506123db908690613ccf565b600d556001600160a01b0388166000908152600e6020526040902054612402908890613ccf565b6001600160a01b03808a166000908152600e602052604080822093909355908b1681522054612432908590613ce6565b6001600160a01b03808b166000818152600e602052604090819020939093559151908a1690600080516020613da9833981519152906124749088815260200190565b60405180910390a360405185815230906001600160a01b038a1690600080516020613da98339815191529060200160405180910390a37fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc53083836040516124dd93929190613d3f565b60405180910390a150505050505050505050565b60005460ff166125135760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055612525611245565b50611efb3382612f18565b60005460ff166125525760405162461bcd60e51b815260040161092e90613c23565b6000805460ff19169055612564611245565b50611efb33826000612a4a565b60005460ff166125935760405162461bcd60e51b815260040161092e90613c23565b6000805460ff191690556125a5611245565b506000816001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190613c47565b9050801561263057604051633eea49b760e11b81526004810182905260240161092e565b61263c338585856130b7565b50506000805460ff191660011790555050565b60035460009061010090046001600160a01b0316331461268257604051631205b57b60e11b815260040160405180910390fd5b43600954146126a457604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008211156126cd5760405163717220f360e11b815260040160405180910390fd5b600880549083905560408051828152602081018590527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f8214609101610dd3565b600554604051631200453160e11b81523060048201526001600160a01b03858116602483015284811660448301526064820184905260009283929116906324008a62906084016020604051808303816000875af1158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190613c47565b905080156127b857604051638c81362d60e01b81526004810182905260240161092e565b43600954146127da5760405163c9021e2f60e01b815260040160405180910390fd5b60006127e585611f0b565b9050600060001985146127f857846127fa565b815b905060006128088883613571565b905060006128168285613ccf565b9050600082600b546128289190613ccf565b6001600160a01b038a8116600081815260106020908152604091829020878155600a54600190910155600b8590558151938f168452830191909152810185905260608101849052608081018290529091507f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a19060a00160405180910390a1509098975050505050505050565b8051600090610cbc90670de0b6b3a764000090613d1d565b600080808043600954146128f6576040516338acf79960e01b81526004810182905260240161092e565b6129003386613571565b905080600c546129109190613ce6565b915081600c819055507fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc533828460405161294c93929190613d3f565b60405180910390a160009590945092505050565b60125460405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905290911690819063a9059cbb90604401600060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b5050505060003d600081146129e057602081146129ea57600080fd5b60001991506129f6565b60206000803e60005191505b5080612a445760405162461bcd60e51b815260206004820152601960248201527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000604482015260640161092e565b50505050565b811580612a55575080155b612abe5760405162461bcd60e51b815260206004820152603460248201527f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416044820152736d6f756e74496e206d757374206265207a65726f60601b606482015260840161092e565b60006040518060200160405280612ad36119c9565b905290506000808415612af457849150612aed8386611cb3565b9050612b04565b612afe8484613748565b91508390505b60055460405163eabe7d9160e01b81526000916001600160a01b03169063eabe7d9190612b399030908b908890600401613d60565b6020604051808303816000875af1158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c9190613c47565b90508015612ba05760405163480f424760e01b81526004810182905260240161092e565b4360095414612bc2576040516397b5cfcd60e01b815260040160405180910390fd5b81612bcb611cd3565b1015612bea576040516391240a1b60e01b815260040160405180910390fd5b82600d54612bf89190613ccf565b600d556001600160a01b0387166000908152600e6020526040902054612c1f908490613ccf565b6001600160a01b0388166000908152600e6020526040902055612c428783612960565b60405183815230906001600160a01b03891690600080516020613da98339815191529060200160405180910390a37fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929878385604051612ca393929190613d3f565b60405180910390a16005546040516351dff98960e01b81523060048201526001600160a01b0389811660248301526044820185905260648201869052909116906351dff98990608401600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b5050505050505050505050565b600554604051634ef4c3e160e01b81526000916001600160a01b031690634ef4c3e190612d5c90309087908790600401613d60565b6020604051808303816000875af1158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613c47565b90508015612dc3576040516349abd4fd60e01b81526004810182905260240161092e565b4360095414612de5576040516338d8859760e01b815260040160405180910390fd5b60006040518060200160405280612dfa6119c9565b905290506000612e0a8585613571565b90506000612e188284613748565b905080600d54612e289190613ce6565b600d556001600160a01b0386166000908152600e6020526040902054612e4f908290613ce6565b6001600160a01b0387166000908152600e60205260409081902091909155517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f90612e9f90889085908590613d3f565b60405180910390a16040518181526001600160a01b038716903090600080516020613da98339815191529060200160405180910390a3505050505050565b6000610ca08284613cfe565b6000610ca08284613ce6565b6000670de0b6b3a7640000612f0e848460000151612edd565b610ca09190613d1d565b60055460405163368f515360e21b81526000916001600160a01b03169063da3d454c90612f4d90309087908790600401613d60565b6020604051808303816000875af1158015612f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f909190613c47565b90508015612fb45760405163918db40f60e01b81526004810182905260240161092e565b4360095414612fd657604051630e8d8c6160e21b815260040160405180910390fd5b81612fdf611cd3565b1015612ffe576040516348c2588160e01b815260040160405180910390fd5b600061300984611f0b565b905060006130178483613ce6565b9050600084600b546130299190613ce6565b6001600160a01b0387166000908152601060205260409020838155600a54600190910155600b819055905061305e8686612960565b604080516001600160a01b038816815260208101879052908101839052606081018290527f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809060800160405180910390a1505050505050565b600554604051632fe3f38f60e11b81523060048201526001600160a01b03838116602483015286811660448301528581166064830152608482018590526000921690635fc7e71e9060a4016020604051808303816000875af1158015613121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131459190613c47565b9050801561316957604051630a14d17960e11b81526004810182905260240161092e565b436009541461318b576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ee9190613c47565b1461320c57604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b0316141561323f57604051631bd1a62160e21b815260040160405180910390fd5b8261325d5760405163d29da7ef60e01b815260040160405180910390fd5b60001983141561328057604051635982c5bb60e11b815260040160405180910390fd5b600061328d86868661270b565b60055460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b906132c790309089908890600401613d60565b6040805180830381865afa1580156132e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133079190613d84565b91509150600082146133775760405162461bcd60e51b815260206004820152603360248201527f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f604482015272105353d5539517d4d152569157d19052531151606a1b606482015260840161092e565b6040516370a0823160e01b81526001600160a01b0388811660048301528291908716906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190613c47565b10156134325760405162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015260640161092e565b6001600160a01b0385163014156134545761344f30898984612278565b61350e565b60405163b2a02ff160e01b81526000906001600160a01b0387169063b2a02ff190613487908c908c908790600401613d60565b6020604051808303816000875af11580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca9190613c47565b1461350e5760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015260640161092e565b604080516001600160a01b038a811682528981166020830152818301869052871660608201526080810183905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a15050505050505050565b6012546040516370a0823160e01b81523060048201526000916001600160a01b0316908190839082906370a0823190602401602060405180830381865afa1580156135c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e49190613c47565b6040516323b872dd60e01b81529091506001600160a01b038316906323b872dd9061361790899030908a90600401613d60565b600060405180830381600087803b15801561363157600080fd5b505af1158015613645573d6000803e3d6000fd5b5050505060003d60008114613661576020811461366b57600080fd5b6000199150613677565b60206000803e60005191505b50806136c55760405162461bcd60e51b815260206004820152601860248201527f544f4b454e5f5452414e534645525f494e5f4641494c45440000000000000000604482015260640161092e565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801561370c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137309190613c47565b905061373c8382613ccf565b98975050505050505050565b6000610ca061375f84670de0b6b3a7640000612edd565b83516000610ca08284613d1d565b82805461377990613be8565b90600052602060002090601f01602090048101928261379b57600085556137e1565b82601f106137b457805160ff19168380011785556137e1565b828001600101855582156137e1579182015b828111156137e15782518255916020019190600101906137c6565b50611a2f9291505b80821115611a2f57600081556001016137e9565b600060208083528351808285015260005b8181101561382a5785810183015185820160400152820161380e565b8181111561383c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e5957600080fd5b6000806040838503121561387a57600080fd5b823561388581613852565b946020939093013593505050565b6000602082840312156138a557600080fd5b5035919050565b6000602082840312156138be57600080fd5b8135610ca081613852565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156138fa576138fa6138c9565b604051601f8501601f19908116603f01168101908282118183101715613922576139226138c9565b8160405280935085815286868601111561393b57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261396657600080fd5b610ca0838335602085016138df565b803560ff8116811461398657600080fd5b919050565b600080600080600080600060e0888a0312156139a657600080fd5b87356139b181613852565b965060208801356139c181613852565b955060408801356139d181613852565b945060608801359350608088013567ffffffffffffffff808211156139f557600080fd5b613a018b838c01613955565b945060a08a0135915080821115613a1757600080fd5b50613a248a828b01613955565b925050613a3360c08901613975565b905092959891949750929550565b600080600060608486031215613a5657600080fd5b8335613a6181613852565b92506020840135613a7181613852565b929592945050506040919091013590565b600060208284031215613a9457600080fd5b813567ffffffffffffffff811115613aab57600080fd5b8201601f81018413613abc57600080fd5b611ccb848235602084016138df565b60008060008060008060c08789031215613ae457600080fd5b8635613aef81613852565b95506020870135613aff81613852565b945060408701359350606087013567ffffffffffffffff80821115613b2357600080fd5b613b2f8a838b01613955565b94506080890135915080821115613b4557600080fd5b50613b5289828a01613955565b925050613b6160a08801613975565b90509295509295509295565b60008060408385031215613b8057600080fd5b8235613b8b81613852565b91506020830135613b9b81613852565b809150509250929050565b600080600060608486031215613bbb57600080fd5b8335613bc681613852565b9250602084013591506040840135613bdd81613852565b809150509250925092565b600181811c90821680613bfc57607f821691505b60208210811415613c1d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a90820152691c994b595b9d195c995960b21b604082015260600190565b600060208284031215613c5957600080fd5b5051919050565b600060208284031215613c7257600080fd5b81518015158114610ca057600080fd5b6020808252601c908201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015613ce157613ce1613cb9565b500390565b60008219821115613cf957613cf9613cb9565b500190565b6000816000190483118215151615613d1857613d18613cb9565b500290565b600082613d3a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215613d9757600080fd5b50508051602090910151909290915056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220124df33c482455232c063eda912e926a1e92e4c163e347576af1d5c4f907e9f064736f6c634300080a0033