0 txs
694.4k calls
constructor
constructor(address emissionManager)
functions
EMISSION_MANAGER
viewfunction EMISSION_MANAGER() view returns (address)
getAllUserRewards
viewfunction getAllUserRewards(address[] assets, address user) view returns (address[] rewardsList, uint256[] unclaimedAmounts)
getAssetDecimals
viewfunction getAssetDecimals(address asset) view returns (uint8)
getAssetIndex
viewfunction getAssetIndex(address asset, address reward) view returns (uint256, uint256)
getClaimer
viewfunction getClaimer(address user) view returns (address)
getDistributionEnd
viewfunction getDistributionEnd(address asset, address reward) view returns (uint256)
getEmissionManager
viewfunction getEmissionManager() view returns (address)
getRewardOracle
viewfunction getRewardOracle(address reward) view returns (address)
getRewardsByAsset
viewfunction getRewardsByAsset(address asset) view returns (address[])
getRewardsData
viewfunction getRewardsData(address asset, address reward) view returns (uint256, uint256, uint256, uint256)
getRewardsList
viewfunction getRewardsList() view returns (address[])
getTransferStrategy
viewfunction getTransferStrategy(address reward) view returns (address)
getUserAccruedRewards
viewfunction getUserAccruedRewards(address user, address reward) view returns (uint256)
getUserAssetIndex
viewfunction getUserAssetIndex(address user, address asset, address reward) view returns (uint256)
getUserRewards
viewfunction getUserRewards(address[] assets, address user, address reward) view returns (uint256)
REVISION
viewfunction REVISION() view returns (uint256)
claimAllRewards
nonpayablefunction claimAllRewards(address[] assets, address to) returns (address[] rewardsList, uint256[] claimedAmounts)
claimAllRewardsOnBehalf
nonpayablefunction claimAllRewardsOnBehalf(address[] assets, address user, address to) returns (address[] rewardsList, uint256[] claimedAmounts)
claimAllRewardsToSelf
nonpayablefunction claimAllRewardsToSelf(address[] assets) returns (address[] rewardsList, uint256[] claimedAmounts)
claimRewards
nonpayablefunction claimRewards(address[] assets, uint256 amount, address to, address reward) returns (uint256)
claimRewardsOnBehalf
nonpayablefunction claimRewardsOnBehalf(address[] assets, uint256 amount, address user, address to, address reward) returns (uint256)
claimRewardsToSelf
nonpayablefunction claimRewardsToSelf(address[] assets, uint256 amount, address reward) returns (uint256)
configureAssets
nonpayablefunction configureAssets(tuple[] config)
handleAction
nonpayablefunction handleAction(address user, uint256 totalSupply, uint256 userBalance)
initialize
nonpayablefunction initialize(address)
setClaimer
nonpayablefunction setClaimer(address user, address caller)
setDistributionEnd
nonpayablefunction setDistributionEnd(address asset, address reward, uint32 newDistributionEnd)
setEmissionPerSecond
nonpayablefunction setEmissionPerSecond(address asset, address[] rewards, uint88[] newEmissionsPerSecond)
setRewardOracle
nonpayablefunction setRewardOracle(address reward, address rewardOracle)
setTransferStrategy
nonpayablefunction setTransferStrategy(address reward, address transferStrategy)
events
Accrued
event Accrued(address indexed asset, address indexed reward, address indexed user, uint256 assetIndex, uint256 userIndex, uint256 rewardsAccrued)
AssetConfigUpdated
event AssetConfigUpdated(address indexed asset, address indexed reward, uint256 oldEmission, uint256 newEmission, uint256 oldDistributionEnd, uint256 newDistributionEnd, uint256 assetIndex)
ClaimerSet
event ClaimerSet(address indexed user, address indexed claimer)
RewardOracleUpdated
event RewardOracleUpdated(address indexed reward, address indexed rewardOracle)
RewardsClaimed
event RewardsClaimed(address indexed user, address indexed reward, address indexed to, address claimer, uint256 amount)
TransferStrategyInstalled
event TransferStrategyInstalled(address indexed reward, address indexed transferStrategy)
errors
No errors.
creation bytecode
0x60a060405260006005553480156200001657600080fd5b50604051620039853803806200398583398101604081905262000039916200004b565b6001600160a01b03166080526200007d565b6000602082840312156200005e57600080fd5b81516001600160a01b03811681146200007657600080fd5b9392505050565b6080516138bb620000ca6000396000818161045e0152818161055c01528181610a1c01528181610c780152818161111b0152818161122b0152818161127d015261131c01526138bb6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806392074b0811610104578063bf90f63a116100a2578063dde43cba11610071578063dde43cba1461057e578063e15ac62314610586578063f5cf673b14610599578063f996868b146105ac57600080fd5b8063bf90f63a1461051e578063c4d66de814610531578063c5a7b53814610544578063cbcbb5071461055757600080fd5b80639ff55db9116100de5780639ff55db9146104dd578063b022418c146104f0578063b45ac1a914610503578063bb492bf51461050b57600080fd5b806392074b081461045c578063955c2ad7146104825780639efd6f721461049557600080fd5b80635453ba101161017c57806370674ab91161014b57806370674ab91461036857806374d945ec1461037b5780637eff4ba8146103a7578063886fe70b1461043457600080fd5b80635453ba10146102f657806357b89883146103095780635f130b241461031c5780636657732f1461034857600080fd5b806331873e2e116101b857806331873e2e1461025c57806333028b99146102715780634c0369c314610284578063533f542a146102a557600080fd5b80631b839c77146101df578063236300dc146102055780632a17bf6014610218575b600080fd5b6101f26101ed366004612f1f565b6105bf565b6040519081526020015b60405180910390f35b6101f2610213366004612f9c565b6105f9565b61024461022636600461300f565b6001600160a01b039081166000908152603b60205260409020541690565b6040516001600160a01b0390911681526020016101fc565b61026f61026a366004613033565b610643565b005b6101f261027f366004613068565b610654565b6102976102923660046130ec565b610749565b6040516101fc929190613186565b6101f26102b33660046131dd565b6001600160a01b03808316600090815260016020818152604080842086861685528252808420948816845293909101905220546001600160681b03169392505050565b61026f610304366004612f1f565b610a11565b6101f261031736600461321d565b610a67565b61024461032a36600461300f565b6001600160a01b039081166000908152603a60205260409020541690565b61035b61035636600461300f565b610a81565b6040516101fc919061327b565b6101f261037636600461328e565b610b87565b61024461038936600461300f565b6001600160a01b039081166000908152603960205260409020541690565b6104146103b5366004612f1f565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160681b038116916001600160581b03600160681b8304169163ffffffff600160c01b8204811692600160e01b9092041690565b6040805194855260208501939093529183015260608201526080016101fc565b610447610442366004612f1f565b610b9e565b604080519283526020830191909152016101fc565b7f0000000000000000000000000000000000000000000000000000000000000000610244565b61026f610490366004613388565b610c6d565b6104cb6104a336600461300f565b6001600160a01b0316600090815260016020526040902060020154600160801b900460ff1690565b60405160ff90911681526020016101fc565b6102976104eb36600461328e565b610e09565b6101f26104fe366004612f1f565b610f01565b61035b610f9a565b6102976105193660046130ec565b610ffc565b61029761052c3660046134b5565b61103e565b61026f61053f36600461300f565b611059565b61026f6105523660046134f6565b611110565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b6101f2600181565b61026f610594366004612f1f565b611220565b61026f6105a7366004612f1f565b611272565b61026f6105ba36600461353d565b611311565b6001600160a01b03828116600090815260016020908152604080832093851683529290522054600160e01b900463ffffffff165b92915050565b60006001600160a01b03831661062a5760405162461bcd60e51b8152600401610621906135bf565b60405180910390fd5b6106398686863333888861163d565b9695505050505050565b61064f33848385611850565b505050565b6001600160a01b038084166000908152603960205260408120549091339186911682146106ba5760405162461bcd60e51b815260206004820152601460248201527310d3105253515497d5539055551213d49256915160621b6044820152606401610621565b6001600160a01b0386166107075760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f555345525f4144445245535360601b6044820152606401610621565b6001600160a01b03851661072d5760405162461bcd60e51b8152600401610621906135bf565b61073c898989338a8a8a61163d565b9998505050505050505050565b606080600061075986868661199f565b6003549091506001600160401b03811115610776576107766132ea565b60405190808252806020026020018201604052801561079f578160200160208202803683370190505b50925082516001600160401b038111156107bb576107bb6132ea565b6040519080825280602002602001820160405280156107e4578160200160208202803683370190505b50915060005b8151811015610a065760005b84518110156109f35760038181548110610812576108126135eb565b9060005260206000200160009054906101000a90046001600160a01b0316858281518110610842576108426135eb565b60200260200101906001600160a01b031690816001600160a01b03168152505060016000848481518110610878576108786135eb565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060000160008683815181106108bb576108bb6135eb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206001016000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600d9054906101000a90046001600160801b03166001600160801b031684828151811061093b5761093b6135eb565b6020026020010181815161094f9190613617565b9052508251839083908110610966576109666135eb565b602002602001015160200151600003156109e1576109b786868381518110610990576109906135eb565b60200260200101518585815181106109aa576109aa6135eb565b6020026020010151611b5c565b8482815181106109c9576109c96135eb565b602002602001018181516109dd9190613617565b9052505b806109eb8161362a565b9150506107f6565b50806109fe8161362a565b9150506107ea565b50505b935093915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a595760405162461bcd60e51b815260040161062190613643565b610a638282611bfd565b5050565b6000610a788585853333338861163d565b95945050505050565b6001600160a01b0381166000908152600160205260408120600201546060916001600160801b0390911690816001600160401b03811115610ac457610ac46132ea565b604051908082528060200260200182016040528015610aed578160200160208202803683370190505b50905060005b826001600160801b0316816001600160801b03161015610b7f576001600160a01b0380861660009081526001602081815260408084206001600160801b03871680865293019091529091205484519216918491908110610b5557610b556135eb565b6001600160a01b039092166020928302919091019091015280610b7781613672565b915050610af3565b509392505050565b6000610a788383610b9988888861199f565b611d05565b6001600160a01b0380831660008181526001602090815260408083209486168352938152838220845163b1bf962d60e01b81529451929485949193610c609385939263b1bf962d92600480830193928290030181865afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190613698565b6001600160a01b038816600090815260016020526040902060020154610c5b90600160801b900460ff16600a613795565b611e63565b92509250505b9250929050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb55760405162461bcd60e51b815260040161062190613643565b60005b8151811015610dfc57818181518110610cd357610cd36135eb565b6020026020010151606001516001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190613698565b828281518110610d5257610d526135eb565b60200260200101516020018181525050610da6828281518110610d7757610d776135eb565b602002602001015160800151838381518110610d9557610d956135eb565b602002602001015160a00151611f2d565b610dea828281518110610dbb57610dbb6135eb565b602002602001015160800151838381518110610dd957610dd96135eb565b602002602001015160c00151611bfd565b80610df48161362a565b915050610cb8565b50610e068161202d565b50565b6001600160a01b03808316600090815260396020526040902054606091829133918691168214610e725760405162461bcd60e51b815260206004820152601460248201527310d3105253515497d5539055551213d49256915160621b6044820152606401610621565b6001600160a01b038616610ebf5760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f555345525f4144445245535360601b6044820152606401610621565b6001600160a01b038516610ee55760405162461bcd60e51b8152600401610621906135bf565b610ef288883389896126e4565b93509350505094509492505050565b60008060005b600454811015610b7f576001600060048381548110610f2857610f286135eb565b6000918252602080832091909101546001600160a01b03908116845283820194909452604092830182208885168352815282822093891682526001909301909252902054610f8690600160681b90046001600160801b031683613617565b915080610f928161362a565b915050610f07565b60606003805480602002602001604051908101604052809291908181526020018280548015610ff257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fd4575b5050505050905090565b6060806001600160a01b0383166110255760405162461bcd60e51b8152600401610621906135bf565b61103285853333876126e4565b91509150935093915050565b60608061104e84843333336126e4565b915091509250929050565b60065460019060ff168061106c5750303b155b80611078575060055481115b6110db5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610621565b60065460ff161580156110fb576006805460ff1916600117905560058290555b801561064f576006805460ff19169055505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111585760405162461bcd60e51b815260040161062190613643565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902080546001600160e01b038116600160e01b63ffffffff898116828102938417958690558751600160681b9096046001600160581b0316808752968601969096529083041694830185905260608301939093526001600160681b039081169216919091176080820152909291907fac1777479f07f3e7c34da8402139d54027a6a260caaae168bdee825ca5580dc59060a00160405180910390a350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112685760405162461bcd60e51b815260040161062190613643565b610a638282611f2d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112ba5760405162461bcd60e51b815260040161062190613643565b6001600160a01b0382811660008181526039602052604080822080546001600160a01b0319169486169485179055517f4925eafc82d0c4d67889898eeed64b18488ab19811e61620f387026dec126a289190a35050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113595760405162461bcd60e51b815260040161062190613643565b8281146113985760405162461bcd60e51b815260206004820152600d60248201526c1253959053125117d253941555609a1b6044820152606401610621565b60005b83811015611635576001600160a01b03861660009081526001602052604081209081818888868181106113d0576113d06135eb565b90506020020160208101906113e5919061300f565b6001600160a01b0316815260208101919091526040016000206002830154909150600160801b900460ff16801580159061142c57508154600160c01b900463ffffffff1615155b6114785760405162461bcd60e51b815260206004820152601b60248201527f444953545249425554494f4e5f444f45535f4e4f545f455849535400000000006044820152606401610621565b60006114f0838b6001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e09190613698565b6114eb85600a6137a4565b612ad4565b508354909150600160681b90046001600160581b0316878787818110611518576115186135eb565b905060200201602081019061152d91906137b0565b84546001600160581b0391909116600160681b026affffffffffffffffffffff60681b19909116178455898987818110611569576115696135eb565b905060200201602081019061157e919061300f565b6001600160a01b03168b6001600160a01b03167fac1777479f07f3e7c34da8402139d54027a6a260caaae168bdee825ca5580dc5838b8b8b8181106115c5576115c56135eb565b90506020020160208101906115da91906137b0565b8854604080519384526001600160581b039092166020840152600160e01b900463ffffffff1690820181905260608201526080810186905260a00160405180910390a35050505050808061162d9061362a565b91505061139b565b505050505050565b60008560000361164f57506000611845565b6000611665856116608b8b8961199f565b612bc1565b60005b888110156117d55760008a8a83818110611684576116846135eb565b9050602002016020810190611699919061300f565b6001600160a01b0381811660009081526001602081815260408084208b861685528252808420948d16845293909101905220549091506116e990600160681b90046001600160801b031684613617565b925088831161173a576001600160a01b0380821660009081526001602081815260408084208a861685528252808420948c168452939091019052208054600160681b600160e81b03191690556117c2565b60006117468a856137cb565b905061175281856137cb565b935061175d81612c42565b6001600160a01b0392831660009081526001602081815260408084208b881685528252808420968d1684529590910190529290922080546001600160801b0393909316600160681b02600160681b600160e81b031990931692909217909155506117d5565b50806117cd8161362a565b915050611668565b50806000036117e8576000915050611845565b6117f3848483612caf565b604080516001600160a01b038881168252602082018490528087169286821692918916917fc052130bc4ef84580db505783484b067ea8b71b3bca78a7e12db7aea8658f004910160405180910390a490505b979650505050505050565b6001600160a01b03841660009081526001602052604081206002015460ff600160801b820416600a0a916001600160801b0390911690819003611894575050611999565b60005b81816001600160801b03161015611995576001600160a01b0380881660009081526001602081815260408084206001600160801b038716855292830182528084205490941680845291905291812090806118f2838989612ad4565b91509150600080611906858d8d878d612d8c565b9150915082806119135750805b15611983578b6001600160a01b0316866001600160a01b03168e6001600160a01b03167f3303facd24627943a92e9dc87cfbb34b15c49b726eec3ad3487c16be9ab8efe887888760405161197a939291909283526020830191909152604082015260600190565b60405180910390a45b50506001909401935061189792505050565b5050505b50505050565b6060826001600160401b038111156119b9576119b96132ea565b604051908082528060200260200182016040528015611a1757816020015b611a04604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816119d75790505b50905060005b83811015610b7f57848482818110611a3757611a376135eb565b9050602002016020810190611a4c919061300f565b828281518110611a5e57611a5e6135eb565b60209081029190910101516001600160a01b039091169052848482818110611a8857611a886135eb565b9050602002016020810190611a9d919061300f565b604051630afbcdc960e01b81526001600160a01b0385811660048301529190911690630afbcdc9906024016040805180830381865afa158015611ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0891906137de565b838381518110611b1a57611b1a6135eb565b6020026020010151602001848481518110611b3757611b376135eb565b6020908102919091010151604001919091525280611b548161362a565b915050611a1d565b80516001600160a01b03908116600090815260016020818152604080842087861685528252808420865190951684529190528120600201549091908290611bae90600160801b900460ff16600a613795565b90506000611bc183866040015184611e63565b6020808801516001600160a01b038b1660009081526001880190925260409091205491935061184592509083906001600160681b031685612e81565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c619190613698565b13611cae5760405162461bcd60e51b815260206004820152601860248201527f4f5241434c455f4d5553545f52455455524e5f505249434500000000000000006044820152606401610621565b6001600160a01b038281166000818152603b602052604080822080546001600160a01b0319169486169485179055517f1a1cd5483e52e60b9ff7f3b9d1db3bbd9e9d21c6324ad3a8c79dba9b75e62f4d9190a35050565b6000805b8251811015610b7f57828181518110611d2457611d246135eb565b602002602001015160200151600003611db25760016000848381518110611d4d57611d4d6135eb565b602090810291909101810151516001600160a01b039081168352828201939093526040918201600090812088851682528252828120938916815260019093019052902054611dab90600160681b90046001600160801b031683613617565b9150611e51565b60016000848381518110611dc857611dc86135eb565b602090810291909101810151516001600160a01b0390811683528282019390935260409182016000908120888516825282528281209389168152600190930190529020548351600160681b9091046001600160801b031690611e3a90879087908790869081106109aa576109aa6135eb565b611e449190613617565b611e4e9083613617565b91505b80611e5b8161362a565b915050611d09565b825460009081906001600160681b0381169063ffffffff600160e01b82048116916001600160581b03600160681b82041691600160c01b90910416811580611ea9575087155b80611eb357504281145b80611ebe5750828110155b15611ed25783849550955050505050610a09565b6000834211611ee15742611ee3565b835b90506000611ef183836137cb565b9050600089611f008387613802565b611f0a9190613802565b8b9004905086611f1a8183613617565b9850985050505050505050935093915050565b6001600160a01b038116611f835760405162461bcd60e51b815260206004820152601860248201527f53545241544547595f43414e5f4e4f545f42455f5a45524f00000000000000006044820152606401610621565b6001813b151514611fd65760405162461bcd60e51b815260206004820152601960248201527f53545241544547595f4d5553545f42455f434f4e5452414354000000000000006044820152606401610621565b6001600160a01b038281166000818152603a602052604080822080546001600160a01b0319169486169485179055517f8ca1d928f1d72493a6b78c4f74aabde976bc37ffe2570f2a1ce5a8abd3dde0aa9190a35050565b60005b8151811015610a63576001600083838151811061204f5761204f6135eb565b6020026020010151606001516001600160a01b03166001600160a01b0316815260200190815260200160002060020160109054906101000a900460ff1660ff166000036120ea5760048282815181106120aa576120aa6135eb565b6020908102919091018101516060015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b60008282815181106120fe576120fe6135eb565b6020026020010151606001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190613819565b60016000858581518110612181576121816135eb565b6020026020010151606001516001600160a01b03166001600160a01b0316815260200190815260200160002060020160106101000a81548160ff021916908360ff160217905560ff1690506000600160008585815181106121e4576121e46135eb565b6020026020010151606001516001600160a01b03166001600160a01b031681526020019081526020016000206000016000858581518110612227576122276135eb565b6020026020010151608001516001600160a01b03166001600160a01b0316815260200190815260200160002090508060000160189054906101000a900463ffffffff1663ffffffff166000036123f657838381518110612289576122896135eb565b602002602001015160800151600160008686815181106122ab576122ab6135eb565b6020026020010151606001516001600160a01b03166001600160a01b031681526020019081526020016000206001016000600160008888815181106122f2576122f26135eb565b6020026020010151606001516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160801b03166001600160801b03166001600160801b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001600085858151811061238f5761238f6135eb565b602090810291909101810151606001516001600160a01b03168252810191909152604001600090812060020180546001600160801b0316916123d083613672565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550505b6002600085858151811061240c5761240c6135eb565b602090810291909101810151608001516001600160a01b0316825281019190915260400160009081205460ff16151590036124f057600160026000868681518110612459576124596135eb565b6020026020010151608001516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060038484815181106124b0576124b06135eb565b6020908102919091018101516080015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600061252182868681518110612508576125086135eb565b60200260200101516020015185600a6114eb91906137a4565b5082548651919250600160681b81046001600160581b031691600160e01b90910463ffffffff169087908790811061255b5761255b6135eb565b60209081029190910101515184546001600160581b03909116600160681b026affffffffffffffffffffff60681b1990911617845586518790879081106125a4576125a46135eb565b602090810291909101015160400151845463ffffffff909116600160e01b026001600160e01b0390911617845586518790879081106125e5576125e56135eb565b6020026020010151608001516001600160a01b031687878151811061260c5761260c6135eb565b6020026020010151606001516001600160a01b03167fac1777479f07f3e7c34da8402139d54027a6a260caaae168bdee825ca5580dc5848a8a81518110612655576126556135eb565b602002602001015160000151858c8c81518110612674576126746135eb565b602002602001015160400151896040516126c49594939291906001600160581b03958616815293909416602084015263ffffffff9182166040840152166060820152608081019190915260a00190565b60405180910390a3505050505080806126dc9061362a565b915050612030565b6003546060908190806001600160401b03811115612704576127046132ea565b60405190808252806020026020018201604052801561272d578160200160208202803683370190505b509250806001600160401b03811115612748576127486132ea565b604051908082528060200260200182016040528015612771578160200160208202803683370190505b509150612783856116608a8a8961199f565b60005b878110156129d05760008989838181106127a2576127a26135eb565b90506020020160208101906127b7919061300f565b905060005b838110156129bb5760006001600160a01b03168682815181106127e1576127e16135eb565b60200260200101516001600160a01b03160361285b576003818154811061280a5761280a6135eb565b9060005260206000200160009054906101000a90046001600160a01b031686828151811061283a5761283a6135eb565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001600160a01b038216600090815260016020526040812087518290899085908110612889576128896135eb565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938d16815260019093019052902054600160681b90046001600160801b0316905080156129a857808683815181106128ed576128ed6135eb565b602002602001018181516129019190613617565b9052506001600160a01b0383166000908152600160205260408120885182908a9086908110612932576129326135eb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600001600d6101000a8154816001600160801b0302191690836001600160801b031602179055505b50806129b38161362a565b9150506127bc565b505080806129c89061362a565b915050612786565b5060005b81811015612ac857612a19858583815181106129f2576129f26135eb565b6020026020010151858481518110612a0c57612a0c6135eb565b6020026020010151612caf565b846001600160a01b0316848281518110612a3557612a356135eb565b60200260200101516001600160a01b0316876001600160a01b03167fc052130bc4ef84580db505783484b067ea8b71b3bca78a7e12db7aea8658f0048a878681518110612a8457612a846135eb565b6020026020010151604051612aae9291906001600160a01b03929092168252602082015260400190565b60405180910390a480612ac08161362a565b9150506129d4565b50509550959350505050565b600080600080612ae5878787611e63565b915091506000828214612b8a576001600160681b03821115612b3a5760405162461bcd60e51b815260206004820152600e60248201526d494e4445585f4f564552464c4f5760901b6044820152606401610621565b5086546cffffffffffffffffffffffffff19166001600160681b0382161787556001612b6542612ea5565b885463ffffffff91909116600160c01b0263ffffffff60c01b19909116178855612bb4565b612b9342612ea5565b885463ffffffff91909116600160c01b0263ffffffff60c01b199091161788555b9097909650945050505050565b60005b815181101561064f57612c30828281518110612be257612be26135eb565b60200260200101516000015184848481518110612c0157612c016135eb565b602002602001015160200151858581518110612c1f57612c1f6135eb565b602002602001015160400151611850565b80612c3a8161362a565b915050612bc4565b60006001600160801b03821115612cab5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610621565b5090565b6001600160a01b038281166000818152603a6020526040808220549051630b5f5cc160e11b81528785166004820152602481019390935260448301859052909216919082906316beb982906064016020604051808303816000875af1158015612d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d40919061383c565b9050600181151514612d855760405162461bcd60e51b815260206004820152600e60248201526d2a2920a729a322a92fa2a92927a960911b6044820152606401610621565b5050505050565b6001600160a01b038416600090815260018601602052604081205481906001600160681b031681858214801590612e72576001600160a01b038916600090815260018b016020526040902080546cffffffffffffffffffffffffff19166001600160681b0389161790558715612e7257612e0888888589612e81565b9150612e1382612c42565b6001600160a01b038a16600090815260018c01602052604090208054600d90612e4d908490600160681b90046001600160801b031661385e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b90999098509650505050505050565b600080612e8e84866137cb565b612e989087613802565b9290920495945050505050565b600063ffffffff821115612cab5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610621565b6001600160a01b0381168114610e0657600080fd5b60008060408385031215612f3257600080fd5b8235612f3d81612f0a565b91506020830135612f4d81612f0a565b809150509250929050565b60008083601f840112612f6a57600080fd5b5081356001600160401b03811115612f8157600080fd5b6020830191508360208260051b8501011115610c6657600080fd5b600080600080600060808688031215612fb457600080fd5b85356001600160401b03811115612fca57600080fd5b612fd688828901612f58565b909650945050602086013592506040860135612ff181612f0a565b9150606086013561300181612f0a565b809150509295509295909350565b60006020828403121561302157600080fd5b813561302c81612f0a565b9392505050565b60008060006060848603121561304857600080fd5b833561305381612f0a565b95602085013595506040909401359392505050565b60008060008060008060a0878903121561308157600080fd5b86356001600160401b0381111561309757600080fd5b6130a389828a01612f58565b9097509550506020870135935060408701356130be81612f0a565b925060608701356130ce81612f0a565b915060808701356130de81612f0a565b809150509295509295509295565b60008060006040848603121561310157600080fd5b83356001600160401b0381111561311757600080fd5b61312386828701612f58565b909450925050602084013561313781612f0a565b809150509250925092565b600081518084526020808501945080840160005b8381101561317b5781516001600160a01b031687529582019590820190600101613156565b509495945050505050565b6040815260006131996040830185613142565b82810360208481019190915284518083528582019282019060005b818110156131d0578451835293830193918301916001016131b4565b5090979650505050505050565b6000806000606084860312156131f257600080fd5b83356131fd81612f0a565b9250602084013561320d81612f0a565b9150604084013561313781612f0a565b6000806000806060858703121561323357600080fd5b84356001600160401b0381111561324957600080fd5b61325587828801612f58565b90955093505060208501359150604085013561327081612f0a565b939692955090935050565b60208152600061302c6020830184613142565b600080600080606085870312156132a457600080fd5b84356001600160401b038111156132ba57600080fd5b6132c687828801612f58565b90955093505060208501356132da81612f0a565b9150604085013561327081612f0a565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613322576133226132ea565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613350576133506132ea565b604052919050565b80356001600160581b038116811461336f57600080fd5b919050565b803563ffffffff8116811461336f57600080fd5b6000602080838503121561339b57600080fd5b82356001600160401b03808211156133b257600080fd5b818501915085601f8301126133c657600080fd5b8135818111156133d8576133d86132ea565b6133e6848260051b01613328565b818152848101925060e091820284018501918883111561340557600080fd5b938501935b828510156134a95780858a0312156134225760008081fd5b61342a613300565b61343386613358565b81528686013587820152604061344a818801613374565b9082015260608681013561345d81612f0a565b9082015260808681013561347081612f0a565b9082015260a08681013561348381612f0a565b9082015260c08681013561349681612f0a565b908201528452938401939285019261340a565b50979650505050505050565b600080602083850312156134c857600080fd5b82356001600160401b038111156134de57600080fd5b6134ea85828601612f58565b90969095509350505050565b60008060006060848603121561350b57600080fd5b833561351681612f0a565b9250602084013561352681612f0a565b915061353460408501613374565b90509250925092565b60008060008060006060868803121561355557600080fd5b853561356081612f0a565b945060208601356001600160401b038082111561357c57600080fd5b61358889838a01612f58565b909650945060408801359150808211156135a157600080fd5b506135ae88828901612f58565b969995985093965092949392505050565b602080825260129082015271494e56414c49445f544f5f4144445245535360701b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105f3576105f3613601565b60006001820161363c5761363c613601565b5060010190565b60208082526015908201527427a7262cafa2a6a4a9a9a4a7a72fa6a0a720a3a2a960591b604082015260600190565b60006001600160801b0380831681810361368e5761368e613601565b6001019392505050565b6000602082840312156136aa57600080fd5b5051919050565b600181815b808511156136ec5781600019048211156136d2576136d2613601565b808516156136df57918102915b93841c93908002906136b6565b509250929050565b600082613703575060016105f3565b81613710575060006105f3565b816001811461372657600281146137305761374c565b60019150506105f3565b60ff84111561374157613741613601565b50506001821b6105f3565b5060208310610133831016604e8410600b841016171561376f575081810a6105f3565b61377983836136b1565b806000190482111561378d5761378d613601565b029392505050565b600061302c60ff8416836136f4565b600061302c83836136f4565b6000602082840312156137c257600080fd5b61302c82613358565b818103818111156105f3576105f3613601565b600080604083850312156137f157600080fd5b505080516020909101519092909150565b80820281158282048414176105f3576105f3613601565b60006020828403121561382b57600080fd5b815160ff8116811461302c57600080fd5b60006020828403121561384e57600080fd5b8151801515811461302c57600080fd5b6001600160801b0381811683821601908082111561387e5761387e613601565b509291505056fea26469706673582212202f076d7109267a2c9d53be49db71e00152bf1de6d7e98358c6d68bdd1b100e5864736f6c634300081300330000000000000000000000006ed1c70aa357fb8a7e1eac85aa59e33287df8f85