0 txs
11 calls
constructor
constructor()
functions
allRewarders
viewfunction allRewarders(uint256) view returns (address)
allStakingTokens
viewfunction allStakingTokens(uint256) view returns (address)
calculateShare
viewfunction calculateShare(address rewarder, address user) view returns (uint256)
calculateTotalShare
viewfunction calculateTotalShare(address rewarder) view returns (uint256)
compounder
viewfunction compounder() view returns (address)
dp
viewfunction dp() view returns (address)
dragonPointRewarder
viewfunction dragonPointRewarder() view returns (address)
esHmx
viewfunction esHmx() view returns (address)
getAccumulatedLockedReward
viewfunction getAccumulatedLockedReward(address user, address[] rewards, bool isOnlyClaimAble) view returns (address[], uint256[])
getAllRewarders
viewfunction getAllRewarders() view returns (address[])
getAllStakingTokens
viewfunction getAllStakingTokens() view returns (address[])
getRewarderStakingTokens
viewfunction getRewarderStakingTokens(address rewarder) view returns (address[])
getStakingTokenRewarders
viewfunction getStakingTokenRewarders(address stakingToken) view returns (address[])
getUserLockedRewards
viewfunction getUserLockedRewards(address account) view returns (tuple[])
getUserTokenAmount
viewfunction getUserTokenAmount(address stakingToken, address account) view returns (uint256)
isCompounder
viewfunction isCompounder(address compounder) view returns (bool isAllowed)
isRewarder
viewfunction isRewarder(address) view returns (bool)
isStakingLHMX
viewfunction isStakingLHMX(address) view returns (bool)
isStakingToken
viewfunction isStakingToken(address) view returns (bool)
lhmx
viewfunction lhmx() view returns (address)
migrateMode
viewfunction migrateMode() view returns (bool)
migrator
viewfunction migrator() view returns (address)
owner
viewfunction owner() view returns (address)
rewarderStakingTokens
viewfunction rewarderStakingTokens(address, uint256) view returns (address)
stakingLocker
viewfunction stakingLocker() view returns (address)
stakingTokenRewarders
viewfunction stakingTokenRewarders(address, uint256) view returns (address)
userLockedRewards
viewfunction userLockedRewards(address, uint256) view returns (address account, address reward, uint256 amount, uint256 endRewardLockTimestamp)
userLockedRewardsStartIndex
viewfunction userLockedRewardsStartIndex(address) view returns (uint256)
userTokenAmount
viewfunction userTokenAmount(address, address) view returns (uint256)
vester
viewfunction vester() view returns (address)
addRewarder
nonpayablefunction addRewarder(address newRewarder, address[] newStakingToken)
addStakingToken
nonpayablefunction addStakingToken(address newStakingToken, address[] newRewarders)
claimLockedReward
nonpayablefunction claimLockedReward(address user)
deposit
nonpayablefunction deposit(address account, address token, uint256 amount)
harvest
nonpayablefunction harvest(address[] rewarders)
harvestToCompounder
nonpayablefunction harvestToCompounder(address user, address[] _rewarders)
initialize
nonpayablefunction initialize(address lhmx_, address dp_, address esHmx_, address vester_)
reinvestDp
nonpayablefunction reinvestDp(address user)
removeRewarderFoStakingTokenByIndex
nonpayablefunction removeRewarderFoStakingTokenByIndex(uint256 removeRewarderIndex, address stakingToken)
renounceOwnership
nonpayablefunction renounceOwnership()
setAllRewarders
nonpayablefunction setAllRewarders(address[] _allRewarders)
setAllStakingTokens
nonpayablefunction setAllStakingTokens(address[] _allStakingTokens)
setCompounder
nonpayablefunction setCompounder(address _compounder)
setDragonPoint
nonpayablefunction setDragonPoint(address _dp)
setDragonPointRewarder
nonpayablefunction setDragonPointRewarder(address rewarder)
setEsHmx
nonpayablefunction setEsHmx(address _esHmx)
setIsCompounders
nonpayablefunction setIsCompounders(address[] compounders, bool[] isAllowed)
setMigrateMode
nonpayablefunction setMigrateMode(bool _status)
setMigrator
nonpayablefunction setMigrator(address _migrator)
setStakingLocker
nonpayablefunction setStakingLocker(address _stakingLocker, address _tokenWithCooldown)
setVester
nonpayablefunction setVester(address _vester)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
vestEsHmx
nonpayablefunction vestEsHmx(uint256 amount, uint256 duration)
withdraw
nonpayablefunction withdraw(address stakingToken, uint256 amount)
withdrawAsMigrator
nonpayablefunction withdrawAsMigrator(address user, address stakingToken, uint256 amount)
events
Initialized
event Initialized(uint8 version)
LogAddLockedReward
event LogAddLockedReward(address indexed account, address reward, uint256 amount, uint256 endRewardLockTimestamp)
LogAddRewarder
event LogAddRewarder(address newRewarder, address[] newTokens)
LogAddStakingToken
event LogAddStakingToken(address newToken, address[] newRewarders)
LogDeposit
event LogDeposit(address indexed caller, address indexed user, address token, uint256 amount)
LogSetAllRewarders
event LogSetAllRewarders(address[] oldRewarders, address[] newRewarders)
LogSetAllStakingTokens
event LogSetAllStakingTokens(address[] oldStakingTokens, address[] newStakingTokens)
LogSetCompounder
event LogSetCompounder(address oldCompounder, address newCompounder)
LogSetExHmx
event LogSetExHmx(address oldExHmx, address newExHmx)
LogSetIsCompounder
event LogSetIsCompounder(address compounder, bool isCompounder)
LogSetMigrateMode
event LogSetMigrateMode(bool status)
LogSetMigrator
event LogSetMigrator(address oldMigrator, address newMigrator)
LogSetStakingLocker
event LogSetStakingLocker(address oldStakingLocker, address newStakingLocker)
LogSetVester
event LogSetVester(address oldVester, address newVester)
LogWithdraw
event LogWithdraw(address indexed caller, address token, uint256 amount)
LogWithdrawWithCooldown
event LogWithdrawWithCooldown(address indexed caller, address token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
HMXStaking_BadDecimals
error HMXStaking_BadDecimals()
HMXStaking_DPRequiredForVesting
error HMXStaking_DPRequiredForVesting()
HMXStaking_DragonPointWithdrawForbid
error HMXStaking_DragonPointWithdrawForbid()
HMXStaking_DuringMigration
error HMXStaking_DuringMigration()
HMXStaking_Forbidden
error HMXStaking_Forbidden()
HMXStaking_InconsistentLength
error HMXStaking_InconsistentLength()
HMXStaking_InsufficientTokenAmount
error HMXStaking_InsufficientTokenAmount()
HMXStaking_InvalidTokenAmount
error HMXStaking_InvalidTokenAmount()
HMXStaking_NotCompounder
error HMXStaking_NotCompounder()
HMXStaking_NotInMigration
error HMXStaking_NotInMigration()
HMXStaking_NotRewarder
error HMXStaking_NotRewarder()
HMXStaking_OnlyLHMXStakingTokenAllowed
error HMXStaking_OnlyLHMXStakingTokenAllowed()
HMXStaking_RemainUnclaimReward
error HMXStaking_RemainUnclaimReward()
HMXStaking_UnknownStakingToken
error HMXStaking_UnknownStakingToken()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6139cb80620000f46000396000f3fe608060405234801561001057600080fd5b506004361061027d5760003560e01c806309d180751461028257806314f3f6571461029757806316dcae17146102aa5780631f1a675d146102d357806322e03ab31461030c57806323cf31181461032c578063240c8bf41461033f578063245a066e1461037257806328c63104146103955780632957c377146103b557806329da27f2146103c857806335e9c0fc1461040657806335eb107a1461042757806336a8e0971461043a5780633d9d71f21461045d5780634003468814610470578063421c40b6146104835780634385195d1461049657806345a0769a146104a95780634ba45a40146104bc57806353e649f7146104cf5780635422e780146104e25780635578abaf146104f55780635fd9848a146105085780636a13d34c1461051b578063715018a61461052e5780637266c0e3146105365780637af3989e146105495780637cd07e471461055d5780638340f5491461057057806383a44192146105835780638c37c32a146105965780638c8394f4146105a95780638da5cb5b146105bc5780638e478cab146105c457806393eb049d146105e757806396120100146105fa5780639650e3b7146106025780639d074cc014610615578063b0fcc5c014610628578063c7803a7114610648578063c89d34601461065b578063c9e0f27e1461066e578063cb852f9414610681578063dad5fda314610694578063e00e0732146106a7578063e39067e1146106ba578063f2fde38b146106cd578063f3603cca146106e0578063f3fef3a3146106f3578063f5bcf05314610706578063f8c8765e14610719578063fa28bd291461072c578063fa2cc3c014610734578063fee88cb614610747575b600080fd5b6102956102903660046131b7565b61075a565b005b6102956102a53660046132c5565b610837565b6102bd6102b8366004613312565b61093b565b6040516102ca919061332d565b60405180910390f35b6102fe6102e13660046131b7565b606560209081526000928352604080842090915290825290205481565b6040519081526020016102ca565b61031f61031a366004613312565b6109e0565b6040516102ca91906133e1565b61029561033a366004613312565b610a56565b61036261034d366004613312565b60666020526000908152604090205460ff1681565b60405190151581526020016102ca565b610362610380366004613312565b60766020526000908152604090205460ff1681565b6103a86103a33660046133f4565b610ac7565b6040516102ca919061340d565b6102956103c3366004613421565b610af1565b6103db6103d6366004613444565b610d92565b604080516001600160a01b0395861681529490931660208501529183015260608201526080016102ca565b61041961041436600461347c565b610de4565b6040516102ca9291906134dd565b610295610435366004613312565b610f65565b610362610448366004613312565b60686020526000908152604090205460ff1681565b61029561046b366004613312565b61109f565b61029561047e3660046132c5565b611110565b610295610491366004613312565b611227565b6102956104a4366004613312565b611305565b6102956104b7366004613534565b61132f565b6102fe6104ca3660046131b7565b61138a565b6102956104dd366004613551565b6113b7565b6102956104f0366004613551565b61140c565b6103a86105033660046133f4565b611461565b6075546103a8906001600160a01b031681565b61031f610529366004613312565b611471565b6102956114e5565b610295610544366004613585565b6114f9565b60775461036290600160a01b900460ff1681565b6077546103a8906001600160a01b031681565b61029561057e366004613648565b611627565b610295610591366004613312565b611632565b6102956105a4366004613648565b6117bb565b6102956105b7366004613312565b61181c565b6103a8611846565b6103626105d2366004613312565b60676020526000908152604090205460ff1681565b6071546103a8906001600160a01b031681565b61031f611855565b6103a8610610366004613444565b6118b7565b6072546103a8906001600160a01b031681565b6102fe610636366004613312565b606c6020526000908152604090205481565b6103a8610656366004613444565b6118ef565b610295610669366004613551565b61190b565b61029561067c366004613684565b611916565b606d546103a8906001600160a01b031681565b6074546103a8906001600160a01b031681565b6102956106b5366004613312565b611a01565b6102fe6106c8366004613312565b611a72565b6102956106db366004613312565b611b96565b6102956106ee3660046132c5565b611c11565b610295610701366004613444565b611c4c565b6073546103a8906001600160a01b031681565b6102956107273660046136a6565b6120b5565b61031f612458565b606e546103a8906001600160a01b031681565b6102fe6107553660046131b7565b6124b8565b6107626124cb565b6075546040517f99050ed89563dab5a9f99ac926c7d3780b183b901a0fd50b3596cf7e81aacd31916107a1916001600160a01b039091169085906136fa565b60405180910390a1607580546001600160a01b0319166001600160a01b0384811691821790925560405163095ea7b360e01b81529183169163095ea7b3916107ef9160001990600401613714565b6020604051808303816000875af115801561080e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610832919061372d565b505050565b61083f6124cb565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a1919061374a565b60ff166012146108c457604051631a6368a360e11b815260040160405180910390fd5b805160005b81811015610935576108f4848483815181106108e7576108e761376d565b602002602001015161252a565b7f1fd51fff8f08d576e50909493de7b68ddab4c9f5b882bcb129598fdc9588494a8484604051610925929190613783565b60405180910390a16001016108c9565b50505050565b6001600160a01b0381166000908152606b60209081526040808320805482518185028101850190935280835260609492939192909184015b828210156109d5576000848152602090819020604080516080810182526004860290920180546001600160a01b039081168452600180830154909116848601526002820154928401929092526003015460608301529083529092019101610973565b505050509050919050565b6001600160a01b0381166000908152606a6020908152604091829020805483518184028101840190945280845260609392830182828015610a4a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a2c575b50505050509050919050565b610a5e6124cb565b6077546040517fccc6387cee8c5c077f0ece1a1ec3d36f9f29bdfb4ed52e97a47bc96d1e5d2a0c91610a9d916001600160a01b039091169084906136fa565b60405180910390a1607780546001600160a01b0319166001600160a01b0392909216919091179055565b60708181548110610ad757600080fd5b6000918252602090912001546001600160a01b0316905081565b610af96124cb565b6001600160a01b0381166000908152606960205260408120805484908110610b2357610b2361376d565b60009182526020808320909101546001600160a01b03858116845260699092526040909220805491909216925090610b5c6001836137bd565b81548110610b6c57610b6c61376d565b60009182526020808320909101546001600160a01b03868116845260699092526040909220805491909216919086908110610ba957610ba961376d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152606990915260409020805480610bee57610bee6137d0565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0384168252606a9052604081205491505b81811015610d8b576001600160a01b038381166000908152606a6020526040902080549186169183908110610c6357610c6361376d565b6000918252602090912001546001600160a01b031603610d83576001600160a01b0383166000908152606a60205260409020610ca06001846137bd565b81548110610cb057610cb061376d565b60009182526020808320909101546001600160a01b038681168452606a9092526040909220805491909216919083908110610ced57610ced61376d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152606a90915260409020805480610d3257610d326137d0565b600082815260209020810160001990810180546001600160a01b03191690550190556001829003610d7e576001600160a01b0383166000908152606760205260409020805460ff191690555b610d8b565b600101610c2c565b5050505050565b606b6020528160005260406000208181548110610dae57600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831695509116925084565b6001600160a01b0383166000908152606b6020526040812083516060928392916001600160401b03811115610e1b57610e1b6131ea565b604051908082528060200260200182016040528015610e44578160200160208202803683370190505b506001600160a01b0388166000908152606c60205260409020549091505b8254811015610f5957858015610e9a575042838281548110610e8657610e8661376d565b906000526020600020906004020160030154115b610f595760005b8751811015610f5057878181518110610ebc57610ebc61376d565b60200260200101516001600160a01b0316848381548110610edf57610edf61376d565b60009182526020909120600160049092020101546001600160a01b031603610f4857838281548110610f1357610f1361376d565b906000526020600020906004020160020154838281518110610f3757610f3761376d565b602002602001018181525050610f50565b600101610ea1565b50600101610e62565b50949694955050505050565b607754600160a01b900460ff16610f8f5760405163185a94cb60e21b815260040160405180910390fd5b6077546001600160a01b03163314610fba576040516314e2364d60e11b815260040160405180910390fd5b6072546040516365bad36160e11b81526001600160a01b039091169063cb75a6c290610fec90849033906004016136fa565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b50506071546040516370a0823160e01b815261109c93508492506001600160a01b039091169081906370a082319061105690339060040161340d565b602060405180830381865afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109791906137e6565b612624565b50565b6110a76124cb565b6073546040517fcaa9670d093ce4b63cee262b156d0e295ec6138a8c57aeb0b8251638da7ed27c916110e6916001600160a01b039091169084906136fa565b60405180910390a1607380546001600160a01b0319166001600160a01b0392909216919091179055565b6111186124cb565b805160005b81811015610935578281815181106111375761113761376d565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a0919061374a565b60ff166012146111c357604051631a6368a360e11b815260040160405180910390fd5b6111e68382815181106111d8576111d861376d565b60200260200101518561252a565b7f9f0227eed801aebc847b45b17394f574656b88e61a4ae74e3ccada325fc7ecb88484604051611217929190613783565b60405180910390a160010161111d565b61122f6124cb565b6074546040517f15c750b66c32256d68a955f6688b5469528d734e34ff353fa71b46148e9ac85f9161126e916001600160a01b039091169084906136fa565b60405180910390a1607480546001600160a01b0319166001600160a01b0383811691821790925560735460405163095ea7b360e01b815292169163095ea7b3916112be9160001990600401613714565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061372d565b5050565b61130d6124cb565b607280546001600160a01b0319166001600160a01b0392909216919091179055565b6113376124cb565b60405181151581527f6adecc41f1ec3c2cf0d4d6be7f0336645192abad1c8827bee6e8d523163e4d0e9060200160405180910390a160778054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038083166000908152606560209081526040808320938516835292905220545b92915050565b6113bf6124cb565b7f09e93d1c0fcd1185f1b7ff6cde30be3b32e8c5efce11a855840a5e07300712296070826040516113f19291906137ff565b60405180910390a18051611301906070906020840190613121565b6114146124cb565b7f861868f6d835ac4dc46671215abc65913e7171e156e62531909be9b8105e2c23606f826040516114469291906137ff565b60405180910390a1805161130190606f906020840190613121565b606f8181548110610ad757600080fd5b6001600160a01b038116600090815260696020908152604091829020805483518184028101840190945280845260609392830182828015610a4a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a2c5750505050509050919050565b6114ed6124cb565b6114f760006127f2565b565b6115016124cb565b8151815181146115245760405163daa7535360e01b815260040160405180910390fd5b60005b81811015610935578281815181106115415761154161376d565b60200260200101516076600086848151811061155f5761155f61376d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa0314d38ce270042e817a3ba42d57958f6737517da4a930fa462ab25156445e08482815181106115d1576115d161376d565b60200260200101518483815181106115eb576115eb61376d565b60200260200101516040516116179291906001600160a01b039290921682521515602082015260400190565b60405180910390a1600101611527565b610832838383612624565b6001600160a01b0381166000908152606b602090815260408083208054606c9093529220545b8181101561093557428382815481106116735761167361376d565b90600052602060002090600402016003015411156116ab576001600160a01b0384166000908152606c60205260409020819055610935565b6117398382815481106116c0576116c061376d565b600091825260209091206004909102015484546001600160a01b03909116908590849081106116f1576116f161376d565b9060005260206000209060040201600201548584815481106117155761171561376d565b60009182526020909120600160049092020101546001600160a01b03169190612844565b82818154811061174b5761174b61376d565b60009182526020822060049091020180546001600160a01b03199081168255600180830180549092169091556002820183905560039091019190915561179190836137bd565b81036117b3576001600160a01b0384166000908152606c602052604090208290555b600101611658565b607754600160a01b900460ff166117e55760405163185a94cb60e21b815260040160405180910390fd5b6077546001600160a01b03163314611810576040516314e2364d60e11b815260040160405180910390fd5b6108328383833361289a565b6118246124cb565b607180546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b606060708054806020026020016040519081016040528092919081815260200182805480156118ad57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161188f575b5050505050905090565b606a60205281600052604060002081815481106118d357600080fd5b6000918252602090912001546001600160a01b03169150829050565b606960205281600052604060002081815481106118d357600080fd5b61109c333383612b3c565b6073546001600160a01b03166000908152606560209081526040808320338452909152902054821180611947575081155b156119655760405163ca54780f60e01b815260040160405180910390fd5b60735461197b906001600160a01b031683611c4c565b607354611993906001600160a01b0316333085612c27565b60745460405162416c7560e91b815233600482015260248101849052604481018390526001600160a01b03909116906382d8ea0090606401600060405180830381600087803b1580156119e557600080fd5b505af11580156119f9573d6000803e3d6000fd5b505050505050565b611a096124cb565b606e546040517fe97abd239615891a24b2f6413d269045fc0b00aaeaa38a6113143c8f53bf6f9291611a48916001600160a01b039091169084906136fa565b60405180910390a1606e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152606a6020908152604080832080548251818502810185019093528083528493830182828015611ad957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611abb575b505050505090506000808251905060005b81811015611b8c57838181518110611b0457611b0461376d565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b37919061340d565b602060405180830381865afa158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7891906137e6565b611b829084613867565b9250600101611aea565b5090949350505050565b611b9e6124cb565b6001600160a01b038116611c085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61109c816127f2565b3360009081526076602052604090205460ff16611c4157604051633d964cab60e21b815260040160405180910390fd5b611301823383612b3c565b607754600160a01b900460ff1615611c775760405163070690bf60e41b815260040160405180910390fd5b80600003611c985760405163ca54780f60e01b815260040160405180910390fd5b6071546001600160a01b0390811690831603611cc7576040516308cba0bb60e21b815260040160405180910390fd5b6001600160a01b03821660009081526068602052604090205460ff16611d00576040516341d8009b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152606560209081526040808320338452909152902054811115611d44576040516338d9ab4f60e21b815260040160405180910390fd5b6072546040516365bad36160e11b81526001600160a01b039091169063cb75a6c290611d7690339081906004016136fa565b600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b50506071546001600160a01b0316600081815260656020908152604080832033808552925290912054611ddb94509092508261289a565b607254600090611df4906001600160a01b031633612c48565b9050611e023384843361289a565b607254600090611e1b906001600160a01b031633612c48565b6071546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611e5190339060040161340d565b602060405180830381865afa158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9291906137e6565b90506000808411611ea4576000611eb9565b83611eaf848461387a565b611eb99190613891565b90506000611ec782846137bd565b90508015611f3b576071546001600160a01b0316639dc29fac33611eeb85876137bd565b6040518363ffffffff1660e01b8152600401611f08929190613714565b600060405180830381600087803b158015611f2257600080fd5b505af1158015611f36573d6000803e3d6000fd5b505050505b6071546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611f6c90339060040161340d565b602060405180830381865afa158015611f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fad91906137e6565b1115611feb576071546040516370a0823160e01b8152611feb9133916001600160a01b039091169081906370a082319061105690859060040161340d565b60745460405163ce61da2760e01b81526001600160a01b039091169063ce61da279061201b90339060040161340d565b602060405180830381865afa158015612038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205c91906137e6565b6071546001600160a01b0316600090815260656020908152604080832033845290915290205461208d90600461387a565b10156120ac5760405163c2b82c4b60e01b815260040160405180910390fd5b50505050505050565b600054610100900460ff16158080156120d55750600054600160ff909116105b806120f657506120e430612d4a565b1580156120f6575060005460ff166001145b6121595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611bff565b6000805460ff19166001179055801561217c576000805461ff0019166101001790555b612184612d59565b606d80546001600160a01b038088166001600160a01b03199283168117909355607180548883169084161790556073805487831690841617905560748054918616919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015612207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222b919061374a565b50607160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561227f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a3919061374a565b50607360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231b919061374a565b506074546040516301c8825160e21b81526001600160a01b039091169063072209449061234c90309060040161340d565b6020604051808303816000875af115801561236b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238f91906137e6565b5060735460745460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926123c89291169060001990600401613714565b6020604051808303816000875af11580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b919061372d565b508015610d8b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6060606f8054806020026020016040519081016040528092919081815260200182805480156118ad576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161188f575050505050905090565b60006124c48383612c48565b9392505050565b336124d4611846565b6001600160a01b0316146114f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611bff565b6125348282612d88565b612577576001600160a01b0382811660009081526069602090815260408220805460018101825590835291200180546001600160a01b0319169183169190911790555b6125818282612e12565b6125c4576001600160a01b038181166000908152606a602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b038083166000908152606860209081526040808320805460ff19166001179055928416825260679052205460ff16611301576001600160a01b0381166000908152606760205260409020805460ff191660011790555050565b607754600160a01b900460ff16801561264857506077546001600160a01b03163314155b156126665760405163070690bf60e41b815260040160405180910390fd5b6001600160a01b03821660009081526068602052604090205460ff1661269f576040516341d8009b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152606960205260408120905b815481101561274c578181815481106126d4576126d461376d565b600091825260209091200154604051630afe546360e21b81526001600160a01b0390911690632bf9518c9061270f9088908790600401613714565b600060405180830381600087803b15801561272957600080fd5b505af115801561273d573d6000803e3d6000fd5b505050508060010190506126b9565b506001600160a01b03808416600090815260656020908152604080832093881683529290529081208054849290612784908490613867565b9091555061279f90506001600160a01b038416333085612c27565b836001600160a01b0316336001600160a01b03167f74a806d614cb397aefa0c403ef3fd5585636fd7dcd944f1ee93034a1694fd4ea85856040516127e4929190613714565b60405180910390a350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6108328363a9059cbb60e01b8484604051602401612863929190613714565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e91565b6001600160a01b038316600090815260696020526040812054905b81811015612963576001600160a01b03851660009081526069602052604081208054839081106128e7576128e761376d565b60009182526020909120015460405163ccad973d60e01b81526001600160a01b039091169150819063ccad973d90612925908a908990600401613714565b600060405180830381600087803b15801561293f57600080fd5b505af1158015612953573d6000803e3d6000fd5b50505050816001019150506128b5565b506001600160a01b0380851660009081526065602090815260408083209389168352929052908120805485929061299b9084906137bd565b90915550506075546001600160a01b031615801590612a2b5750607554604051635d5cd56b60e11b81526000916001600160a01b03169063bab9aad6906129e690889060040161340d565b6020604051808303816000875af1158015612a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2991906137e6565b115b15612ade576075546040516307750c9f60e41b81526001600160a01b0390911690637750c9f090612a64908890889088906004016138b3565b600060405180830381600087803b158015612a7e57600080fd5b505af1158015612a92573d6000803e3d6000fd5b50505050846001600160a01b03167f2fc1f18596034cb2ddb006d08dcf975a7db7a5439e0fe69f180e4916d3f42eeb8585604051612ad1929190613714565b60405180910390a2610d8b565b612af26001600160a01b0385168385612844565b846001600160a01b03167f9207361cc2a04b9c7a06691df1eb87c6a63957ae88bf01d0d18c81e3d12720998585604051612b2d929190613714565b60405180910390a25050505050565b805160005b81811015610d8b5760676000848381518110612b5f57612b5f61376d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612ba3576040516372b430fd60e11b815260040160405180910390fd5b828181518110612bb557612bb561376d565b60200260200101516001600160a01b031663cb75a6c286866040518363ffffffff1660e01b8152600401612bea9291906136fa565b600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b50505050806001019050612b41565b610935846323b872dd60e01b858585604051602401612863939291906138b3565b6001600160a01b0382166000908152606a6020908152604080832080548251818502810185019093528083528493830182828015612caf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c91575b505050505090506000808251905060005b81811015612d3f5760656000858381518110612cde57612cde61376d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b031681526020019081526020016000205483612d359190613867565b9250600101612cc0565b509095945050505050565b6001600160a01b03163b151590565b600054610100900460ff16612d805760405162461bcd60e51b8152600401611bff906138d7565b6114f7612f63565b6001600160a01b038216600090815260696020526040812054815b81811015612e07576001600160a01b03858116600090815260696020526040902080549186169183908110612dda57612dda61376d565b6000918252602090912001546001600160a01b031603612dff576001925050506113b1565b600101612da3565b506000949350505050565b6001600160a01b0381166000908152606a6020526040812054815b81811015612e07576001600160a01b038481166000908152606a6020526040902080549187169183908110612e6457612e6461376d565b6000918252602090912001546001600160a01b031603612e89576001925050506113b1565b600101612e2d565b6000612ee6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f939092919063ffffffff16565b8051909150156108325780806020019051810190612f04919061372d565b6108325760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611bff565b600054610100900460ff16612f8a5760405162461bcd60e51b8152600401611bff906138d7565b6114f7336127f2565b6060612fa28484600085612faa565b949350505050565b60608247101561300b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611bff565b600080866001600160a01b031685876040516130279190613946565b60006040518083038185875af1925050503d8060008114613064576040519150601f19603f3d011682016040523d82523d6000602084013e613069565b606091505b509150915061307a87838387613085565b979650505050505050565b606083156130f25782516000036130eb5761309f85612d4a565b6130eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611bff565b5081612fa2565b612fa283838151156131075781518083602001fd5b8060405162461bcd60e51b8152600401611bff9190613962565b828054828255906000526020600020908101928215613176579160200282015b8281111561317657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613141565b50613182929150613186565b5090565b5b808211156131825760008155600101613187565b80356001600160a01b03811681146131b257600080fd5b919050565b600080604083850312156131ca57600080fd5b6131d38361319b565b91506131e16020840161319b565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613228576132286131ea565b604052919050565b60006001600160401b03821115613249576132496131ea565b5060051b60200190565b600082601f83011261326457600080fd5b8135602061327961327483613230565b613200565b82815260059290921b8401810191818101908684111561329857600080fd5b8286015b848110156132ba576132ad8161319b565b835291830191830161329c565b509695505050505050565b600080604083850312156132d857600080fd5b6132e18361319b565b915060208301356001600160401b038111156132fc57600080fd5b61330885828601613253565b9150509250929050565b60006020828403121561332457600080fd5b6124c48261319b565b602080825282518282018190526000919060409081850190868401855b8281101561339057815180516001600160a01b0390811686528782015116878601528581015186860152606090810151908501526080909301929085019060010161334a565b5091979650505050505050565b600081518084526020808501945080840160005b838110156133d65781516001600160a01b0316875295820195908201906001016133b1565b509495945050505050565b6020815260006124c4602083018461339d565b60006020828403121561340657600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561343457600080fd5b823591506131e16020840161319b565b6000806040838503121561345757600080fd5b6134608361319b565b946020939093013593505050565b801515811461109c57600080fd5b60008060006060848603121561349157600080fd5b61349a8461319b565b925060208401356001600160401b038111156134b557600080fd5b6134c186828701613253565b92505060408401356134d28161346e565b809150509250925092565b6040815260006134f0604083018561339d565b82810360208481019190915284518083528582019282019060005b818110156135275784518352938301939183019160010161350b565b5090979650505050505050565b60006020828403121561354657600080fd5b81356124c48161346e565b60006020828403121561356357600080fd5b81356001600160401b0381111561357957600080fd5b612fa284828501613253565b6000806040838503121561359857600080fd5b82356001600160401b03808211156135af57600080fd5b6135bb86838701613253565b93506020915081850135818111156135d257600080fd5b85019050601f810186136135e557600080fd5b80356135f361327482613230565b81815260059190911b8201830190838101908883111561361257600080fd5b928401925b8284101561363957833561362a8161346e565b82529284019290840190613617565b80955050505050509250929050565b60008060006060848603121561365d57600080fd5b6136668461319b565b92506136746020850161319b565b9150604084013590509250925092565b6000806040838503121561369757600080fd5b50508035926020909101359150565b600080600080608085870312156136bc57600080fd5b6136c58561319b565b93506136d36020860161319b565b92506136e16040860161319b565b91506136ef6060860161319b565b905092959194509250565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561373f57600080fd5b81516124c48161346e565b60006020828403121561375c57600080fd5b815160ff811681146124c457600080fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0383168152604060208201819052600090612fa29083018461339d565b634e487b7160e01b600052601160045260246000fd5b818103818111156113b1576113b16137a7565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156137f857600080fd5b5051919050565b6000604082016040835280855480835260608501915086600052602092508260002060005b828110156138495781546001600160a01b031684529284019260019182019101613824565b5050508381038285015261385d818661339d565b9695505050505050565b808201808211156113b1576113b16137a7565b80820281158282048414176113b1576113b16137a7565b6000826138ae57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561393d578181015183820152602001613925565b50506000910152565b60008251613958818460208701613922565b9190910192915050565b6020815260008251806020840152613981816040850160208701613922565b601f01601f1916919091016040019291505056fea26469706673582212209f05650cc096d867850beb1e549aeeae6b7184a8e5751b916843586c193a437364736f6c63430008120033