0 txs
13.8k calls
constructor
constructor(address _staking)
functions
allocPointsByReward
viewfunction allocPointsByReward(address rewardToken) view returns (address[], uint48[])
allocPointsByStake
viewfunction allocPointsByStake(address stakingToken) view returns (address[], uint48[])
getRewards
viewfunction getRewards(address stakingToken, address user) view returns (address[], uint256[])
owner
viewfunction owner() view returns (address)
renounceOwnership
viewfunction renounceOwnership() view
rewardDetails
viewfunction rewardDetails(address rewardToken) view returns (tuple)
rewardTokens
viewfunction rewardTokens() view returns (address[])
staking
viewfunction staking() view returns (address)
connect
nonpayablefunction connect(address stakingToken)
extendReward
payablefunction extendReward(address rewardToken, uint256 amount) payable
onUpdate
nonpayablefunction onUpdate(address stakingToken, address user, uint256 oldStake, uint256 oldSupply, uint256)
setAllocPoints
nonpayablefunction setAllocPoints(address rewardToken, address[] stakingTokens, uint48[] allocPoints)
setReward
payablefunction setReward(address rewardToken, uint256 amount, uint48 start, uint48 duration) payable
stopReward
nonpayablefunction stopReward(address rewardToken, address receiver, bool pullTokens)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AllocPointsSet
event AllocPointsSet(address indexed rewardToken, address[] indexed stakeToken, uint48[] allocPoint)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolRegistered
event PoolRegistered(address indexed rewardToken, address indexed stakeToken)
RewarderConnected
event RewarderConnected(address indexed stakingToken)
RewardExtended
event RewardExtended(address indexed rewardToken, uint256 amountAdded, uint48 newEnd)
RewardRegistered
event RewardRegistered(address indexed rewardToken)
RewardsClaimed
event RewardsClaimed(address indexed user, address[] rewardTokens, uint256[] amounts)
RewardSet
event RewardSet(address indexed rewardToken, uint256 amountAdded, uint256 amountPeriod, uint48 start, uint48 duration)
RewardStopped
event RewardStopped(address indexed rewardToken, address indexed receiver, bool pullTokens)
errors
MultiRewarderDisconnectedStakingToken
error MultiRewarderDisconnectedStakingToken(address token)
MultiRewarderIncorrectNative
error MultiRewarderIncorrectNative(uint256 expected, uint256 actual)
MultiRewarderMaxActiveRewardTokens
error MultiRewarderMaxActiveRewardTokens()
MultiRewarderMaxPoolsForRewardToken
error MultiRewarderMaxPoolsForRewardToken()
MultiRewarderNativeTransferFailed
error MultiRewarderNativeTransferFailed(address to, uint256 amount)
MultiRewarderPoolFinished
error MultiRewarderPoolFinished(address rewardToken)
MultiRewarderRenounceOwnershipDisabled
error MultiRewarderRenounceOwnershipDisabled()
MultiRewarderStartInPast
error MultiRewarderStartInPast(uint256 start)
MultiRewarderUnauthorizedCaller
error MultiRewarderUnauthorizedCaller(address caller)
MultiRewarderUnregisteredToken
error MultiRewarderUnregisteredToken(address token)
MultiRewarderZeroDuration
error MultiRewarderZeroDuration()
MultiRewarderZeroRewardRate
error MultiRewarderZeroRewardRate()
RewarderAlreadyConnected
error RewarderAlreadyConnected(address stakingToken)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162002edc38038062002edc8339810160408190526200003491620000a1565b6200003f3362000051565b6001600160a01b0316608052620000d3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b457600080fd5b81516001600160a01b0381168114620000cc57600080fd5b9392505050565b608051612dca62000112600039600081816101140152818161076e01528181610816015281816109f101528181610f1d0152611a790152612dca6000f3fe6080604052600436106100e85760003560e01c8063aed457c81161008a578063cf17240311610059578063cf17240314610285578063ee8f931b14610399578063f2fde38b146103b9578063f42395f2146103d957600080fd5b8063aed457c814610210578063aeefd1fc14610230578063c1ef636414610250578063c2b18aa01461026357600080fd5b8063715018a6116100c6578063715018a614610181578063779bcb9b1461019657806380520969146101c45780638da5cb5b146101f257600080fd5b8063406b15cd146100ed5780634cf088d9146101025780635a564e8614610153575b600080fd5b6101006100fb36600461268f565b6103f9565b005b34801561010e57600080fd5b506101367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e3660046126bb565b610593565b60405161014a929190612756565b34801561018d57600080fd5b506101006105aa565b3480156101a257600080fd5b506101b66101b1366004612784565b6105e4565b60405161014a9291906127bd565b3480156101d057600080fd5b506101e46101df3660046126bb565b6108c3565b60405161014a929190612814565b3480156101fe57600080fd5b506000546001600160a01b0316610136565b34801561021c57600080fd5b5061010061022b366004612879565b6108d1565b34801561023c57600080fd5b5061010061024b3660046128c4565b6109e6565b61010061025e366004612930565b610c8c565b34801561026f57600080fd5b50610278610f01565b60405161014a919061297f565b34801561029157600080fd5b5061033e6102a03660046126bb565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260066020908152604091829020825160a0810184528154815260018201549485169281019290925265ffffffffffff600160a01b8504811693830193909352600160d01b909304909116606082015260029091015460ff161515608082015290565b60405161014a9190600060a082019050825182526001600160a01b036020840151166020830152604083015165ffffffffffff8082166040850152806060860151166060850152505060808301511515608083015292915050565b3480156103a557600080fd5b506101006103b43660046126bb565b610f12565b3480156103c557600080fd5b506101006103d43660046126bb565b611020565b3480156103e557600080fd5b506101006103f43660046129d7565b6110b0565b610401611132565b6001600160a01b0382166000908152600660205260409020600281015460ff16610467576040517fc3367e760000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024015b60405180910390fd5b600181015442600160d01b90910465ffffffffffff1610156104c0576040517f0fc659c20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161045e565b80546104d5906104d09084612a89565b61118e565b600182018054601a906104f8908490600160d01b900465ffffffffffff16612ac4565b92506101000a81548165ffffffffffff021916908365ffffffffffff160217905550826001600160a01b03167f71d0060f3c1f2f0de478aca435ab612f7550b9415f91c6beac671faaca34bb688383600101601a9054906101000a900465ffffffffffff1660405161057c92919091825265ffffffffffff16602082015260400190565b60405180910390a261058e8383611210565b505050565b6060806105a1600184611279565b91509150915091565b6105b2611132565b6040517f20e02be700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152600460205260408120606091829161060a90611430565b90506000815167ffffffffffffffff81111561062857610628612ae3565b604051908082528060200260200182016040528015610651578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561067057610670612ae3565b604051908082528060200260200182016040528015610699578160200160208202803683370190505b50905060005b83518110156108b45760006001800160008684815181106106c2576106c2612b12565b6020908102919091018101518252818101929092526040908101600090812060018101546001600160a01b031680835260069094529190208651919350919086908590811061071357610713612b12565b6001600160a01b03928316602091820292909201015260028301546040517ff7888aec00000000000000000000000000000000000000000000000000000000815290821660048201528a8216602482015261088d9183918c917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec90604401602060405180830381865afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190612b41565b60028601546040517fe4dc2aa40000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063e4dc2aa490602401602060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190612b41565b8693929190611444565b84848151811061089f5761089f612b12565b6020908102919091010152505060010161069f565b509093509150505b9250929050565b6060806105a16001846114a7565b6108d9611132565b6108e4600184611655565b80156109925760006001600160a01b03841615610981576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190612b41565b610983565b475b9050610990838583611816565b505b816001600160a01b0316836001600160a01b03167ff842ed66d8fd158c4e8a71051d6493bff2e7f1994ea49e9713600c9aaa9cc4a7836040516109d9911515815260200190565b60405180910390a3505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a4a576040517f9f49538400000000000000000000000000000000000000000000000000000000815233600482015260240161045e565b6001600160a01b0385166000908152600460205260408120610a6b90611430565b90506000815167ffffffffffffffff811115610a8957610a89612ae3565b604051908082528060200260200182016040528015610ab2578160200160208202803683370190505b5090506000825167ffffffffffffffff811115610ad157610ad1612ae3565b604051908082528060200260200182016040528015610afa578160200160208202803683370190505b50905060005b8351811015610bca576000600180016000868481518110610b2357610b23612b12565b60200260200101518152602001908152602001600020905060008160010160009054906101000a90046001600160a01b0316905080858481518110610b6a57610b6a612b12565b6001600160a01b039283166020918202929092018101919091529082166000908152600690915260409020610ba39083908c8c8c6118dd565b848481518110610bb557610bb5612b12565b60209081029190910101525050600101610b00565b50866001600160a01b03167fc53cb8bc1a7200a84d0b66a538905a245c4915aace7f1ce5dc4a0ba107ebc15c8383604051610c069291906127bd565b60405180910390a260005b8351811015610c81576000828281518110610c2e57610c2e612b12565b60200260200101511115610c7957610c7988848381518110610c5257610c52612b12565b6020026020010151848481518110610c6c57610c6c612b12565b6020026020010151611816565b600101610c11565b505050505050505050565b610c94611132565b428265ffffffffffff161015610ce0576040517f53c1289f00000000000000000000000000000000000000000000000000000000815265ffffffffffff8316600482015260240161045e565b8065ffffffffffff16600003610d22576040517f95cf0dc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d2f6001866118f9565b9050610d3a856119bc565b60018101548490600160d01b900465ffffffffffff16421015610dcc57600182015460009042600160a01b90910465ffffffffffff1611610d7b5742610d90565b6001830154600160a01b900465ffffffffffff165b6001840154909150610db2908290600160d01b900465ffffffffffff16612b5a565b8354610dbe9190612b6d565b610dc89083612b84565b9150505b6000610de065ffffffffffff851683612a89565b905080600003610e1c576040517f6e9377ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001830180547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b65ffffffffffff881602179055610e608486612ac4565b60018401805465ffffffffffff928316600160d01b0279ffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790558184556040805188815260208101859052878316818301529186166060830152516001600160a01b038916917fa57b91f8b94eace9e74d336f5f3202d0eb4cb489f646fc322c7ed0f00fcd99fd919081900360800190a2610ef88787611210565b50505050505050565b6060610f0d6007611430565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f76576040517f9f49538400000000000000000000000000000000000000000000000000000000815233600482015260240161045e565b6001600160a01b03811660009081526009602052604090205460ff1615610fd4576040517f8575f3a60000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161045e565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fa351e5ceb90bd585957b38958d172682cb48fcff0320a4395c976ccdb40e44539190a250565b611028611132565b6001600160a01b0381166110a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161045e565b6110ad81611af8565b50565b6110b8611132565b6110c1856119bc565b6110d060018686868686611b60565b83836040516110e0929190612b97565b6040518091039020856001600160a01b03167fa8f10febbe8be4d24be81ee9f81f1a380ac400eb0cfc898b153b15dbaa70ae748484604051611123929190612bd9565b60405180910390a35050505050565b6000546001600160a01b0316331461118c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045e565b565b600065ffffffffffff82111561120c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161045e565b5090565b6001600160a01b03821661126457803414611260576040517f8b00479e0000000000000000000000000000000000000000000000000000000081526004810182905234602482015260440161045e565b5050565b6112606001600160a01b038316333084611d01565b6001600160a01b0381166000908152600383016020526040812060609182916112a190611430565b9050805167ffffffffffffffff8111156112bd576112bd612ae3565b6040519080825280602002602001820160405280156112e6578160200160208202803683370190505b509250805167ffffffffffffffff81111561130357611303612ae3565b60405190808252806020026020018201604052801561132c578160200160208202803683370190505b50915060005b81518110156114275785600101600083838151811061135357611353612b12565b6020026020010151815260200190815260200160002060010160009054906101000a90046001600160a01b031684828151811061139257611392612b12565b60200260200101906001600160a01b031690816001600160a01b0316815250508560010160008383815181106113ca576113ca612b12565b60200260200101518152602001908152602001600020600101601a9054906101000a900465ffffffffffff1683828151811061140857611408612b12565b65ffffffffffff90921660209283029190910190910152600101611332565b50509250929050565b6060600061143d83611dd0565b9392505050565b600080611452878785611e2c565b6001600160a01b038616600090815260038901602052604090205490915069d3c21bcecceda10000009085906114889084612b5a565b6114929190612b6d565b61149c9190612a89565b979650505050505050565b6001600160a01b0381166000908152600283016020526040812060609182916114cf90611430565b9050805167ffffffffffffffff8111156114eb576114eb612ae3565b604051908082528060200260200182016040528015611514578160200160208202803683370190505b509250805167ffffffffffffffff81111561153157611531612ae3565b60405190808252806020026020018201604052801561155a578160200160208202803683370190505b50915060005b81518110156114275785600101600083838151811061158157611581612b12565b6020026020010151815260200190815260200160002060020160009054906101000a90046001600160a01b03168482815181106115c0576115c0612b12565b60200260200101906001600160a01b031690816001600160a01b0316815250508560010160008383815181106115f8576115f8612b12565b60200260200101518152602001908152602001600020600101601a9054906101000a900465ffffffffffff1683828151811061163657611636612b12565b65ffffffffffff90921660209283029190910190910152600101611560565b6001600160a01b038116600090815260058301602052604090206002015460ff166116b7576040517fc3367e760000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161045e565b6001600160a01b038116600090815260028301602052604081206116da90611430565b905060005b81518110156117d45760008282815181106116fc576116fc612b12565b60209081029190910181015160008181526001880183526040808220600201546001600160a01b031680835260038a01909452902090925061173e9083611f7d565b506001600160a01b038516600090815260028701602052604090206117639083611f7d565b506001600160a01b0380861660009081526004880160209081526040808320949093168252928352818120819055928352600180880190925290912060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055016116df565b506117e26006840183611f89565b50506001600160a01b031660009081526005909101602052604081208181556001810191909155600201805460ff19169055565b6001600160a01b0382166118c9576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114611871576040519150601f19603f3d011682016040523d82523d6000602084013e611876565b606091505b50509050806118c3576040517f5c4c2a250000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810183905260440161045e565b50505050565b61058e6001600160a01b0383168483611f9e565b6000806118eb878785611fe7565b905061149c8786868461203a565b6001600160a01b03811660009081526005830160205260409020600281015460ff166119b657606461192d846006016120ac565b10611964576040517f290e96a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101805460ff1916600117905561198060068401836120b6565b506040516001600160a01b038316907f2967504cad2094d65ef2dcb85e4074f4f7455a846798fcc90657d6f33c4125ea90600090a25b92915050565b6001600160a01b03811660009081526003602052604081206119dd906120ac565b905060005b8181101561058e576001600160a01b03831660009081526003602052604081206002908290611a1190856120cb565b8152602080820192909252604090810160009081206001600160a01b038881168352600690945290829020600282015492517fe4dc2aa40000000000000000000000000000000000000000000000000000000081529284166004840152909350611aee9290917f00000000000000000000000000000000000000000000000000000000000000009091169063e4dc2aa490602401602060405180830381865afa158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae69190612b41565b839190611fe7565b50506001016119e2565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611b6c87876118f9565b905060008085815b81811015611c94576000611baf8c8c8c8c86818110611b9557611b95612b12565b9050602002016020810190611baa91906126bb565b6120d7565b600081815260018e810160205260409091200154909150611bdf90600160d01b900465ffffffffffff1686612c24565b9450878783818110611bf357611bf3612b12565b9050602002016020810190611c089190612c44565b611c1a9065ffffffffffff1685612c24565b9350878783818110611c2e57611c2e612b12565b9050602002016020810190611c439190612c44565b60009182526001808e0160205260409092208201805465ffffffffffff92909216600160d01b0279ffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117905501611b74565b5060018401548390611cb09084906001600160a01b0316612c24565b611cba9190612c5f565b60019490940180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390951694909417909355505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526118c39085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612300565b606081600001805480602002602001604051908101604052809291908181526020018280548015611e2057602002820191906000526020600020905b815481526020019060010190808311611e0c575b50505050509050919050565b60018084015490830154600091829165ffffffffffff600160a01b928390048116929091041611611e70576001850154600160a01b900465ffffffffffff16611e85565b6001840154600160a01b900465ffffffffffff165b600185015465ffffffffffff918216925060009142600160d01b9092041610611eae5742611ec3565b6001850154600160d01b900465ffffffffffff165b90508082101580611ed2575083155b80611ee8575060018501546001600160a01b0316155b15611ef85750508354905061143d565b85546001868101549088015486916001600160a01b03169069d3c21bcecceda100000090600160d01b900465ffffffffffff16611f358787612b5a565b8a54611f419190612b6d565b611f4b9190612b6d565b611f559190612b6d565b611f5f9190612a89565b611f699190612a89565b611f739190612b84565b9695505050505050565b600061143d83836123e8565b600061143d836001600160a01b0384166123e8565b6040516001600160a01b03831660248201526044810182905261058e9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611d4e565b6000611ff4848484611e2c565b808555600190940180547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4265ffffffffffff1602179055509192915050565b6001600160a01b0383166000908152600385016020526040812054819069d3c21bcecceda100000090859061206f9086612b5a565b6120799190612b6d565b6120839190612a89565b6001600160a01b038616600090815260038801602052604090208490559150505b949350505050565b60006119b6825490565b600061143d836001600160a01b0384166124e2565b600061143d8383612531565b6001600160a01b03808316600090815260048501602090815260408083209385168352929052908120549081900361143d576001600160a01b0383166000908152600285016020526040902060649061212f906120ac565b10612166576040517f2fee563000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260088501602052604090205460ff166121c5576040517fff9864e50000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161045e565b83600001600081546121d690612c7f565b91829055506001600160a01b03808516600081815260048801602090815260408083209488168352938152838220859055918152600288019091522090915061221f908261255b565b506001600160a01b03821660009081526003850160205260409020612244908261255b565b506000818152600185810160205260408083209182018054600290930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038881169182179092559088167fffffffffffff00000000000000000000000000000000000000000000000000009094168417600160a01b4265ffffffffffff160217909155905190927f26f4b31b7240e7422a9fe2ba5ce7684500302a536166d0ed481d7ad653ff25ab91a39392505050565b6000612355826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125679092919063ffffffff16565b90508051600014806123765750808060200190518101906123769190612cb7565b61058e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045e565b600081815260018301602052604081205480156124d157600061240c600183612b5a565b855490915060009061242090600190612b5a565b905081811461248557600086600001828154811061244057612440612b12565b906000526020600020015490508087600001848154811061246357612463612b12565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061249657612496612cd4565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506119b6565b60009150506119b6565b5092915050565b6000818152600183016020526040812054612529575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556119b6565b5060006119b6565b600082600001828154811061254857612548612b12565b9060005260206000200154905092915050565b600061143d83836124e2565b60606120a4848460008585600080866001600160a01b0316858760405161258e9190612d27565b60006040518083038185875af1925050503d80600081146125cb576040519150601f19603f3d011682016040523d82523d6000602084013e6125d0565b606091505b509150915061149c878383876060831561264b578251600003612644576001600160a01b0385163b6126445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b50816120a4565b6120a483838151156126605781518083602001fd5b8060405162461bcd60e51b815260040161045e9190612d43565b6001600160a01b03811681146110ad57600080fd5b600080604083850312156126a257600080fd5b82356126ad8161267a565b946020939093013593505050565b6000602082840312156126cd57600080fd5b813561143d8161267a565b60008151808452602080850194506020840160005b838110156127125781516001600160a01b0316875295820195908201906001016126ed565b509495945050505050565b60008151808452602080850194506020840160005b8381101561271257815165ffffffffffff1687529582019590820190600101612732565b60408152600061276960408301856126d8565b828103602084015261277b818561271d565b95945050505050565b6000806040838503121561279757600080fd5b82356127a28161267a565b915060208301356127b28161267a565b809150509250929050565b6040815260006127d060408301856126d8565b82810360208481019190915284518083528582019282019060005b81811015612807578451835293830193918301916001016127eb565b5090979650505050505050565b604080825283519082018190526000906020906060840190828701845b828110156128565781516001600160a01b031684529284019290840190600101612831565b5050508381036020850152611f73818661271d565b80151581146110ad57600080fd5b60008060006060848603121561288e57600080fd5b83356128998161267a565b925060208401356128a98161267a565b915060408401356128b98161286b565b809150509250925092565b600080600080600060a086880312156128dc57600080fd5b85356128e78161267a565b945060208601356128f78161267a565b94979496505050506040830135926060810135926080909101359150565b803565ffffffffffff8116811461292b57600080fd5b919050565b6000806000806080858703121561294657600080fd5b84356129518161267a565b93506020850135925061296660408601612915565b915061297460608601612915565b905092959194509250565b60208152600061143d60208301846126d8565b60008083601f8401126129a457600080fd5b50813567ffffffffffffffff8111156129bc57600080fd5b6020830191508360208260051b85010111156108bc57600080fd5b6000806000806000606086880312156129ef57600080fd5b85356129fa8161267a565b9450602086013567ffffffffffffffff80821115612a1757600080fd5b612a2389838a01612992565b90965094506040880135915080821115612a3c57600080fd5b50612a4988828901612992565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082612abf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b65ffffffffffff8181168382160190808211156124db576124db612a5a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612b5357600080fd5b5051919050565b818103818111156119b6576119b6612a5a565b80820281158282048414176119b6576119b6612a5a565b808201808211156119b6576119b6612a5a565b60008184825b85811015612bce578135612bb08161267a565b6001600160a01b031683526020928301929190910190600101612b9d565b509095945050505050565b60208082528181018390526000908460408401835b86811015612c195765ffffffffffff612c0684612915565b1682529183019190830190600101612bee565b509695505050505050565b6001600160a01b038181168382160190808211156124db576124db612a5a565b600060208284031215612c5657600080fd5b61143d82612915565b6001600160a01b038281168282160390808211156124db576124db612a5a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cb057612cb0612a5a565b5060010190565b600060208284031215612cc957600080fd5b815161143d8161286b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60005b83811015612d1e578181015183820152602001612d06565b50506000910152565b60008251612d39818460208701612d03565b9190910192915050565b6020815260008251806020840152612d62816040850160208701612d03565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122067296dd182c1bc08332182b8a32d7058a27d9c387da1735d2f5e912941bdb99f64736f6c634300081600330000000000000000000000004694900bdba99edf07a2e46c4093f88f9106a90d