0 txs
948 calls
constructor
No constructor.
functions
_borrowGuardianPaused
viewfunction _borrowGuardianPaused() view returns (bool)
_getExtensionFunctions
purefunction _getExtensionFunctions() pure returns (bytes4[])
_mintGuardianPaused
viewfunction _mintGuardianPaused() view returns (bool)
accountAssets
viewfunction accountAssets(address, uint256) view returns (address)
admin
viewfunction admin() view returns (address)
adminHasRights
viewfunction adminHasRights() view returns (bool)
allBorrowers
viewfunction allBorrowers(uint256) view returns (address)
allMarkets
viewfunction allMarkets(uint256) view returns (address)
borrowCapForCollateral
viewfunction borrowCapForCollateral(address, address) view returns (uint256)
borrowCapGuardian
viewfunction borrowCapGuardian() view returns (address)
borrowCaps
viewfunction borrowCaps(address) view returns (uint256)
borrowGuardianPaused
viewfunction borrowGuardianPaused(address) view returns (bool)
borrowingAgainstCollateralBlacklist
viewfunction borrowingAgainstCollateralBlacklist(address, address) view returns (bool)
closeFactorMantissa
viewfunction closeFactorMantissa() view returns (uint256)
cTokensByUnderlying
viewfunction cTokensByUnderlying(address) view returns (address)
effectiveBorrowCaps
viewfunction effectiveBorrowCaps(address cToken) view returns (uint256 borrowCap)
effectiveSupplyCaps
viewfunction effectiveSupplyCaps(address cToken) view returns (uint256 supplyCap)
enforceWhitelist
viewfunction enforceWhitelist() view returns (bool)
getAccruingFlywheels
viewfunction getAccruingFlywheels() view returns (address[])
getAllBorrowers
viewfunction getAllBorrowers() view returns (address[])
getAllBorrowersCount
viewfunction getAllBorrowersCount() view returns (uint256)
getAllMarkets
viewfunction getAllMarkets() view returns (address[])
getAssetAsCollateralValueCap
viewfunction getAssetAsCollateralValueCap(address collateral, address cTokenModify, bool redeeming, address account) view returns (uint256)
getPaginatedBorrowers
viewfunction getPaginatedBorrowers(uint256 page, uint256 pageSize) view returns (uint256 _totalPages, address[] _pageOfBorrowers)
getRewardsDistributors
viewfunction getRewardsDistributors() view returns (address[])
getWhitelist
viewfunction getWhitelist() view returns (address[])
getWhitelistedBorrowersBorrows
viewfunction getWhitelistedBorrowersBorrows(address cToken) view returns (uint256 borrowed)
getWhitelistedSuppliersSupply
viewfunction getWhitelistedSuppliersSupply(address cToken) view returns (uint256 supplied)
ionicAdmin
viewfunction ionicAdmin() view returns (address)
ionicAdminHasRights
viewfunction ionicAdminHasRights() view returns (bool)
isBlacklistBorrowingAgainstCollateralWhitelisted
viewfunction isBlacklistBorrowingAgainstCollateralWhitelisted(address cTokenBorrow, address cTokenCollateral, address account) view returns (bool)
isBorrowCapForCollateralWhitelisted
viewfunction isBorrowCapForCollateralWhitelisted(address cTokenBorrow, address cTokenCollateral, address account) view returns (bool)
isBorrowCapWhitelisted
viewfunction isBorrowCapWhitelisted(address cToken, address account) view returns (bool)
isComptroller
viewfunction isComptroller() view returns (bool)
isSupplyCapWhitelisted
viewfunction isSupplyCapWhitelisted(address cToken, address account) view returns (bool)
isUserOfPool
viewfunction isUserOfPool(address user) view returns (bool)
liquidationIncentiveMantissa
viewfunction liquidationIncentiveMantissa() view returns (uint256)
markets
viewfunction markets(address) view returns (bool isListed, uint256 collateralFactorMantissa)
mintGuardianPaused
viewfunction mintGuardianPaused(address) view returns (bool)
nonAccruingRewardsDistributors
viewfunction nonAccruingRewardsDistributors(uint256) view returns (address)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
rewardsDistributors
viewfunction rewardsDistributors(uint256) view returns (address)
seizeGuardianPaused
viewfunction seizeGuardianPaused() view returns (bool)
suppliers
viewfunction suppliers(address) view returns (bool)
supplyCaps
viewfunction supplyCaps(address) view returns (uint256)
transferGuardianPaused
viewfunction transferGuardianPaused() view returns (bool)
whitelist
viewfunction whitelist(address) view returns (bool)
whitelistArray
viewfunction whitelistArray(uint256) view returns (address)
_blacklistBorrowingAgainstCollateral
nonpayablefunction _blacklistBorrowingAgainstCollateral(address cTokenBorrow, address cTokenCollateral, bool blacklisted)
_blacklistBorrowingAgainstCollateralWhitelist
nonpayablefunction _blacklistBorrowingAgainstCollateralWhitelist(address cTokenBorrow, address cTokenCollateral, address account, bool whitelisted)
_borrowCapWhitelist
nonpayablefunction _borrowCapWhitelist(address cToken, address account, bool whitelisted)
_removeFlywheel
nonpayablefunction _removeFlywheel(address flywheelAddress) returns (bool)
_setBorrowCapForCollateral
nonpayablefunction _setBorrowCapForCollateral(address cTokenBorrow, address cTokenCollateral, uint256 borrowCap)
_setBorrowCapForCollateralWhitelist
nonpayablefunction _setBorrowCapForCollateralWhitelist(address cTokenBorrow, address cTokenCollateral, address account, bool whitelisted)
_setBorrowCapGuardian
nonpayablefunction _setBorrowCapGuardian(address newBorrowCapGuardian)
_setBorrowPaused
nonpayablefunction _setBorrowPaused(address cToken, bool state) returns (bool)
_setMarketBorrowCaps
nonpayablefunction _setMarketBorrowCaps(address[] cTokens, uint256[] newBorrowCaps)
_setMarketSupplyCaps
nonpayablefunction _setMarketSupplyCaps(address[] cTokens, uint256[] newSupplyCaps)
_setMintPaused
nonpayablefunction _setMintPaused(address cToken, bool state) returns (bool)
_setPauseGuardian
nonpayablefunction _setPauseGuardian(address newPauseGuardian) returns (uint256)
_setSeizePaused
nonpayablefunction _setSeizePaused(bool state) returns (bool)
_setTransferPaused
nonpayablefunction _setTransferPaused(bool state) returns (bool)
_supplyCapWhitelist
nonpayablefunction _supplyCapWhitelist(address cToken, address account, bool whitelisted)
_unsupportMarket
nonpayablefunction _unsupportMarket(address cToken) returns (uint256)
addNonAccruingFlywheel
nonpayablefunction addNonAccruingFlywheel(address flywheelAddress) returns (bool)
registerInSFS
nonpayablefunction registerInSFS() returns (uint256)
events
ActionPaused
event ActionPaused(string action, bool pauseState)
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
MarketActionPaused
event MarketActionPaused(address cToken, string action, bool pauseState)
MarketUnlisted
event MarketUnlisted(address cToken)
NewBorrowCap
event NewBorrowCap(address indexed cToken, uint256 newBorrowCap)
NewBorrowCapGuardian
event NewBorrowCapGuardian(address oldBorrowCapGuardian, address newBorrowCapGuardian)
NewPauseGuardian
event NewPauseGuardian(address oldPauseGuardian, address newPauseGuardian)
NewSupplyCap
event NewSupplyCap(address indexed cToken, uint256 newSupplyCap)
errors
No errors.
creation bytecode
0x60806040526002805461ffff60a01b191661010160a01b17905534801561002557600080fd5b50613f48806100356000396000f3fe608060405234801561001057600080fd5b50600436106103fb5760003560e01c80637515bafa11610215578063be945a6411610125578063d9e0ea6b116100b8578063e875544611610087578063e875544614610986578063ee5b9a2f1461098f578063f851a440146109a2578063f874eb0c146109b5578063fb6243fa146109c857600080fd5b8063d9e0ea6b1461092b578063dce154491461093e578063e6653f3d14610951578063e68065911461096557600080fd5b8063cf6bfd2d116100f4578063cf6bfd2d146108e9578063d01f63f5146108fd578063d219fca714610905578063d251fefc1461091857600080fd5b8063be945a641461089d578063c6c5b0dd146108b0578063c76ae260146108c3578063c91a424f146108d657600080fd5b80638ebf6364116101a8578063ac0b0bb711610177578063ac0b0bb714610841578063b0772d0b14610855578063b09572101461086a578063b103488214610877578063b32538011461088a57600080fd5b80638ebf6364146107cd578063940cd6f1146107e05780639b19251a1461080b578063a5fb48571461082e57600080fd5b8063819605a8116101e4578063819605a81461074d57806387f763031461076057806389f8132e146107745780638e8f294b1461078957600080fd5b80637515bafa1461070c578063783f10961461071f5780637dc0d1d0146107325780637f15e2161461074557600080fd5b80633605b51b1161031057806351a485e4116102a3578063607ef6c111610272578063607ef6c11461068d578063692fd2a9146106a05780636bd02b8a146106b35780636d154ea5146106c6578063731f0c2b146106e957600080fd5b806351a485e41461064157806351c8491d1461065457806352d84d1e146106675780635f5af1aa1461067a57600080fd5b80633c94786f116102df5780633c94786f146105fc5780634a584432146106105780634a76e727146106305780634ada90af1461063857600080fd5b80633605b51b146105b9578063391957d7146105c15780633a72cb5e146105d65780633bcf7ec1146105e957600080fd5b80631c819e4311610393578063267822471161036257806326782247146105425780632ccf47a4146105555780632d70db781461056857806331ff47fa1461057b57806332abcdbe146105a457600080fd5b80631c819e43146104c357806321af4569146104f15780632273f40e1461051c57806324a3d6221461052f57600080fd5b8063109908ce116103cf578063109908ce1461047257806315c3b9b01461048557806316dc15fe1461048d57806318c882a5146104b057600080fd5b80627e3dd21461040057806302c3bcbb1461041d578063088e0fce1461044b5780630a755ec21461045e575b600080fd5b610408600181565b60405190151581526020015b60405180910390f35b61043d61042b3660046136af565b60186020526000908152604090205481565b604051908152602001610414565b6104086104593660046136cc565b6109db565b60025461040890600160a81b900460ff1681565b6104086104803660046136af565b610a14565b600b5461043d565b61040861049b3660046136af565b600d6020526000908152604090205460ff1681565b6104086104be36600461372c565b610c5e565b6104086104d1366004613761565b601d60209081526000928352604080842090915290825290205460ff1681565b601654610504906001600160a01b031681565b6040516001600160a01b039091168152602001610414565b61040861052a366004613761565b610da4565b601354610504906001600160a01b031681565b600254610504906001600160a01b031681565b61043d6105633660046136af565b610dcc565b61040861057636600461379a565b61103e565b6105046105893660046136af565b600e602052600090815260409020546001600160a01b031681565b6105ac611121565b60405161041491906137fa565b6105ac611183565b6105d46105cf3660046136af565b6112eb565b005b61043d6105e43660046136af565b611376565b6104086105f736600461372c565b611457565b60135461040890600160a01b900460ff1681565b61043d61061e3660046136af565b60176020526000908152604090205481565b6105ac61158e565b61043d60055481565b6105d461064f366004613852565b6115ee565b6105d46106623660046138be565b61176d565b610504610675366004613905565b6117df565b61043d6106883660046136af565b611809565b6105d461069b366004613852565b611889565b6104086106ae3660046136af565b6119ff565b6105046106c1366004613905565b611b86565b6104086106d43660046136af565b60156020526000908152604090205460ff1681565b6104086106f73660046136af565b60146020526000908152604090205460ff1681565b61050461071a366004613905565b611b96565b61043d61072d36600461391e565b611ba6565b600354610504906001600160a01b031681565b61043d611e76565b61043d61075b3660046136af565b611fe0565b60135461040890600160b01b900460ff1681565b61077c61230b565b6040516104149190613978565b6107b66107973660046136af565b6008602052600090815260409020805460019091015460ff9091169082565b604080519215158352602083019190915201610414565b6104086107db36600461379a565b612be7565b61043d6107ee366004613761565b601c60209081526000928352604080842090915290825290205481565b6104086108193660046136af565b60106020526000908152604090205460ff1681565b6105d461083c3660046139c6565b612cc1565b60135461040890600160b81b900460ff1681565b61085d612d11565b6040516104149190613a07565b600f546104089060ff1681565b61043d6108853660046136af565b612d71565b610408610898366004613761565b612e10565b6105d46108ab3660046138be565b612e32565b6105046108be366004613905565b612ea0565b6105d46108d1366004613a48565b612eb0565b600054610504906001600160a01b031681565b60025461040890600160a01b900460ff1681565b6105ac612f45565b6105d4610913366004613a48565b612fa5565b610504610926366004613905565b61302d565b6104086109393660046136af565b61303d565b61050461094c366004613aa2565b6130b4565b60135461040890600160a81b900460ff1681565b610978610973366004613ace565b6130ec565b604051610414929190613af0565b61043d60045481565b6105d461099d3660046138be565b61326b565b600154610504906001600160a01b031681565b6104086109c33660046136cc565b6132c9565b61043d6109d63660046136af565b6132fa565b6001600160a01b038084166000908152601e602090815260408083209386168352929052908120610a0c90836133d3565b949350505050565b6000610a1e6133f5565b610a435760405162461bcd60e51b8152600401610a3a90613b09565b60405180910390fd5b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152600960248201526808599b1e5dda19595b60ba1b6044820152606401610a3a565b60005b601954811015610b825760198181548110610aa557610aa5613b29565b6000918252602090912001546001600160a01b0390811690841603610b7a5760198054610ad490600190613b55565b81548110610ae457610ae4613b29565b600091825260209091200154601980546001600160a01b039092169183908110610b1057610b10613b29565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506019805480610b4f57610b4f613b68565b600082815260209020810160001990810180546001600160a01b031916905501905550600192915050565b600101610a88565b5060005b601b54811015610c5557601b8181548110610ba357610ba3613b29565b6000918252602090912001546001600160a01b0390811690841603610c4d57601b8054610bd290600190613b55565b81548110610be257610be2613b29565b600091825260209091200154601b80546001600160a01b039092169183908110610c0e57610c0e613b29565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601b805480610b4f57610b4f613b68565b600101610b86565b50600092915050565b6001600160a01b03821660009081526008602052604081205460ff16610cb05760405162461bcd60e51b8152602060048201526007602482015266085b585c9ad95d60ca1b6044820152606401610a3a565b6013546001600160a01b0316331480610ccc5750610ccc6133f5565b610ce85760405162461bcd60e51b8152600401610a3a90613b7e565b610cf06133f5565b80610cfd57506001821515145b610d195760405162461bcd60e51b8152600401610a3a90613b09565b6001600160a01b038316600081815260156020908152604091829020805460ff19168615159081179091558251938452606091840182905260069184019190915265426f72726f7760d01b6080840152908201527f4ab2c577b7459254dd330a38beef1d66ae70ba1ab28db7147d52d3a752a03cdc9060a0015b60405180910390a150805b92915050565b6001600160a01b03821660009081526020805260408120610dc590836133d3565b9392505050565b604080516060810182526023546001600160a01b03811680835260ff600160a01b8304166020840152600160a81b909104600090810b938301939093521561101c576000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e729190613ba1565b8251602084015160405163197c92ab60e31b81526001600160a01b03808516600483015260ff9092166024820152929350169063cbe4955890604401606060405180830381865afa158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef9190613bec565b602090810151604080516004815260248101825292830180516001600160e01b031663313ce56760e01b1790525167ffffffffffffffff909116945060129160009182916001600160a01b03861691610f489190613c71565b600060405180830381855afa9150503d8060008114610f83576040519150601f19603f3d011682016040523d82523d6000602084013e610f88565b606091505b5091509150818015610f9b575080516020145b15610fba5780806020019051810190610fb49190613ca0565b60ff1692505b6040850151610fcc9060000b84613cc3565b925060008312610ff257610fe183600a613dcf565b610feb9087613ddb565b9550611013565b610ffb83613df2565b61100690600a613dcf565b6110109087613e24565b95505b50505050611038565b6001600160a01b03831660009081526018602052604090205491505b50919050565b6013546000906001600160a01b031633148061105d575061105d6133f5565b6110795760405162461bcd60e51b8152600401610a3a90613b7e565b6110816133f5565b8061108e57506001821515145b6110aa5760405162461bcd60e51b8152600401610a3a90613b09565b60138054831515600160b81b0260ff60b81b199091161790556040517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0906111159084906040808252600590820152645365697a6560d81b6060820152901515602082015260800190565b60405180910390a15090565b6060600b80548060200260200160405190810160405280929190818152602001828054801561117957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161115b575b5050505050905090565b601b546019546060916000916111999190613e38565b67ffffffffffffffff8111156111b1576111b1613bbe565b6040519080825280602002602001820160405280156111da578160200160208202803683370190505b50905060005b60195460ff821610156112605760198160ff168154811061120357611203613b29565b9060005260206000200160009054906101000a90046001600160a01b0316828260ff168151811061123657611236613b29565b6001600160a01b03909216602092830291909101909101528061125881613e4b565b9150506111e0565b60005b601b5460ff821610156112e357601b8160ff168154811061128657611286613b29565b6000918252602090912001546001600160a01b0316836112a68385613e6a565b60ff16815181106112b9576112b9613b29565b6001600160a01b0390921660209283029190910190910152806112db81613e4b565b915050611263565b509092915050565b6001546001600160a01b031633146113155760405162461bcd60e51b8152600401610a3a90613b09565b601680546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e29910160405180910390a15050565b6001600160a01b0381166000908152602160205260408120819061139990613449565b905060005b815181101561145057836001600160a01b03166317bfdfbc8383815181106113c8576113c8613b29565b60200260200101516040518263ffffffff1660e01b81526004016113fb91906001600160a01b0391909116815260200190565b602060405180830381865afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143c9190613e83565b6114469084613e38565b925060010161139e565b5050919050565b6001600160a01b03821660009081526008602052604081205460ff166114a95760405162461bcd60e51b8152602060048201526007602482015266085b585c9ad95d60ca1b6044820152606401610a3a565b6013546001600160a01b03163314806114c557506114c56133f5565b6114e15760405162461bcd60e51b8152600401610a3a90613b7e565b6114e96133f5565b806114f657506001821515145b6115125760405162461bcd60e51b8152600401610a3a90613b09565b6001600160a01b038316600081815260146020908152604091829020805460ff19168615159081179091558251938452606091840182905260049184019190915263135a5b9d60e21b6080840152908201527f4ab2c577b7459254dd330a38beef1d66ae70ba1ab28db7147d52d3a752a03cdc9060a001610d93565b60606019805480602002602001604051908101604052809291908181526020018280548015611179576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161115b575050505050905090565b6001546001600160a01b031633148061161157506016546001600160a01b031633145b61162d5760405162461bcd60e51b8152600401610a3a90613b09565b8281811580159061163d57508082145b6116725760405162461bcd60e51b8152602060048201526006602482015265085a5b9c1d5d60d21b6044820152606401610a3a565b60005b828110156117645784848281811061168f5761168f613b29565b90506020020135601860008989858181106116ac576116ac613b29565b90506020020160208101906116c191906136af565b6001600160a01b031681526020810191909152604001600020558686828181106116ed576116ed613b29565b905060200201602081019061170291906136af565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f886868481811061173e5761173e613b29565b9050602002013560405161175491815260200190565b60405180910390a2600101611675565b50505050505050565b6117756133f5565b6117915760405162461bcd60e51b8152600401610a3a90613b09565b80156117be576001600160a01b038316600090815260208052604090206117b89083613456565b50505050565b6001600160a01b038316600090815260208052604090206117b8908361346b565b600981815481106117ef57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006118136133f5565b61182357610d9e60016017613480565b601380546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e910160405180910390a160009392505050565b6001546001600160a01b03163314806118ac57506016546001600160a01b031633145b6118c85760405162461bcd60e51b8152600401610a3a90613b09565b828181158015906118d857508082145b61190d5760405162461bcd60e51b8152602060048201526006602482015265085a5b9c1d5d60d21b6044820152606401610a3a565b60005b828110156117645784848281811061192a5761192a613b29565b905060200201356017600089898581811061194757611947613b29565b905060200201602081019061195c91906136af565b6001600160a01b0316815260208101919091526040016000205586868281811061198857611988613b29565b905060200201602081019061199d91906136af565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f68686848181106119d9576119d9613b29565b905060200201356040516119ef91815260200190565b60405180910390a2600101611910565b6000611a096133f5565b611a255760405162461bcd60e51b8152600401610a3a90613b09565b6001600160a01b038216611a675760405162461bcd60e51b815260206004820152600960248201526808599b1e5dda19595b60ba1b6044820152606401610a3a565b60005b601b54811015611ae657601b8181548110611a8757611a87613b29565b6000918252602090912001546001600160a01b0390811690841603611ade5760405162461bcd60e51b815260206004820152600d60248201526c08585b1c9958591e5859191959609a1b6044820152606401610a3a565b600101611a6a565b50601b805460018101825560009182527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b0319166001600160a01b0385161790555b601954811015610c555760198181548110611b4f57611b4f613b29565b6000918252602090912001546001600160a01b0390811690841603611b7e5760198054610ad490600190613b55565b600101611b32565b601b81815481106117ef57600080fd5b600b81815481106117ef57600080fd5b6000836001600160a01b0316856001600160a01b0316148015611bc7575082155b15611bd457506000610a0c565b6000196001600160a01b03851615611d4e576001600160a01b038086166000908152601d60209081526040808320938a168352929052205460ff168015611c4757506001600160a01b038086166000908152601f60209081526040808320938a16835292905220611c4590846133d3565b155b15611c5457506000611d4e565b6001600160a01b038086166000908152601c60209081526040808320938a16835292905220548015801590611cb557506001600160a01b038087166000908152601e60209081526040808320938b16835292905220611cb390856133d3565b155b15611d4c5760035460405163fc57d4df60e01b81526001600160a01b038881166004830152600092169063fc57d4df90602401602060405180830381865afa158015611d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d299190613e83565b9050670de0b6b3a7640000611d3e8284613ddb565b611d489190613e24565b9250505b505b6000611d5987610dcc565b9050600081118015611d8957506001600160a01b03871660009081526020805260409020611d8790856133d3565b155b15611e6c5760035460405163fc57d4df60e01b81526001600160a01b038981166004830152600092169063fc57d4df90602401602060405180830381865afa158015611dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfd9190613e83565b90506000670de0b6b3a7640000611e148385613ddb565b611e1e9190613e24565b6001600160a01b038a16600090815260086020526040902060010154909150670de0b6b3a764000090611e519083613ddb565b611e5b9190613e24565b905083811015611e69578093505b50505b5095945050505050565b6000611e806133f5565b611e9c5760405162461bcd60e51b8152600401610a3a90613b09565b738680ceabcb9b56913c519c069add6bc3494b702060005b600954811015611f5b5760098181548110611ed157611ed1613b29565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b0316637f15e2166040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f529190613e83565b50600101611eb4565b50604051632210724360e11b8152738fba84867ba458e7c6e2c024d2de3d0b5c3ea1c260048201526001600160a01b03821690634420e486906024016020604051808303816000875af1158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190613e83565b91505090565b6000611fea6133f5565b611ffa57610d9e60016018613480565b6001600160a01b03821660009081526008602052604090205460ff1661202657610d9e60086019613480565b6000826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613e83565b111561209c57610d9e6014601a613480565b6001600160a01b0382166000908152600860209081526040808320805460ff1916815560010183905560098054825181850281018501909352808352919290919083018282801561211657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116120f8575b5050835193945083925060009150505b8281101561217057856001600160a01b031684828151811061214a5761214a613b29565b60200260200101516001600160a01b03160361216857809150612170565b600101612126565b5081811061218057612180613eb2565b6009805461219090600190613b55565b815481106121a0576121a0613b29565b600091825260209091200154600980546001600160a01b0390921691839081106121cc576121cc613b29565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600980548061220b5761220b613b68565b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590556000600e6000876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b9190613ba1565b6001600160a01b039081168252602080830193909352604091820160002080546001600160a01b031916948216949094179093555191871682527f302feb03efd5741df80efe7f97f5d93d74d46a542a3d312d0faae64fa1f3e0e9910160405180910390a1600095945050505050565b60408051602180825261044082019092526060919060009082602082016104208036833701905050905063692fd2a960e01b8161234784613ec8565b93508360ff168151811061235d5761235d613b29565b6001600160e01b031990921660209283029190910190910152631469217960e21b8161238884613ec8565b93508360ff168151811061239e5761239e613b29565b6001600160e01b03199092166020928302919091019091015263607ef6c160e01b816123c984613ec8565b93508360ff16815181106123df576123df613b29565b6001600160e01b03199092166020928302919091019091015263d219fca760e01b8161240a84613ec8565b93508360ff168151811061242057612420613b29565b6001600160e01b03199092166020928302919091019091015263063b571360e51b8161244b84613ec8565b93508360ff168151811061246157612461613b29565b6001600160e01b0319909216602092830291909101909101526351c8491d60e01b8161248c84613ec8565b93508360ff16815181106124a2576124a2613b29565b6001600160e01b031990921660209283029190910190910152632fa5169960e21b816124cd84613ec8565b93508360ff16815181106124e3576124e3613b29565b6001600160e01b03199092166020928302919091019091015263391957d760e01b8161250e84613ec8565b93508360ff168151811061252457612524613b29565b6001600160e01b031990921660209283029190910190910152632fad78d560e11b8161254f84613ec8565b93508360ff168151811061256557612565613b29565b6001600160e01b031990921660209283029190910190910152633bcf7ec160e01b8161259084613ec8565b93508360ff16815181106125a6576125a6613b29565b6001600160e01b0319909216602092830291909101909101526318c882a560e01b816125d184613ec8565b93508360ff16815181106125e7576125e7613b29565b6001600160e01b0319909216602092830291909101909101526323afd8d960e21b8161261284613ec8565b93508360ff168151811061262857612628613b29565b6001600160e01b0319909216602092830291909101909101526305ae1b6f60e31b8161265384613ec8565b93508360ff168151811061266957612669613b29565b6001600160e01b031990921660209283029190910190910152631032c0b560e31b8161269484613ec8565b93508360ff16815181106126aa576126aa613b29565b6001600160e01b03199092166020928302919091019091015263b0772d0b60e01b816126d584613ec8565b93508360ff16815181106126eb576126eb613b29565b6001600160e01b031990921660209283029190910190910152631955e6df60e11b8161271684613ec8565b93508360ff168151811061272c5761272c613b29565b6001600160e01b03199092166020928302919091019091015263015c3b9b60e41b8161275784613ec8565b93508360ff168151811061276d5761276d613b29565b6001600160e01b03199092166020928302919091019091015263e680659160e01b8161279884613ec8565b93508360ff16815181106127ae576127ae613b29565b6001600160e01b03199092166020928302919091019091015263d01f63f560e01b816127d984613ec8565b93508360ff16815181106127ef576127ef613b29565b6001600160e01b031990921660209283029190910190910152633605b51b60e01b8161281a84613ec8565b93508360ff168151811061283057612830613b29565b6001600160e01b03199092166020928302919091019091015263d9e0ea6b60e01b8161285b84613ec8565b93508360ff168151811061287157612871613b29565b6001600160e01b031990921660209283029190910190910152634a76e72760e01b8161289c84613ec8565b93508360ff16815181106128b2576128b2613b29565b6001600160e01b03199092166020928302919091019091015263084c846760e11b816128dd84613ec8565b93508360ff16815181106128f3576128f3613b29565b6001600160e01b03199092166020928302919091019091015263a5fb485760e01b8161291e84613ec8565b93508360ff168151811061293457612934613b29565b6001600160e01b03199092166020928302919091019091015263ee5b9a2f60e01b8161295f84613ec8565b93508360ff168151811061297557612975613b29565b6001600160e01b03199092166020928302919091019091015263044707e760e11b816129a084613ec8565b93508360ff16815181106129b6576129b6613b29565b6001600160e01b031990921660209283029190910190910152633e1d3ac360e21b816129e184613ec8565b93508360ff16815181106129f7576129f7613b29565b6001600160e01b031990921660209283029190910190910152631139fa0760e11b81612a2284613ec8565b93508360ff1681518110612a3857612a38613b29565b6001600160e01b03199092166020928302919091019091015263b325380160e01b81612a6384613ec8565b93508360ff1681518110612a7957612a79613b29565b6001600160e01b031990921660209283029190910190910152637db121fd60e11b81612aa484613ec8565b93508360ff1681518110612aba57612aba613b29565b6001600160e01b031990921660209283029190910190910152631d3965af60e11b81612ae584613ec8565b93508360ff1681518110612afb57612afb613b29565b6001600160e01b031990921660209283029190910190910152633c1f884b60e11b81612b2684613ec8565b93508360ff1681518110612b3c57612b3c613b29565b6001600160e01b031990921660209283029190910190910152633f8af10b60e11b81612b6784613ec8565b93508360ff1681518110612b7d57612b7d613b29565b6001600160e01b03199092166020928302919091019091015260ff821615610d9e5760405162461bcd60e51b815260206004820152601c60248201527f7573652074686520636f7272656374206172726179206c656e677468000000006044820152606401610a3a565b6013546000906001600160a01b0316331480612c065750612c066133f5565b612c225760405162461bcd60e51b8152600401610a3a90613b7e565b612c2a6133f5565b80612c3757506001821515145b612c535760405162461bcd60e51b8152600401610a3a90613b09565b60138054831515600160b01b0260ff60b01b199091161790556040517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0906111159084906040808252600890820152672a3930b739b332b960c11b6060820152901515602082015260800190565b612cc96133f5565b612ce55760405162461bcd60e51b8152600401610a3a90613b09565b6001600160a01b039283166000908152601c602090815260408083209490951682529290925291902055565b60606009805480602002602001604051908101604052809291908181526020018280548015611179576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161115b575050505050905090565b604080516060810182526022546001600160a01b03811680835260ff600160a01b8304166020840152600160a81b909104600090810b9383019390935215612df3576000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4e573d6000803e3d6000fd5b50506001600160a01b031660009081526017602052604090205490565b6001600160a01b0382166000908152602160205260408120610dc590836133d3565b612e3a6133f5565b612e565760405162461bcd60e51b8152600401610a3a90613b09565b8015612e7e576001600160a01b03831660009081526021602052604090206117b89083613456565b6001600160a01b03831660009081526021602052604090206117b8908361346b565b601981815481106117ef57600080fd5b612eb86133f5565b612ed45760405162461bcd60e51b8152600401610a3a90613b09565b8015612f0f576001600160a01b038085166000908152601f60209081526040808320938716835292905220612f099083613456565b506117b8565b6001600160a01b038085166000908152601f60209081526040808320938716835292905220612f3e908361346b565b5050505050565b60606011805480602002602001604051908101604052809291908181526020018280548015611179576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161115b575050505050905090565b612fad6133f5565b612fc95760405162461bcd60e51b8152600401610a3a90613b09565b8015612ffe576001600160a01b038085166000908152601e60209081526040808320938716835292905220612f099083613456565b6001600160a01b038085166000908152601e60209081526040808320938716835292905220612f3e908361346b565b601181815481106117ef57600080fd5b6000805b600954811015610c555760006009828154811061306057613060613b29565b60009182526020808320909101546001600160a01b03908116808452600883526040808520928916855260029092019092529091205490915060ff16156130ab575060019392505050565b50600101613041565b600760205281600052604060002081815481106130d057600080fd5b6000918252602090912001546001600160a01b03169150829050565b600b5460009060609080830361311657604080516000808252602082019092529250925050613264565b836000036131245761012c93505b8360006131318284613ee5565b905061313d8684613e24565b94508015613168578461314f81613ef9565b955085905061315f886001613e38565b03613168578091505b84613174886001613e38565b111561319457505060408051600081526020810190915291506132649050565b60006131a08789613ddb565b90508267ffffffffffffffff8111156131bb576131bb613bbe565b6040519080825280602002602001820160405280156131e4578160200160208202803683370190505b50945060005b8381101561325e57600b6131fe8383613e38565b8154811061320e5761320e613b29565b9060005260206000200160009054906101000a90046001600160a01b031686828151811061323e5761323e613b29565b6001600160a01b03909216602092830291909101909101526001016131ea565b50505050505b9250929050565b6132736133f5565b61328f5760405162461bcd60e51b8152600401610a3a90613b09565b6001600160a01b039283166000908152601d6020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001600160a01b038084166000908152601f602090815260408083209386168352929052908120610a0c90836133d3565b6001600160a01b03811660009081526020805260408120819061331c90613449565b905060005b815181101561145057836001600160a01b0316633af9e66983838151811061334b5761334b613b29565b60200260200101516040518263ffffffff1660e01b815260040161337e91906001600160a01b0391909116815260200190565b602060405180830381865afa15801561339b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133bf9190613e83565b6133c99084613e38565b9250600101613321565b6001600160a01b03811660009081526001830160205260408120541515610dc5565b6001546000906001600160a01b03163314801561341b5750600254600160a81b900460ff165b8061344457506000546001600160a01b0316331480156134445750600254600160a01b900460ff165b905090565b60606000610dc5836134f9565b6000610dc5836001600160a01b038416613555565b6000610dc5836001600160a01b0384166135a4565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360148111156134b5576134b5613e9c565b83601a8111156134c7576134c7613e9c565b60408051928352602083019190915260009082015260600160405180910390a1826014811115610dc557610dc5613e9c565b60608160000180548060200260200160405190810160405280929190818152602001828054801561354957602002820191906000526020600020905b815481526020019060010190808311613535575b50505050509050919050565b600081815260018301602052604081205461359c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d9e565b506000610d9e565b6000818152600183016020526040812054801561368d5760006135c8600183613b55565b85549091506000906135dc90600190613b55565b90508181146136415760008660000182815481106135fc576135fc613b29565b906000526020600020015490508087600001848154811061361f5761361f613b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061365257613652613b68565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d9e565b6000915050610d9e565b6001600160a01b03811681146136ac57600080fd5b50565b6000602082840312156136c157600080fd5b8135610dc581613697565b6000806000606084860312156136e157600080fd5b83356136ec81613697565b925060208401356136fc81613697565b9150604084013561370c81613697565b809150509250925092565b8035801515811461372757600080fd5b919050565b6000806040838503121561373f57600080fd5b823561374a81613697565b915061375860208401613717565b90509250929050565b6000806040838503121561377457600080fd5b823561377f81613697565b9150602083013561378f81613697565b809150509250929050565b6000602082840312156137ac57600080fd5b610dc582613717565b60008151808452602080850194506020840160005b838110156137ef5781516001600160a01b0316875295820195908201906001016137ca565b509495945050505050565b602081526000610dc560208301846137b5565b60008083601f84011261381f57600080fd5b50813567ffffffffffffffff81111561383757600080fd5b6020830191508360208260051b850101111561326457600080fd5b6000806000806040858703121561386857600080fd5b843567ffffffffffffffff8082111561388057600080fd5b61388c8883890161380d565b909650945060208701359150808211156138a557600080fd5b506138b28782880161380d565b95989497509550505050565b6000806000606084860312156138d357600080fd5b83356138de81613697565b925060208401356138ee81613697565b91506138fc60408501613717565b90509250925092565b60006020828403121561391757600080fd5b5035919050565b6000806000806080858703121561393457600080fd5b843561393f81613697565b9350602085013561394f81613697565b925061395d60408601613717565b9150606085013561396d81613697565b939692955090935050565b6020808252825182820181905260009190848201906040850190845b818110156139ba5783516001600160e01b03191683529284019291840191600101613994565b50909695505050505050565b6000806000606084860312156139db57600080fd5b83356139e681613697565b925060208401356139f681613697565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156139ba5783516001600160a01b031683529284019291840191600101613a23565b60008060008060808587031215613a5e57600080fd5b8435613a6981613697565b93506020850135613a7981613697565b92506040850135613a8981613697565b9150613a9760608601613717565b905092959194509250565b60008060408385031215613ab557600080fd5b8235613ac081613697565b946020939093013593505050565b60008060408385031215613ae157600080fd5b50508035926020909101359150565b828152604060208201526000610a0c60408301846137b5565b60208082526006908201526510b0b236b4b760d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610d9e57610d9e613b3f565b634e487b7160e01b600052603160045260246000fd5b60208082526009908201526810b3bab0b93234b0b760b91b604082015260600190565b600060208284031215613bb357600080fd5b8151610dc581613697565b634e487b7160e01b600052604160045260246000fd5b805167ffffffffffffffff8116811461372757600080fd5b600060608284031215613bfe57600080fd5b6040516060810181811067ffffffffffffffff82111715613c2f57634e487b7160e01b600052604160045260246000fd5b604052613c3b83613bd4565b8152613c4960208401613bd4565b6020820152604083015163ffffffff81168114613c6557600080fd5b60408201529392505050565b6000825160005b81811015613c925760208186018101518583015201613c78565b506000920191825250919050565b600060208284031215613cb257600080fd5b815160ff81168114610dc557600080fd5b8082018281126000831280158216821582161715613ce357613ce3613b3f565b505092915050565b600181815b80851115613d26578160001904821115613d0c57613d0c613b3f565b80851615613d1957918102915b93841c9390800290613cf0565b509250929050565b600082613d3d57506001610d9e565b81613d4a57506000610d9e565b8160018114613d605760028114613d6a57613d86565b6001915050610d9e565b60ff841115613d7b57613d7b613b3f565b50506001821b610d9e565b5060208310610133831016604e8410600b8410161715613da9575081810a610d9e565b613db38383613ceb565b8060001904821115613dc757613dc7613b3f565b029392505050565b6000610dc58383613d2e565b8082028115828204841417610d9e57610d9e613b3f565b6000600160ff1b8201613e0757613e07613b3f565b5060000390565b634e487b7160e01b600052601260045260246000fd5b600082613e3357613e33613e0e565b500490565b80820180821115610d9e57610d9e613b3f565b600060ff821660ff8103613e6157613e61613b3f565b60010192915050565b60ff8181168382160190811115610d9e57610d9e613b3f565b600060208284031215613e9557600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600060ff821680613edb57613edb613b3f565b6000190192915050565b600082613ef457613ef4613e0e565b500690565b600060018201613f0b57613f0b613b3f565b506001019056fea2646970667358221220b2f6c6f72545793b55ffe094a2a52377eedce77266c9e0bade1809fee8a91e5764736f6c63430008160033