0 txs
0 calls
constructor
No constructor.
functions
claimable
viewfunction claimable(address, address) view returns (uint256)
claimableRewards
viewfunction claimableRewards(address account) view returns (address[], uint256[])
fee
viewfunction fee() view returns (uint8)
getRewardRatesPerSecond
viewfunction getRewardRatesPerSecond() view returns (address[] rewardAddresses, uint256[] rewardRatesPerSecond)
managers
viewfunction managers(address) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
rewardData
viewfunction rewardData(address) view returns (uint256 amount, uint256 lastTimeUpdated, uint256 rewardPerToken)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
stakingToken
viewfunction stakingToken() view returns (address)
totalBalance
viewfunction totalBalance(address user) view returns (uint256)
totalStakes
viewfunction totalStakes() view returns (uint256)
totalUnclaimedRewards
viewfunction totalUnclaimedRewards() view returns (address[] rewardAddresses, uint256[] rewardAmounts)
userData
viewfunction userData(address) view returns (uint256 tokenAmount, uint256 lastTimeUpdated, uint256 tokenClaimable)
addReward
nonpayablefunction addReward(address _rewardToken)
getAllRewards
nonpayablefunction getAllRewards()
getReward
nonpayablefunction getReward(address _onBehalfOf, address[] _rewardTokens)
initialize
nonpayablefunction initialize(address[] _rewardTokens)
pause
nonpayablefunction pause()
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, uint256 tokenAmount)
removeManagers
nonpayablefunction removeManagers(address[] _managers)
removeRewardToken
nonpayablefunction removeRewardToken(address _rewardToken)
renounceOwnership
nonpayablefunction renounceOwnership()
setFee
nonpayablefunction setFee(uint8 _fee)
setManagers
nonpayablefunction setManagers(address[] _managers)
setStakingToken
nonpayablefunction setStakingToken(address _stakingToken)
stake
nonpayablefunction stake(uint256 amount, address onBehalfOf)
stakeAll
nonpayablefunction stakeAll(address onBehalfOf)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unstake
nonpayablefunction unstake(uint256 amount)
events
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Recovered
event Recovered(address indexed token, uint256 amount)
RewardPaid
event RewardPaid(address indexed user, address indexed rewardToken, uint256 reward)
SetFee
event SetFee(uint8 fee)
Stake
event Stake(address indexed user, uint256 amount)
Unpaused
event Unpaused(address account)
Unstake
event Unstake(address indexed user, uint256 receivedAmount)
errors
ActiveReward
error ActiveReward()
AddressZero
error AddressZero()
InsufficientPermission
error InsufficientPermission()
InvalidAmount
error InvalidAmount()
InvalidBurn
error InvalidBurn()
InvalidToken
error InvalidToken()
creation bytecode
0x6080604052609f805460ff1916600717905534801561001c575f80fd5b5060016097556139bb8061002f5f395ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c80637bb7bed111610109578063cb122a091161009e578063ddca3f431161006e578063ddca3f431461045a578063e220011714610479578063f2fde38b14610481578063fdff9b4d14610494575f80fd5b8063cb122a09146103f7578063d1bbdfa11461040a578063d4570c1c1461041d578063dc01f60d14610447575f80fd5b80639c9b2e21116100d95780639c9b2e211461039a578063a224cee7146103ad578063bf9befb1146103c0578063c8910913146103c9575f80fd5b80637bb7bed11461035b5780638456cb591461036e5780638980f11f146103765780638da5cb5b14610389575f80fd5b806345b35f561161017f5780636eacd3981161014f5780636eacd398146102df578063715018a61461031557806372f702f31461031d5780637acb775714610348575f80fd5b806345b35f561461025c57806348e5d9f8146102645780635c975abb146102b257806369f066a3146102c9575f80fd5b806331279d3d116101ba57806331279d3d1461021b578063367caa091461022e5780633d509c97146102415780633f4ba83a14610254575f80fd5b806310f3ee29146101e05780631e9b12ef146101f55780632e17de7814610208575b5f80fd5b6101f36101ee36600461334c565b6104b6565b005b6101f36102033660046133df565b610582565b6101f36102163660046133fa565b6105fd565b6101f36102293660046134b9565b610686565b6101f361023c36600461334c565b6106a6565b6101f361024f3660046133df565b61076d565b6101f3610856565b6101f3610868565b6102926102723660046133df565b609b6020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b60335460ff165b60405190151581526020016102a9565b6102d16108da565b6040516102a9929190613506565b6103076102ed3660046133df565b6001600160a01b03165f908152609c602052604090205490565b6040519081526020016102a9565b6101f3610cf4565b609854610330906001600160a01b031681565b6040516001600160a01b0390911681526020016102a9565b6101f3610356366004613588565b610d05565b6103306103693660046133fa565b610d17565b6101f3610d3f565b6101f36103843660046135b6565b610d4f565b6065546001600160a01b0316610330565b6101f36103a83660046133df565b610e2c565b6101f36103bb3660046135e0565b610fc1565b61030760995481565b6102926103d73660046133df565b609c6020525f908152604090208054600182015460029092015490919083565b6101f3610405366004613612565b61119d565b6101f36104183660046133df565b611231565b61030761042b366004613632565b609d60209081525f928352604080842090915290825290205481565b6102d16104553660046133df565b6112ba565b609f546104679060ff1681565b60405160ff90911681526020016102a9565b6102d161169d565b6101f361048f3660046133df565b611a06565b6102b96104a23660046133df565b609e6020525f908152604090205460ff1681565b6104be611a7c565b805f5b8181101561057c575f8484838181106104dc576104dc61365e565b90506020020160208101906104f191906133df565b6001600160a01b03160361051857604051639fabe1c160e01b815260040160405180910390fd5b5f609e5f86868581811061052e5761052e61365e565b905060200201602081019061054391906133df565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061057481613686565b9150506104c1565b50505050565b61058a611a7c565b6001600160a01b0381166105b157604051639fabe1c160e01b815260040160405180910390fd5b6098546001600160a01b0316156105db57604051639fabe1c160e01b815260040160405180910390fd5b609880546001600160a01b0319166001600160a01b0392909216919091179055565b610605611ad6565b61060d611b2f565b6106178133611b75565b61067933609a80548060200260200160405190810160405280929190818152602001828054801561066f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610651575b5050505050611c93565b6106836001609755565b50565b61068e611ad6565b6106988282611c93565b6106a26001609755565b5050565b6106ae611a7c565b805f5b8181101561057c575f8484838181106106cc576106cc61365e565b90506020020160208101906106e191906133df565b6001600160a01b03160361070857604051639fabe1c160e01b815260040160405180910390fd5b6001609e5f86868581811061071f5761071f61365e565b905060200201602081019061073491906133df565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061076581613686565b9150506106b1565b610775611a7c565b5f8061078083611e20565b91509150816107a25760405163c1ab6dc160e01b815260040160405180910390fd5b6107aa611e8c565b609a80546107ba9060019061369e565b815481106107ca576107ca61365e565b5f91825260209091200154609a80546001600160a01b0390921691839081106107f5576107f561365e565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550609a805480610831576108316136b7565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b61085e611a7c565b6108666120e0565b565b610870611ad6565b6108d033609a80548060200260200160405190810160405280929190818152602001828054801561066f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610651575050505050611c93565b6108666001609755565b6060805f60985f9054906101000a90046001600160a01b03166001600160a01b03166374cc0d1a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095291906136cb565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b0316636bb1972d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906136cb565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b031663dd56e5d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4091906136e2565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab791906136e2565b6040805160028082526060820183529293509190602083019080368337505060408051600280825260608201835293995092915060208301908036833750506098546040805163f7c618c160e01b815290519398506001600160a01b039091169263f7c618c1925060048083019260209291908290030181865afa158015610b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6591906136e2565b865f81518110610b7757610b7761365e565b6001600160a01b039283166020918202929092018101919091526098546040805163ef405caf60e01b81529051919093169263ef405caf9260048083019391928290030181865afa158015610bce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf291906136e2565b86600181518110610c0557610c0561365e565b60200260200101906001600160a01b031690816001600160a01b0316815250505f80610c32868585612132565b915091505f80610c43878787612132565b609f54919350915060ff16610c596001826136fd565b60ff16610c668487613716565b610c709190613729565b610c7a9190613740565b895f81518110610c8c57610c8c61365e565b6020908102919091010152609f5460ff16610ca86001826136fd565b60ff16610cb58386613716565b610cbf9190613729565b610cc99190613740565b89600181518110610cdc57610cdc61365e565b60200260200101818152505050505050505050509091565b610cfc611a7c565b6108665f61235c565b610d0d611ad6565b61069882826123ad565b609a8181548110610d26575f80fd5b5f918252602090912001546001600160a01b0316905081565b610d47611a7c565b610866612494565b610d57611a7c565b6001600160a01b0382165f908152609b602052604090206001015415610d9057604051637e2e4d1360e01b815260040160405180910390fd5b6098546001600160a01b0390811690831603610dbf5760405163c1ab6dc160e01b815260040160405180910390fd5b610de5610dd46065546001600160a01b031690565b6001600160a01b03841690836124d1565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2882604051610e2091815260200190565b60405180910390a25050565b6001600160a01b0381161580610e4f57506098546001600160a01b038281169116145b15610e6d5760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b0381165f908152609b602052604090206001015415610ea65760405163c1ab6dc160e01b815260040160405180910390fd5b5f610eb082611e20565b5090508015610ed257604051637e2e4d1360e01b815260040160405180910390fd5b335f908152609e602052604090205460ff16610f0157604051630deda90360e41b815260040160405180910390fd5b5f5b609a54811015610f6e57826001600160a01b0316609a8281548110610f2a57610f2a61365e565b5f918252602090912001546001600160a01b031603610f5c57604051637e2e4d1360e01b815260040160405180910390fd5b80610f6681613686565b915050610f03565b5050609a80546001810182555f919091527f44da158ba27f9252712a74ff6a55c5d531f69609f1f6e7f17c4443a8e2089be40180546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff1615808015610fdf57505f54600160ff909116105b80610ff85750303b158015610ff857505f5460ff166001145b6110605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611081575f805461ff0019166101001790555b5f5b8251811015611137575f6001600160a01b03168382815181106110a8576110a861365e565b60200260200101516001600160a01b0316036110d75760405163eeddf6ab60e01b815260040160405180910390fd5b609a8382815181106110eb576110eb61365e565b60209081029190910181015182546001810184555f938452919092200180546001600160a01b0319166001600160a01b039092169190911790558061112f81613686565b915050611083565b50609f805460ff1916600717905561114d612534565b611155612562565b80156106a2575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6111a5611a7c565b5f8160ff16116111e95760405162461bcd60e51b815260206004820152600f60248201526e0466565206d757374206265203e203608c1b6044820152606401611057565b609f805460ff191660ff83169081179091556040519081527f91f2ade82ab0e77bb6823899e6daddc07e3da0e3ad998577e7c09c2f38943c439060200160405180910390a150565b611239611ad6565b6098546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561127f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a391906136cb565b90506112af81836123ad565b506106836001609755565b6060805f609a8054905067ffffffffffffffff8111156112dc576112dc613411565b604051908082528060200260200182016040528015611305578160200160208202803683370190505b5090505f806113126108da565b915091505f5b609a54811015611633575f609a82815481106113365761133661365e565b5f9182526020808320909101546001600160a01b0316808352609b825260408084208151606081018352815481526001820154948101949094526002015490830181905287519194509192879161138f5761138f61365e565b60200260200101516001600160a01b0316836001600160a01b031614806113e15750856001815181106113c4576113c461365e565b60200260200101516001600160a01b0316836001600160a01b0316145b15611511575f865f815181106113f9576113f961365e565b60200260200101516001600160a01b0316846001600160a01b031614611439578560018151811061142c5761142c61365e565b6020026020010151611454565b855f8151811061144b5761144b61365e565b60200260200101515b6040516370a0823160e01b81523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561149b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114bf91906136cb565b6099549091501561150e5783515f906114d88484613716565b6114e2919061369e565b9050611500816ec097ce7bc90715b34b9f1000000000609954612590565b61150a9085613716565b9350505b50505b6001600160a01b03808b165f818152609c602081815260408084209589168452600386018252832054938352526001909201549091901580159061156b57506001600160a01b038c165f908152609c602052604090205415155b156115ad576115aa61157d838561369e565b6001600160a01b038e165f908152609c60205260409020546ec097ce7bc90715b34b9f1000000000612590565b90505b80609d5f876001600160a01b03166001600160a01b031681526020019081526020015f205f8e6001600160a01b03166001600160a01b031681526020019081526020015f20546115fd9190613716565b89878151811061160f5761160f61365e565b6020026020010181815250505050505050808061162b90613686565b915050611318565b50609a838180548060200260200160405190810160405280929190818152602001828054801561168a57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161166c575b5050505050915094509450505050915091565b6060805f60985f9054906101000a90046001600160a01b03166001600160a01b03166374cc0d1a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171591906136cb565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b0316636bb1972d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611768573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178c91906136cb565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b031663dd56e5d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180391906136e2565b90505f60985f9054906101000a90046001600160a01b03166001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a91906136e2565b6040805160028082526060820183529293509190602083019080368337505060408051600280825260608201835293995092915060208301908036833750506098546040805163f7c618c160e01b815290519398506001600160a01b039091169263f7c618c1925060048083019260209291908290030181865afa158015611904573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192891906136e2565b865f8151811061193a5761193a61365e565b6001600160a01b039283166020918202929092018101919091526098546040805163ef405caf60e01b81529051919093169263ef405caf9260048083019391928290030181865afa158015611991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906136e2565b866001815181106119c8576119c861365e565b60200260200101906001600160a01b031690816001600160a01b0316815250505f806119f5868585612625565b915091505f80610c43878787612625565b611a0e611a7c565b6001600160a01b038116611a735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611057565b6106838161235c565b6065546001600160a01b031633146108665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611057565b600260975403611b285760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611057565b6002609755565b60335460ff16156108665760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401611057565b6001600160a01b0381165f908152609c602052604090208054831115611bae5760405163162908e360e11b815260040160405180910390fd5b611bb6611e8c565b5f5b609a54811015611c0457611bf283609a8381548110611bd957611bd961365e565b5f918252602090912001546001600160a01b0316612a51565b80611bfc81613686565b915050611bb8565b5082815f015f828254611c17919061369e565b925050819055508260995f828254611c2f919061369e565b9091555050609854611c4b906001600160a01b031683856124d1565b816001600160a01b03167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd84604051611c8691815260200190565b60405180910390a2505050565b611c9b611b2f565b5f5b8151811015611e1b575f828281518110611cb957611cb961365e565b602002602001015190505f611ccd82611e20565b50905080611cee5760405163c1ab6dc160e01b815260040160405180910390fd5b611cf6611e8c565b6001600160a01b0382165f908152609b60205260409020611d178684612a51565b6001600160a01b038084165f908152609d60209081526040808320938a168352929052205415611e05576001600160a01b038084165f908152609d60209081526040808320938a16835292905290812054825490918291849190611d7c90849061369e565b90915550506001600160a01b038085165f818152609d60209081526040808320948c16835293905291822091909155611db69088836124d1565b836001600160a01b0316876001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e83604051611dfb91815260200190565b60405180910390a3505b5050508080611e1390613686565b915050611c9d565b505050565b609a545f908190815b81811015611e8557846001600160a01b0316609a8281548110611e4e57611e4e61365e565b5f918252602090912001546001600160a01b031603611e735760019350809250611e85565b80611e7d81613686565b915050611e29565b5050915091565b611e94611b2f565b60985f9054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611ee0575f80fd5b505af1158015611ef2573d5f803e3d5ffd5b505050505f5b609a54811015610683575f609a8281548110611f1657611f1661365e565b5f918252602090912001546099546001600160a01b039091169150156120cd576001600160a01b0381165f818152609b602052604080822090516370a0823160e01b81523060048201529092906370a0823190602401602060405180830381865afa158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab91906136cb565b90505f825f0154821115612089578254611fc5908361369e565b9050801561208957612003611fe26065546001600160a01b031690565b609f54611ff29060ff1684613740565b6001600160a01b03871691906124d1565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015612045573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206991906136cb565b609f5490925061207c9060ff1682613740565b612086908261369e565b90505b80156120c3576120ab816ec097ce7bc90715b34b9f1000000000609954612590565b836002015f8282546120bd9190613716565b90915550505b5042600183015590555b50806120d881613686565b915050611ef8565b6120e8612b60565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80841561235457604051630b02c43d60e41b8152600481018690525f906001600160a01b0386169063b02c43d090602401602060405180830381865afa15801561217f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a391906136cb565b6040516332dc5a2560e01b81526001600160a01b0386811660048301529192505f918716906332dc5a2590602401602060405180830381865afa1580156121ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221091906136e2565b90505f805f805f8a6001600160a01b031663de2356d16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612253573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227791906136e2565b6040516313f354cd60e11b8152600481018e9052602481018990526001600160a01b0391909116906327e6a99a9060440160a060405180830381865afa1580156122c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e79190613786565b945094509450945094505f806122fe888787612ba9565b9150915083821461232657612323848303886001600160801b0316600160801b612590565b9a505b82811461234a57612347838203886001600160801b0316600160801b612590565b99505b5050505050505050505b935093915050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6123b5611b2f565b81156106a2576123c3611e8c565b5f5b609a548110156123f8576123e682609a8381548110611bd957611bd961365e565b806123f081613686565b9150506123c5565b506001600160a01b0381165f908152609c60205260408120805490918491839190612424908490613716565b925050819055508260995f82825461243c9190613716565b9091555050609854612459906001600160a01b0316333086612f0d565b816001600160a01b03167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a84604051611c8691815260200190565b61249c611b2f565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121153390565b6040516001600160a01b038316602482015260448101829052611e1b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f45565b5f54610100900460ff1661255a5760405162461bcd60e51b8152600401611057906137d8565b610866613018565b5f54610100900460ff166125885760405162461bcd60e51b8152600401611057906137d8565b61086661304a565b5f838302815f19858709828110838203039150508084116125af575f80fd5b805f036125c15750829004905061261e565b838587095f8581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290505b9392505050565b5f80841561235457604051630b02c43d60e41b8152600481018690525f906001600160a01b0386169063b02c43d090602401602060405180830381865afa158015612672573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269691906136cb565b6040516332dc5a2560e01b81526001600160a01b0386811660048301529192505f918716906332dc5a2590602401602060405180830381865afa1580156126df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270391906136e2565b90505f805f886001600160a01b031663de2356d16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612744573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276891906136e2565b6040516313f354cd60e11b8152600481018c9052602481018790526001600160a01b0391909116906327e6a99a9060440160a060405180830381865afa1580156127b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d89190613786565b50509250925092505f836001600160801b03161115612a44575f846001600160a01b03166346caf2ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128529190613823565b90506001600160801b03811615612a42575f80866001600160a01b031663a88a5c166040518163ffffffff1660e01b81526004016040805180830381865afa1580156128a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c4919061383c565b915091505f876001600160a01b0316638e76c3326040518163ffffffff1660e01b8152600401602060405180830381865afa158015612905573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612929919061386d565b90508560020b8160020b1215801561294657508460020b8160020b125b1561234a57612971836001600160801b0316886001600160801b0316866001600160801b0316612590565b9a50612999826001600160801b0316886001600160801b0316866001600160801b0316612590565b99505f80896001600160a01b031663f0de82286040518163ffffffff1660e01b81526004016040805180830381865afa1580156129d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129fc919061383c565b91509150816001600160801b03168d1115612a1e57816001600160801b03169c505b806001600160801b03168c1115612a3c57806001600160801b03169b505b50505050505b505b5050505050935093915050565b6001600160a01b038083165f908152609c602090815260408083209385168352609b825291829020825160608101845281548152600180830154938201939093526002909101549281019290925282015415801590612ab05750815415155b15612b35576001600160a01b0383165f908152600383016020526040908190205490820151612af991612ae29161369e565b83546ec097ce7bc90715b34b9f1000000000612590565b6001600160a01b038085165f908152609d6020908152604080832093891683529290529081208054909190612b2f908490613716565b90915550505b6040908101516001600160a01b039093165f9081526003830160205220919091554260019091015550565b60335460ff166108665760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401611057565b5f805f856001600160a01b031663d576dfc06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612be8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c0c9190613886565b612c1c9063ffffffff164261369e565b90505f80876001600160a01b0316635e075b536040518163ffffffff1660e01b81526004016040805180830381865afa158015612c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7f91906138a9565b915091505f886001600160a01b0316638e76c3326040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce4919061386d565b90508315612eef575f896001600160a01b03166346caf2ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d4d9190613823565b90506001600160801b03811615612eed575f808b6001600160a01b031663a88a5c166040518163ffffffff1660e01b81526004016040805180830381865afa158015612d9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dbf919061383c565b915091505f808d6001600160a01b031663f0de82286040518163ffffffff1660e01b81526004016040805180830381865afa158015612e00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e24919061383c565b90925090505f612e3d8a6001600160801b038716613729565b90505f612e538b6001600160801b038716613729565b9050836001600160801b0316821115612e7357836001600160801b031691505b826001600160801b0316811115612e9057506001600160801b0382165b8115612ebb57612eae82600160801b896001600160801b0316612590565b612eb8908b613716565b99505b8015612ee657612ed981600160801b896001600160801b0316612590565b612ee3908a613716565b98505b5050505050505b505b612efd898989848787613079565b9550955050505050935093915050565b6040516001600160a01b038085166024830152831660448201526064810182905261057c9085906323b872dd60e01b906084016124fd565b5f612f99826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131c29092919063ffffffff16565b905080515f1480612fb9575080806020019051810190612fb991906138cb565b611e1b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611057565b5f54610100900460ff1661303e5760405162461bcd60e51b8152600401611057906137d8565b6033805460ff19169055565b5f54610100900460ff166130705760405162461bcd60e51b8152600401611057906137d8565b6108663361235c565b60405163f30dba9360e01b8152600286900b60048201525f908190819081906001600160a01b038b169063f30dba939060240160c060405180830381865afa1580156130c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130eb91906138ea565b60405163f30dba9360e01b815260028f900b600482015291975095505f94508493506001600160a01b038f16925063f30dba93915060240160c060405180830381865afa15801561313e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061316291906138ea565b95509550505050508a60020b8960020b121561318757818403955080830394506131b3565b8960020b8960020b12156131a85781848903039550808388030394506131b3565b838203955082810394505b50505050965096945050505050565b60606131d084845f856131d8565b949350505050565b6060824710156132395760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611057565b5f80866001600160a01b03168587604051613254919061396e565b5f6040518083038185875af1925050503d805f811461328e576040519150601f19603f3d011682016040523d82523d5f602084013e613293565b606091505b50915091506132a4878383876132af565b979650505050505050565b6060831561331d5782515f03613316576001600160a01b0385163b6133165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611057565b50816131d0565b6131d083838151156133325781518083602001fd5b8060405162461bcd60e51b81526004016110579190613989565b5f806020838503121561335d575f80fd5b823567ffffffffffffffff80821115613374575f80fd5b818501915085601f830112613387575f80fd5b813581811115613395575f80fd5b8660208260051b85010111156133a9575f80fd5b60209290920196919550909350505050565b6001600160a01b0381168114610683575f80fd5b80356133da816133bb565b919050565b5f602082840312156133ef575f80fd5b813561261e816133bb565b5f6020828403121561340a575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613434575f80fd5b8135602067ffffffffffffffff8083111561345157613451613411565b8260051b604051601f19603f8301168101818110848211171561347657613476613411565b604052938452858101830193838101925087851115613493575f80fd5b83870191505b848210156132a4576134aa826133cf565b83529183019190830190613499565b5f80604083850312156134ca575f80fd5b82356134d5816133bb565b9150602083013567ffffffffffffffff8111156134f0575f80fd5b6134fc85828601613425565b9150509250929050565b604080825283519082018190525f906020906060840190828701845b828110156135475781516001600160a01b031684529284019290840190600101613522565b505050838103828501528451808252858301918301905f5b8181101561357b5783518352928401929184019160010161355f565b5090979650505050505050565b5f8060408385031215613599575f80fd5b8235915060208301356135ab816133bb565b809150509250929050565b5f80604083850312156135c7575f80fd5b82356135d2816133bb565b946020939093013593505050565b5f602082840312156135f0575f80fd5b813567ffffffffffffffff811115613606575f80fd5b6131d084828501613425565b5f60208284031215613622575f80fd5b813560ff8116811461261e575f80fd5b5f8060408385031215613643575f80fd5b823561364e816133bb565b915060208301356135ab816133bb565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161369757613697613672565b5060010190565b818103818111156136b1576136b1613672565b92915050565b634e487b7160e01b5f52603160045260245ffd5b5f602082840312156136db575f80fd5b5051919050565b5f602082840312156136f2575f80fd5b815161261e816133bb565b60ff82811682821603908111156136b1576136b1613672565b808201808211156136b1576136b1613672565b80820281158282048414176136b1576136b1613672565b5f8261375a57634e487b7160e01b5f52601260045260245ffd5b500490565b80516001600160801b03811681146133da575f80fd5b8051600281900b81146133da575f80fd5b5f805f805f60a0868803121561379a575f80fd5b6137a38661375f565b94506137b160208701613775565b93506137bf60408701613775565b6060870151608090970151959894975095949392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613833575f80fd5b61261e8261375f565b5f806040838503121561384d575f80fd5b6138568361375f565b91506138646020840161375f565b90509250929050565b5f6020828403121561387d575f80fd5b61261e82613775565b5f60208284031215613896575f80fd5b815163ffffffff8116811461261e575f80fd5b5f80604083850312156138ba575f80fd5b505080516020909101519092909150565b5f602082840312156138db575f80fd5b8151801515811461261e575f80fd5b5f805f805f8060c087890312156138ff575f80fd5b86519550602087015180600f0b8114613916575f80fd5b945061392460408801613775565b935061393260608801613775565b92506080870151915060a087015190509295509295509295565b5f5b8381101561396657818101518382015260200161394e565b50505f910152565b5f825161397f81846020870161394c565b9190910192915050565b602081525f82518060208401526139a781604085016020870161394c565b601f01601f1916919091016040019291505056