183 txs
174 calls
constructor
constructor(address _stakingToken, address _rewardsWallet, address _penaltyWallet, address adminPanel)
functions
_panel
viewfunction _panel() view returns (address)
calculateFutureRewards
viewfunction calculateFutureRewards(uint256 poolId, uint256 amount, uint256 futureTimestamp) view returns (uint256 futureRewards)
calculateWithdrawPenalty
viewfunction calculateWithdrawPenalty(uint256 poolId, address user, uint256 stakeIndex) view returns (uint256)
getAPYLimits
viewfunction getAPYLimits(uint256 poolId) view returns (uint256 minAPY, uint256 maxAPY)
getCurrentAPY
viewfunction getCurrentAPY(uint256 poolId) view returns (uint256 apy)
getMinStakeAmount
viewfunction getMinStakeAmount() view returns (uint256)
getOwedRewards
viewfunction getOwedRewards(address user) view returns (uint256 amount)
getPenaltyWallet
viewfunction getPenaltyWallet() view returns (address)
getPendingRewards
viewfunction getPendingRewards(uint256 poolId, address user) view returns (uint256[])
getPoolCheckpoints
viewfunction getPoolCheckpoints(uint256 poolId) view returns (tuple[])
getPoolCount
viewfunction getPoolCount() view returns (uint256)
getPoolEndTime
viewfunction getPoolEndTime(uint256 poolId) view returns (uint256 endTime)
getPoolInfo
viewfunction getPoolInfo(uint256 poolId) view returns (tuple)
getTotalEarnedForStake
viewfunction getTotalEarnedForStake(uint256 poolId, address user, uint256 stakeIndex) view returns (uint256 totalEarned)
getTotalEarnedForUserInAllPools
viewfunction getTotalEarnedForUserInAllPools(address user) view returns (uint256 totalEarned)
getTotalEarnedForUserInPool
viewfunction getTotalEarnedForUserInPool(uint256 poolId, address user) view returns (uint256 totalEarned)
getTotalPendingRewards
viewfunction getTotalPendingRewards(address user) view returns (uint256 totalPending)
getTotalStakedByUser
viewfunction getTotalStakedByUser(address user) view returns (uint256 totalStaked)
getUserMigrationSummary
viewfunction getUserMigrationSummary(address user) view returns (uint256 totalStaked, uint256 totalPendingRewards, uint256 totalStakes)
getUserStakeCount
viewfunction getUserStakeCount(uint256 poolId, address user) view returns (uint256)
getUserStakes
viewfunction getUserStakes(uint256 poolId, address user) view returns (tuple[])
isMigrationMode
viewfunction isMigrationMode() view returns (bool)
isStakeMatured
viewfunction isStakeMatured(uint256 poolId, address user, uint256 stakeIndex) view returns (bool isMatured)
migrationMode
viewfunction migrationMode() view returns (bool)
minStakeAmount
viewfunction minStakeAmount() view returns (uint256)
owedRewards
viewfunction owedRewards(address) view returns (uint256)
penaltyWallet
viewfunction penaltyWallet() view returns (address)
poolCheckpoints
viewfunction poolCheckpoints(uint256, uint256) view returns (uint256 timestamp, uint256 totalStaked, uint256 rewardRatePerSec, uint256 cumulativeRewardPerToken)
pools
viewfunction pools(uint256) view returns (uint256 rewardCap, uint256 totalStaked, uint256 rewardRatePerSec, uint256 lastCheckpoint, uint256 minAPY, uint256 maxAPY, uint256 endTime, uint256 currentAPY, uint256 totalRewardsPaid, uint64 lockupSeconds, uint16 initialPenaltyBps, bool isPaused, string name)
rewardsWallet
viewfunction rewardsWallet() view returns (address)
stakes
viewfunction stakes(uint256, address, uint256) view returns (uint256 amount, uint256 unlockTimestamp, uint256 lastClaimTimestamp, uint256 stakeTimestamp, uint256 totalClaimedRewards)
stakingToken
viewfunction stakingToken() view returns (address)
addPool
nonpayablefunction addPool(uint64 lockupSeconds, uint256 rewardCap, uint16 initialPenaltyBps, string name, uint256 minAPY, uint256 maxAPY, uint256 endTime)
batchClaim
nonpayablefunction batchClaim()
claim
nonpayablefunction claim(uint256 poolId, uint256 stakeIndex)
claimOwedRewards
nonpayablefunction claimOwedRewards(uint256 amount)
disableMigrationMode
nonpayablefunction disableMigrationMode(tuple[] poolConfigs)
enableMigrationMode
nonpayablefunction enableMigrationMode()
migrateWithdrawAll
nonpayablefunction migrateWithdrawAll(uint256 maxPools)
setAPYLimits
nonpayablefunction setAPYLimits(uint256 poolId, uint256 minAPY, uint256 maxAPY)
setInitialPenaltyBps
nonpayablefunction setInitialPenaltyBps(uint256 poolId, uint16 newPenaltyBps)
setMinStakeAmount
nonpayablefunction setMinStakeAmount(uint256 newMinStake)
setPenaltyWallet
nonpayablefunction setPenaltyWallet(address newPenaltyWallet)
setPoolEndTime
nonpayablefunction setPoolEndTime(uint256 poolId, uint256 endTime)
setPoolName
nonpayablefunction setPoolName(uint256 poolId, string newName)
setPoolPause
nonpayablefunction setPoolPause(uint256 poolId, bool isPaused)
setRewardCap
nonpayablefunction setRewardCap(uint256 poolId, uint256 newCap)
setRewardsWallet
nonpayablefunction setRewardsWallet(address newRewardsWallet)
stake
nonpayablefunction stake(uint256 poolId, uint256 amount)
withdraw
nonpayablefunction withdraw(uint256 poolId, uint256 stakeIndex)
events
APYLimitsUpdated
event APYLimitsUpdated(uint256 indexed poolId, uint256 minAPY, uint256 maxAPY)
CheckpointCreated
event CheckpointCreated(uint256 indexed poolId, uint256 timestamp, uint256 totalStaked, uint256 rewardRatePerSec)
CheckpointsCleanedUp
event CheckpointsCleanedUp(uint256 indexed poolId, uint256 oldCount, uint256 newCount)
MigrationModeDisabled
event MigrationModeDisabled()
MigrationModeEnabled
event MigrationModeEnabled()
MinStakeUpdated
event MinStakeUpdated(uint256 oldAmount, uint256 newAmount)
OwedRewardsClaimed
event OwedRewardsClaimed(address indexed user, uint256 amount)
PenaltyWalletUpdated
event PenaltyWalletUpdated(address indexed oldWallet, address indexed newWallet)
PoolAdded
event PoolAdded(uint256 indexed poolId, string name)
PoolEndTimeUpdated
event PoolEndTimeUpdated(uint256 indexed poolId, uint256 endTime)
PoolNameUpdated
event PoolNameUpdated(uint256 indexed poolId, string oldName, string newName)
PoolPaused
event PoolPaused(uint256 indexed poolId, bool isPaused)
PoolPenaltyUpdated
event PoolPenaltyUpdated(uint256 indexed poolId, uint16 oldPenalty, uint16 newPenalty)
PoolRewardCapSet
event PoolRewardCapSet(uint256 indexed poolId, uint256 oldCap, uint256 newCap)
RewardClaimed
event RewardClaimed(uint256 indexed poolId, address indexed user, uint256 stakeIndex, uint256 amount)
RewardsOwed
event RewardsOwed(address indexed user, uint256 amount, string reason)
RewardsWalletUpdated
event RewardsWalletUpdated(address indexed oldWallet, address indexed newWallet)
Staked
event Staked(uint256 indexed poolId, address indexed user, uint256 stakeIndex, uint256 amount)
UserMigrated
event UserMigrated(address indexed user, uint256 totalStaked, uint256 totalRewards)
Withdrawn
event Withdrawn(uint256 indexed poolId, address indexed user, uint256 stakeIndex, uint256 amount, uint256 penalty)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AlreadyInitialized
error AlreadyInitialized()
ArrayLengthMismatch
error ArrayLengthMismatch()
BelowMinStake
error BelowMinStake(uint256 amount, uint256 minStake)
CallerNotAdmin
error CallerNotAdmin()
FailedInnerCall
error FailedInnerCall()
InsufficientStake
error InsufficientStake(uint256 requested, uint256 available)
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount(uint256 amount)
InvalidPoolId
error InvalidPoolId(uint256 poolId)
InvalidStakeIndex
error InvalidStakeIndex(uint256 stakeIndex)
MathOverflowedMulDiv
error MathOverflowedMulDiv()
MigrationModeActive
error MigrationModeActive()
MigrationModeNotActive
error MigrationModeNotActive()
PoolEnded
error PoolEnded(uint256 poolId)
PoolIsPaused
error PoolIsPaused(uint256 poolId)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a0346200016957601f62004a6a38819003918201601f19168301916001600160401b038311848410176200016e57808492608094604052833981010312620001695780516001600160a01b0380821692918381036200016957620000676020840162000184565b926200008460606200007c6040840162000184565b920162000184565b9460018055670de0b6b3a76400006004551580156200015e575b801562000153575b801562000148575b620001365782916080528160018060a01b0319941684600254161760025516826003541617600355600054928184166200012557169116176000556040516148d090816200019a8239608051818181610f1a01528181610f4c015281816111d5015281816113da015281816138c001526146f90152f35b60405162dc149f60e41b8152600490fd5b60405163e6c4247b60e01b8152600490fd5b5082851615620000ae565b5082811615620000a6565b50828416156200009e565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001695756fe6080604052600436101561001257600080fd5b60003560e01c80630717404f146103235780630951984d1461031e578063101527a51461031957806310f835111461031457806314ce783d1461030f578063172e78521461030a578063203b79b61461030557806320c32bfe146103005780632c17bbcc146102fb5780632cbdfac9146102f65780632f380b35146102f157806334308561146102ec578063441a3e70146102e75780634b5170031461027e578063527cb1d7146102475780635b35f9c9146102e25780635ca73f2b146102dd57806372f702f3146102d857806377ff1111146102d35780637a01e2bd146102565780637b0472f0146102ce5780637fbf3853146102c957806385d0b699146102c457806385dc0aaf146102bf5780638b4db06b146102ba5780638b752677146102795780638eec5d70146102b557806393dfad23146102b057806397c51bc1146102ab5780639d59c134146102a6578063a1980430146102a1578063a19e26831461029c578063a5bedf1314610297578063a7eb4f1714610292578063a8c478ba1461028d578063ac4afa3814610288578063b1427ac114610283578063b4b114ed1461027e578063be40e7a914610279578063c0f013db14610274578063c2d0a6f11461026f578063c34902631461026a578063c60b337f14610265578063c706b31614610260578063d9d2c3321461025b578063dc690ab314610256578063deb6020314610251578063eb4af0451461024c578063f1887684146102475763f4af0bd01461024257600080fd5b612629565b6110f1565b6125a5565b6124fe565b611232565b612478565b6123e7565b612378565b61215b565b61203a565b611f52565b611754565b6110b7565b611ed0565b611e20565b611b22565b611a6e565b6119ae565b611983565b6118f9565b61186f565b6117e2565b61179b565b61177d565b61172b565b611626565b6114e1565b6114ab565b611255565b611204565b6111bf565b611138565b61110f565b610dc4565b610cc1565b610c26565b610aba565b610a38565b61097a565b6108dc565b6107a4565b610667565b610590565b61050b565b61040c565b346103db5760403660031901126103db57600054610351906001600160a01b03165b6001600160a01b031690565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d6576000916103a8575b501561039657610394602435600435612a03565b005b60405163036c8cf960e11b8152600490fd5b6103c9915060203d81116103cf575b6103c18183611ceb565b8101906127fb565b38610380565b503d6103b7565b612810565b600080fd5b600435906001600160a01b03821682036103db57565b602435906001600160a01b03821682036103db57565b346103db576020806003193601126103db576104266103e0565b60065460009182915b80831061044557604051848152602090f35b0390f35b60008381526007865260408082206001600160a01b0385168352602052908190209394909390929080549061048561047c83613be1565b96519687611ceb565b818652600090815287812090888088015b8483106104ec5750505050506000925b84518410156104d4576104c86104ce916104c08688613c5b565b51519061368f565b93613261565b926104a6565b9592509250926104e390613261565b9190939261042f565b6001916005916104fb8661369c565b8152019301910190918990610496565b346103db5760203660031901126103db57610524613bbe565b60ff60055416156105405761053a600435613756565b60018055005b6040516395aad27b60e01b8152600490fd5b6024359061ffff821682036103db57565b9181601f840112156103db578235916001600160401b0383116103db57602083818601950101116103db57565b346103db5760e03660031901126103db576001600160401b0360043581811681036103db5760443561ffff811681036103db576064359283116103db576105de610394933690600401610563565b60c4359360a43593608435939160243590612d7e565b60208082019080835283518092528060408094019401926000905b83821061061e57505050505090565b84518051875280840151878501528082015187830152606080820151908801526080808201519088015260a0908101519087015260c0909501949382019360019091019061060f565b346103db576040806003193601126103db57600435906106856103f6565b600654831015610762576106c16106c6916106aa856000526007602052604060002090565b9060018060a01b0316600052602052604060002090565b613bf8565b9081516106d28161475a565b9260005b8281106106ea5783518061044187826105f4565b806106f760019284613c5b565b5161070281896142c2565b90805191602091828101518982015160609081840151926107288660808097015161368f565b96610731612f42565b9889528801528b87015285015283015260a08201526107508288613c5b565b5261075b8187613c5b565b50016106d6565b815163d531737d60e01b815260048101849052602490fd5b60609060031901126103db57600435906024356001600160a01b03811681036103db579060443590565b346103db576107b23661077a565b906006548310156108645760008381526007602090815260408083206001600160a01b038516845290915290205482101561084b5761082761082160809361081c61082e9487600052600760205260406000209060018060a01b0316600052602052604060002090565b611eb4565b5061369c565b80936142c2565b91015190810180911161084657604051908152602090f35b6131d6565b6040516358371f2b60e11b815260048101839052602490fd5b60405163d531737d60e01b815260048101849052602490fd5b60208082019080835283518092528060408094019401926000905b8382106108a757505050505090565b845180518752808401518785015280820151878301526060908101519087015260809095019493820193600190910190610898565b346103db576020806003193601126103db5760048035600654811015610963576000526008825260406000209081549161091583613be1565b936109236040519586611ceb565b83855260009182528082208186015b8584106109475760405180610441898261087d565b848360019261095585614189565b815201920193019290610932565b60405163d531737d60e01b81529182015260249150fd5b346103db5760403660031901126103db576024356001600160401b0381116103db576109aa903690600401610563565b6000546109bf906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d657600091610a00575b50156103965761039491600435612a88565b610a18915060203d81116103cf576103c18183611ceb565b386109ee565b60609060031901126103db57600435906024359060443590565b346103db57610a4636610a1e565b600054909190610a5e906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d657600091610a9c575b50156103965761039492612927565b610ab4915060203d81116103cf576103c18183611ceb565b38610a8d565b346103db5760403660031901126103db57600435610ad66103f6565b90600654811015610b0e5760009081526007602090815260408083206001600160a01b03909416835292815291902054604051908152f35b6024906040519063d531737d60e01b82526004820152fd5b919082519283825260005b848110610b52575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610b31565b6101c0610c23926020835280516020840152602081015160408401526040810151606084015260608101516080840152608081015160a084015260a081015160c084015260c081015160e084015260e081015161010090818501528101516101209081850152810151610be761014091828601906001600160401b03169052565b810151610bfd610160918286019061ffff169052565b81015190610c12610180928386019015159052565b0151916101a0808201520190610b26565b90565b346103db5760203660031901126103db576004356060610180604051610c4b81611caf565b600080825280602083015280604083015280848301528060808301528060a08301528060c08301528060e08301528061010083015280610120830152806101408301526101608201520152600654811015610b0e57610cb5610caf61044192611c1f565b50613fab565b60405191829182610b66565b346103db576020806003193601126103db57610cdb6103e0565b60008091829060065494845b868110610d125750505061044190604051938493846040919493926060820195825260208201520152565b60008181526007835260408082206001600160a01b03861683526020529020610d3a90613bf8565b938451908115610db85781610d4e9161368f565b9460005b828110610d6a57505050610d6590613261565b610ce7565b610d748183613c5b565b51805180610d8d575b5050610d8890613261565b610d52565b99610daa610da3610d88949c610db0949c61368f565b9a876142c2565b9061368f565b989038610d7d565b945050610d6590613261565b346103db576040806003193601126103db57602435600435610de4613bbe565b6006548110156110a0576000818152600760209081528482203383529052604090205482101561108957610e2a8261081c336106aa856000526007602052604060002090565b5080548015611071578293946006610e627fea0c0780680fae66f1e26fd6c4020591e8552b124d5d7e5b74f2810b0577aa9395611c1f565b50015415158061105a575b611043575b610e84610e7e8461369c565b866142c2565b80610fa4575b5060009260018101544210610f75575b50610efa906001610eaa87611c1f565b5001838154039055610ebb86613d73565b610ec486614064565b610ecf8733886145fc565b838303610f43575b83610f06575b519283923397846040919493926060820195825260208201520152565b0390a361039460018055565b600354610f3e9085906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000613a80565b610edd565b610f70848403337f0000000000000000000000000000000000000000000000000000000000000000613a80565b610ed7565b610f8b919350610f85839161369c565b866144f4565b91818311610f9a575b38610e9a565b9091508190610f94565b426002850155600484018181540190556008610fbf87611c1f565b5001818154019055610fd181336146aa565b1561100257815187815260208101919091523390869060008051602061487b83398151915290604090a35b38610e8a565b336000908152600c6020526040902061101c82825461368f565b905560008051602061485b83398151915282518061103b339482613d05565b0390a2610ffc565b61104c85613d73565b61105585614064565b610e72565b50600661106686611c1f565b500154421015610e6d565b8451633728b83d60e01b815260006004820152602490fd5b5060249151906358371f2b60e11b82526004820152fd5b60249083519063d531737d60e01b82526004820152fd5b346103db5760203660031901126103db576001600160a01b036110d86103e0565b16600052600c6020526020604060002054604051908152f35b346103db5760003660031901126103db576020600454604051908152f35b346103db5760003660031901126103db576002546040516001600160a01b039091168152602090f35b346103db5760403660031901126103db5760005461115e906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d6576000916111a1575b5015610396576103946024356004356129bc565b6111b9915060203d81116103cf576103c18183611ceb565b3861118d565b346103db5760003660031901126103db576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103db5761121236610a1e565b90600654831015610864579061122a91602093614817565b604051908152f35b346103db5760003660031901126103db57602060ff600554166040519015158152f35b346103db576040806003193601126103db57600480359160243591611278613bbe565b6006548410156114965760ff600554166114885760ff600961129986611c1f565b50015460501c166114735760066112af85611c1f565b50015415158061145c575b61144757821561142b5780548084106114075750508261135d61130b6113056112f960096112ea6113fe99611c1f565b5001546001600160401b031690565b6001600160401b031690565b4261368f565b611335611322846000526007602052604060002090565b3360009081526020919091526040902090565b61133d612f61565b918683526020830152428583015242606083015260006080830152613c6f565b600161136882611c1f565b500183815401905561137981613d73565b61138281614064565b7f17700ceb1658b18206f427c1578048e87504106b14ec69e9b4586d9a95174a326113c46113be336106aa856000526007602052604060002090565b546131ec565b9251928352602083018490523392604090a330337f0000000000000000000000000000000000000000000000000000000000000000613cc1565b61039460018055565b9151634df4ec0560e11b815290810192835260208301919091529081906040010390fd5b9051633728b83d60e01b81529081019182529081906020010390fd5b836024925191631fb0515960e21b8352820152fd5b50600661146885611c1f565b5001544210156112ba565b83602492519163375e1d4760e01b8352820152fd5b905163168ea94560e21b8152fd5b83602492519163d531737d60e01b8352820152fd5b346103db5760203660031901126103db57600435600654811015610b0e5760076114d6602092611c1f565b500154604051908152f35b346103db576020806003193601126103db576114fb6103e0565b6000906006549282935b80851061151757604051848152602090f35b60008581526007835260408082206001600160a01b038616835260205290819020909492939080549061155561154c83613be1565b97519788611ceb565b818752600090815285812090868089015b8483106115cc5750505050506000925b85518410156115b7576104c86115b191610daa61159d611596888b613c5b565b518b6142c2565b60806115a9898c613c5b565b51015161368f565b92611576565b9450929150936115c690613261565b93611505565b6001916005916115db8661369c565b8152019301910190918790611566565b6020908160408183019282815285518094520193019160005b828110611612575050505090565b835185529381019392810192600101611604565b346103db5760403660031901126103db576004356116426103f6565b6006548210156117125760009180835261167760209260078452604085209060018060a01b0316600052602052604060002090565b80549061168382613be1565b936116916040519586611ceb565b82855280850191865280862086925b8484106116f5578787878151916116b6836147e5565b935b8381106116cd576040518061044187826115eb565b806116e46116dd60019385613c5b565b51856142c2565b6116ee8288613c5b565b52016116b8565b6005836001926117048561369c565b8152019201930192906116a0565b60405163d531737d60e01b815260048101839052602490fd5b346103db5760003660031901126103db576000546040516001600160a01b039091168152602090f35b346103db5760003660031901126103db576003546040516001600160a01b039091168152602090f35b346103db5760003660031901126103db576020600654604051908152f35b346103db5760203660031901126103db57600435600654811015610b0e57610caf6117c591611c1f565b608081015160a09091015160408051928352602083019190915290f35b346103db5760403660031901126103db576117fb610552565b600054611810906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d657600091611851575b50156103965761039490600435612c85565b611869915060203d81116103cf576103c18183611ceb565b3861183f565b346103db5760203660031901126103db576118886103e0565b60005461189d906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d6576000916118db575b50156103965761039490612884565b6118f3915060203d81116103cf576103c18183611ceb565b386118cc565b346103db5760203660031901126103db576119126103e0565b600054611927906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d657600091611965575b50156103965761039490612d2a565b61197d915060203d81116103cf576103c18183611ceb565b38611956565b346103db5760203660031901126103db57600435600654811015610b0e5760066114d6602092611c1f565b346103db576119bc3661077a565b91600654811015610b0e5760008181526007602090815260408083206001600160a01b0386168452909152812090929054841015611a55576108216104419461081c611a25938587526007602052604087209060018060a01b0316600052602052604060002090565b60208101514210611a435750505b6040519081529081906020820190565b611a5092508051916144f4565b611a33565b6040516358371f2b60e11b815260048101859052602490fd5b346103db5760203660031901126103db576004356001600160401b038082116103db57366023830112156103db5781600401359081116103db5736602460608302840101116103db57600054604051630935e01b60e21b815233600482015290602090829060249082906001600160a01b03165afa9081156103d657600091611b04575b501561039657602461039492016134a6565b611b1c915060203d81116103cf576103c18183611ceb565b38611af2565b346103db576020806003193601126103db57611b3c6103e0565b9060009160065491835b838110611b5857604051858152602090f35b60008181526007835260408082206001600160a01b038616835260205290819020805490611b91611b8883613be1565b93519384611ceb565b818352600090815284812090858085015b848310611bea57505050505080516000915b818310611bc657505050600101611b46565b909196600190611be0611bd98a85613c5b565b51866142c2565b0197019190611bb4565b600191600591611bf98661369c565b8152019301910190918690611ba2565b634e487b7160e01b600052603260045260246000fd5b600654811015611c5a57600b906006600052027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600090565b611c09565b90600182811c92168015611c8f575b6020831014611c7957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c6e565b634e487b7160e01b600052604160045260246000fd5b6101a081019081106001600160401b03821117611ccb57604052565b611c99565b608081019081106001600160401b03821117611ccb57604052565b90601f801991011681019081106001600160401b03821117611ccb57604052565b9060405191826000825492611d2084611c5f565b908184526001948581169081600014611d8f5750600114611d4c575b5050611d4a92500383611ceb565b565b9093915060005260209081600020936000915b818310611d77575050611d4a93508201013880611d3c565b85548884018501529485019487945091830191611d5f565b915050611d4a94506020925060ff191682840152151560051b8201013880611d3c565b9a97936001600160401b039793610c239e9d9b979360208e61ffff9d99958152015260408d015260608c015260808b015260a08a015260c089015260e0880152610100870152166101208501521661014083015215156101608201526101a090816101808201520190610b26565b346103db5760203660031901126103db576004356006548110156103db57611e4790611c1f565b508054610441600183015460028401549260038501549460048101549260058201546006830154600784015490600885015492611e8b600a60098801549701611d0c565b976040519b8c9b8c9760ff8a60501c169a6001600160401b0361ffff8c60401c169b1699611db2565b8054821015611c5a576000526005602060002091020190600090565b346103db57611f07611ee13661077a565b9291600052600760205260406000209060018060a01b0316600052602052604060002090565b80548210156103db5760a091611f1c91611eb4565b50805490600181015490600281015460046003830154920154926040519485526020850152604084015260608301526080820152f35b346103db5760403660031901126103db57600435611f6e6103f6565b90600654811015610b0e57600091818352611fa460209160078352604085209060018060a01b0316600052602052604060002090565b805490611fb082613be1565b92611fbe6040519485611ceb565b82845280840191865280862086925b84841061201d57878787825b8151841015612012576104c861200c91610daa612000611ff98887613c5b565b51876142c2565b60806115a98988613c5b565b92611fd9565b604051908152602090f35b60058360019261202c8561369c565b815201920193019290611fcd565b346103db5760203660031901126103db57600435612056613bbe565b336000908152600c6020526040902054908115612142578061213c5750805b81116121225761208581336146aa565b156120dd57336000908152600c602052604090206120a48282546131fb565b905560405190815233907f593e1f56f7ca51a2318e287690f06c9f6930ad80990fa2e99b3bd61fb71b84ba90602090a261039460018055565b60405162461bcd60e51b815260206004820152601d60248201527f5265776172647357616c6c6574207472616e73666572206661696c65640000006044820152606490fd5b604051633728b83d60e01b81526004810191909152602490fd5b90612075565b604051633728b83d60e01b815260006004820152602490fd5b346103db576040806003193601126103db576004356024359161217c613bbe565b600654821015612345576000828152600760209081528282203383529052604090205483101561232e576121c28361081c336106aa866000526007602052604060002090565b509060066121cf84611c1f565b500154151580612317575b612300575b6121f16121eb8361369c565b846142c2565b91826122005761039460018055565b6004904260028201550161221583825461368f565b9055600861222284611c1f565b500161222f83825461368f565b905561223a83611c1f565b50541515806122df575b6122c8575b61225382336146aa565b1561228257519283526020830152339160008051602061487b83398151915290604090a35b38808080806113fe565b336000908152600c6020526040902091935060008051602061485b8339815191529250906122b184825461368f565b905551806122c0339482613d05565b0390a2612278565b6122d183613d73565b6122da83614064565b612249565b5060086122eb84611c1f565b5001546122f784611c1f565b50541115612244565b61230983613d73565b61231283614064565b6121df565b50600661232384611c1f565b5001544210156121da565b516358371f2b60e11b815260048101839052602490fd5b60249250519063d531737d60e01b82526004820152fd5b8054821015611c5a5760005260206000209060021b0190600090565b346103db5760403660031901126103db576024356004356000526008602052604060002080548210156103db576080916123b19161235c565b508054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b801515036103db57565b346103db5760403660031901126103db57602435612404816123dd565b600054612419906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d65760009161245a575b5015610396576103949060043561281c565b612472915060203d81116103cf576103c18183611ceb565b38612448565b346103db576000806003193601126124fb57805461249e906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d65782916124dd575b5015610396576124da613270565b80f35b6124f5915060203d81116103cf576103c18183611ceb565b386124cc565b80fd5b346103db5761250c3661077a565b91600654811015610b0e5760008181526007602090815260408083206001600160a01b038616845290915290205483101561258c576108216104419361081c602094612575946000526007865260406000209060018060a01b0316600052602052604060002090565b015160405142919091101581529081906020820190565b6040516358371f2b60e11b815260048101849052602490fd5b346103db5760203660031901126103db576000546125cb906001600160a01b0316610345565b604051630935e01b60e21b815233600482015290602090829060249082905afa9081156103d65760009161260b575b5015610396576103946004356128ea565b612623915060203d81116103cf576103c18183611ceb565b386125fa565b346103db576000806003193601126124fb57612643613bbe565b6006908154815b81811061265b57826124da60018055565b8361266582611c1f565b5001541515806127e5575b6127ce575b61268d336106aa836000526007602052604060002090565b805490845b8281106126a45750505060010161264a565b806126b160019284611eb4565b506126c46126be8261369c565b876142c2565b90816126d3575b505001612692565b4260028201556004018054820190556126eb86611c1f565b50600880910182815401905561270087611c1f565b50015461270c87611c1f565b50541115806127bb575b6127a4575b61272581336146aa565b15612762578560008051602061487b833981519152604051806127573395878360209093929193604081019481520152565b0390a35b38806126cb565b336000908152600c6020526040902061277c82825461368f565b905560008051602061485b8339815191526040518061279c339482613d05565b0390a261275b565b6127ad86613d73565b6127b686614064565b61271b565b506127c586611c1f565b50541515612716565b6127d781613d73565b6127e081614064565b612675565b50836127f082611c1f565b500154421015612670565b908160209103126103db5751610c23816123dd565b6040513d6000823e3d90fd5b90600654821015611712576020816128797f69d3787effb5480079bbae856a98c2cd600fb5353bbbee41fc17697b3954d72493600961285a87611c1f565b5001805460ff60501b191691151560501b60ff60501b16919091179055565b6040519015158152a2565b6001600160a01b039081169081156128d857600354826bffffffffffffffffffffffff60a01b821617600355167f52164aa782bea075ec17649c0b557515997f7cb8f9e872c55f96008ce22a3a33600080a3565b60405163e6c4247b60e01b8152600490fd5b60048054908290556040805191825260208201929092527f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d9190a1565b919060065483101561086457811515806129b3575b61299b5790817fb70e98e7951565fc8ac98d8ba009c0aa78fb4590a8e5aabde9892aae690cc32992600461296f86611c1f565b50015581600561297e86611c1f565b50015560408051918252602082019290925290819081015b0390a2565b60249060405190633728b83d60e01b82526004820152fd5b5081811161293c565b90600654821015611712576020817f1a2481bdd09a5b342ca8ddd176a364b46d678feb5bb2dff76497e0d86062987c9260066129f786611c1f565b500155604051908152a2565b90600654821015611712576ec097ce7bc90715b34b9f1000000000811161299b577f7429ea012ceb4586c833fdcc60d315aa3151c246e24bf79059c9aa8053ccacb190612a4f83611c1f565b505481612a5b85611c1f565b5055612a6684613d73565b612a6f84614064565b6040805191825260208201929092529081908101612996565b9160065483101561086457612aa8600a612aa185611c1f565b5001611d0c565b90600a612ab485611c1f565b50016001600160401b038211611ccb57612ad882612ad28354611c5f565b83612beb565b6000601f8311600114612b42579161299691817f6894c91c11f97120f9ef9b8ccffa18042ecaa0e8c97f6e8f5717eada49cf07e3969594600091612b37575b508260011b906000198460031b1c19161790555b60405193849384612c60565b905085013538612b17565b601f19831690612b5783600052602060002090565b91815b818110612bbd5750916129969391857f6894c91c11f97120f9ef9b8ccffa18042ecaa0e8c97f6e8f5717eada49cf07e39897969410612ba3575b5050600182811b019055612b2b565b860135600019600385901b60f8161c191690553880612b94565b9192602060018192868b013581550194019201612b5a565b634e487b7160e01b600052600060045260246000fd5b90601f8111612bf957505050565b600091825260208220906020601f850160051c83019410612c35575b601f0160051c01915b828110612c2a57505050565b818155600101612c1e565b9092508290612c15565b908060209392818452848401376000828201840152601f01601f1916010190565b91612c77610c239492604085526040850190610b26565b926020818503910152612c3f565b906006548210156117125761ffff80821690610fa08211612d1157916040917f3aeae2cd3c279a024cac8bf01cf1c099f7574b49ce77bab9729dbc3251df869b93612d016009612cd488611c1f565b500154936009612ce389611c1f565b50019061ffff60401b82549160401b169061ffff60401b1916179055565b835192841c1682526020820152a2565b604051633728b83d60e01b815260048101839052602490fd5b6001600160a01b039081169081156128d857600254826bffffffffffffffffffffffff60a01b821617600255167f85710b1053f40e0d492d81001a623cd191d251fed32881e7bb80fc1b66a6e463600080a3565b90929394979660009660018060a01b03885416996024602060409c8d5192838092630935e01b60e21b82523360048301525afa9081156103d6578a91612f24575b5015612f13576ec097ce7bc90715b34b9f10000000008611612efb57610fa061ffff861611612ee05793612e69612e92946129969794612e75948c9d9e987f150cb369f834b70a4f343956659b1f84cd37d44352b9a76ff77ac59552ef4aa09d612e27612f80565b9889528060208a01528a890152426060890152608088015260a087015260c08601528b60e08601528b6101008601526101208501906001600160401b03169052565b61ffff16610140830152565b87610160820152612e87368787612fb5565b6101808201526130ba565b612ed6612ea06006546131ec565b96612eb5886000526008602052604060002090565b612ebd612f8d565b9142835280602084015280858401526060830152613208565b5192839283613250565b8a51633728b83d60e01b815261ffff86166004820152602490fd5b8a51633728b83d60e01b815260048101879052602490fd5b8a5163036c8cf960e11b8152600490fd5b612f3c915060203d81116103cf576103c18183611ceb565b38612dbf565b6040519060c082018281106001600160401b03821117611ccb57604052565b6040519060a082018281106001600160401b03821117611ccb57604052565b60405190611d4a82611caf565b60405190611d4a82611cd0565b6001600160401b038111611ccb57601f01601f191660200190565b929192612fc182612f9a565b91612fcf6040519384611ceb565b8294818452818301116103db578281602093846000960137010152565b91909182516001600160401b038111611ccb576130138161300d8454611c5f565b84612beb565b602080601f831160011461304f575081929394600092613044575b50508160011b916000199060031b1c1916179055565b01519050388061302e565b90601f1983169561306585600052602060002090565b926000905b8882106130a257505083600195969710613089575b505050811b019055565b015160001960f88460031b161c1916905538808061307f565b8060018596829496860151815501950193019061306a565b600654600160401b811015611ccb578060016130d99201600655611c1f565b6131d157600a61018083611d4a945184556020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e0810151600785015561010081015160088501556131c86009850161317761315a6101208501516001600160401b031690565b825467ffffffffffffffff19166001600160401b03909116178255565b6131a661318a61014085015161ffff1690565b825461ffff60401b191660409190911b61ffff60401b16178255565b6101608301511515815460ff60501b191690151560501b60ff60501b16179055565b01519101612fec565b612bd5565b634e487b7160e01b600052601160045260246000fd5b60001981019190821161084657565b9190820391821161084657565b8054600160401b811015611ccb576132259160018201815561235c565b9190916131d15760608160039251845560208101516001850155604081015160028501550151910155565b916020610c23938181520191612c3f565b60001981146108465760010190565b60005b60065481101561333f57806132bd61328d61333a93611c1f565b506009908101805460ff60501b1916600160501b1790556132ad83611c1f565b5001805461ffff60401b19169055565b600060026132ca83611c1f565b500155600060076132da83611c1f565b500155600060046132ea83611c1f565b500155600060056132fa83611c1f565b500155807f69d3787effb5480079bbae856a98c2cd600fb5353bbbee41fc17697b3954d7246040518061333281906001602083019252565b0390a2613261565b613273565b5061335461334f60095460010190565b600955565b613366600160ff196005541617600555565b60005b6006548110156134215780807f459d2119d31d9e9f8ca61faa4372cb89990dc849eb039d39e2f85b41166baf3e6133326133b061341c956000526008602052604060002090565b6133b984611c1f565b506133f26001809201546133cd84886141cb565b936133d6612f8d565b9142835260208301526040946000868401526060830152613208565b6133fb85611c1f565b50015490514281526020810191909152600060408201529081906060820190565b613369565b507f0a3194d54d030766a03a57c8da69922243cd9f90aedddbf954a834e7d6a70cbb600080a1565b9190811015611c5a576060020190565b6060813603126103db576040519060608201908282106001600160401b03831117611ccb5760409182528035835260208101356020840152013561ffff811681036103db57604082015290565b6006928354830361366f576134c060ff1960055416600555565b60005b8454811015613643576134df6134da828686613449565b613459565b604090818101906134f2825161ffff1690565b610fa061ffff821611613626575061333284936136068594857fb70e98e7951565fc8ac98d8ba009c0aa78fb4590a8e5aabde9892aae690cc3297f3aeae2cd3c279a024cac8bf01cf1c099f7574b49ce77bab9729dbc3251df869b9661355a6136219b611c1f565b506009908101805460ff60501b19169055908051600461357986611c1f565b5001556135a460208201928351600561359188611c1f565b500155865161ffff1690612ce387611c1f565b6135ad84613d73565b6135b684614064565b837f69d3787effb5480079bbae856a98c2cd600fb5353bbbee41fc17697b3954d7248851806135ea81906000602083019252565b0390a251905186519182526020820152604090a25161ffff1690565b90516000815261ffff90911660208201529081906040820190565b6134c3565b8351633728b83d60e01b815261ffff919091166004820152602490fd5b50925050507f696f10054d6c1ede8f1a191c155c7e36b572da39bbd1faba110b029df808b1b7600080a1565b60405163512509d360e11b8152600490fd5b906001820180921161084657565b9190820180921161084657565b9060405160a081018181106001600160401b03821117611ccb57604052608060048294805484526001810154602085015260028101546040850152600381015460608501520154910152565b8181029291811591840414171561084657565b805460008083558161370c57505050565b600592828402928484040361084657815260208120918201915b8281106137335750505050565b808285925582600182015582600282015582600382015582600482015501613726565b801561212257600654336000908152600b6020526040812090928392915460095403613a5a575b336000908152600a60205260409020549180831015613a5357816137a5846137b494936131fb565b809111613a4b575b508261368f565b905b8181106138e95750336000908152600a60205260409020557fd9996fcfa05f18222e3e811aa63cfec080281e53cc6c41b8836f9ee58dd9ba6e9061299690836138b9575b80613819575b6040805194855260208501919091523393918291820190565b61382381336146aa565b61380057336000908152600c6020526040902061384182825461368f565b905560405160008051602061485b8339815191523391806138b1858260a091815260406020820152602e60408201527f5265776172647357616c6c6574207472616e73666572206661696c656420647560608201526d3934b7339036b4b3b930ba34b7b760911b60808201520190565b0390a2613800565b6138e484337f0000000000000000000000000000000000000000000000000000000000000000613a80565b6137fa565b613901336106aa836000526007602052604060002090565b80549081613914575b50506001016137b6565b600091805b61395c575050906001918261392d83611c1f565b5001908154039055613955613950336106aa846000526007602052604060002090565b6136fb565b903861390a565b6000190161396a8183611eb4565b508054908161397c575b505080613919565b81839295989961399461398e8461369c565b896142c2565b9601998601980194806139f2575b5054857fea0c0780680fae66f1e26fd6c4020591e8552b124d5d7e5b74f2810b0577aa93604051806139e93395878360409060009294936060820195825260208201520152565b0390a338613974565b600482018181540190554260028301556008613a0d88611c1f565b50018181540190558660008051602061487b83398151915260405180613a423395888360209093929193604081019481520152565b0390a3386139a2565b9050386137ad565b5050505050565b336000908152600a60209081526040808320879055600954600b9092529091205561377d565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152611d4a91613ab982611cd0565b600080613ae29260018060a01b03169360208151910182865af1613adb613b2b565b9083613b5b565b8051908115159182613b10575b5050613af85750565b60249060405190635274afe760e01b82526004820152fd5b613b2392506020809183010191016127fb565b153880613aef565b3d15613b56573d90613b3c82612f9a565b91613b4a6040519384611ceb565b82523d6000602084013e565b606090565b90613b825750805115613b7057805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580613bb5575b613b93575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15613b8b565b600260015414613bcf576002600155565b604051633ee5aeb560e01b8152600490fd5b6001600160401b038111611ccb5760051b60200190565b908154613c0481613be1565b92613c126040519485611ceb565b818452600090815260208082208186015b848410613c31575050505050565b600583600192613c408561369c565b815201920193019290613c23565b805115611c5a5760200190565b8051821015611c5a5760209160051b010190565b8054600160401b811015611ccb57613c8c91600182018155611eb4565b9190916131d1576080816004925184556020810151600185015560408101516002850155606081015160038501550151910155565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152611d4a91613ab9608483611ceb565b908152604060208201819052601d908201527f5265776172647357616c6c6574207472616e73666572206661696c6564000000606082015260800190565b8015613d535764496cebb8000490565b634e487b7160e01b600052601260045260246000fd5b8115613d53570490565b613d7c90611c1f565b5060055460ff16613e7e5760068101548015159081613e94575b50613e7e5760018101548154600883015460048401549180600586015492101580613e75575b15613de1575050613dd491505b806007840155613e9f565b6002820155600342910155565b83613df45750505050613dd46000613dc9565b613dd4938115613e6d57613e2791613e21613e1c6112f960098a01546001600160401b031690565b613d43565b90613f28565b9180151580613e64575b613e5c575b5080151580613e53575b613e4b575b50613dc9565b905038613e45565b50808211613e40565b915038613e36565b50808310613e31565b505050613dc9565b50801515613dbc565b6000600282015560006007820155600342910155565b905042101538613d96565b670de0b6b3a76400008181029060001981840990828083109203918083039214613f1a5764496cebb8009082821115613f08577fd18ce2d033892ab6710afe1da5f26d00b43f019695d75c72580c14ab81b64c47940990828211900360f51b9103600b1c170290565b60405163227bc15360e01b8152600490fd5b505064496cebb80091500490565b90918282029160001984820993838086109503948086039514613f9e5784831115613f085782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090610c239250613d69565b9061405c600a613fb9612f80565b938054855260018101546020860152600281015460408601526003810154606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460e0860152600881015461010086015261405660ff60098301546140396001600160401b0382166101208a01906001600160401b03169052565b604081901c61ffff1661014089015260501c161515610160870152565b01611d0c565b610180830152565b614070610caf82611c1f565b614084826000526008602052604060002090565b60055460ff168061417f575b61417a5780548015908115614154575b811561412e575b506140b157505050565b8161410f60207f459d2119d31d9e9f8ca61faa4372cb89990dc849eb039d39e2f85b41166baf3e9401916040835191019384516140ee82896141cb565b906140f7612f8d565b93428552602085015260408401526060830152613208565b5190516040805142815260208101939093528201528060608101612996565b6001915061413e614144916131ec565b8361235c565b50015460208301511415386140a7565b9050600261416a614164836131ec565b8461235c565b50015460408401511415906140a0565b505050565b5080541515614090565b90604051608081018181106001600160401b03821117611ccb576040526060600382948054845260018101546020850152600281015460408501520154910152565b9080548015614264576141f0916141e46141ea926131ec565b9061235c565b50614189565b9060066141fd4292611c1f565b5001548015158061425b575b614253575b508151908181111561424a5790614224916131fb565b90811561424157610daa610c2392604060608401519301516136e8565b60609150015190565b50506060015190565b90503861420e565b50808211614209565b505050600090565b90815461427881613be1565b926142866040519485611ceb565b818452600090815260208082208186015b8484106142a5575050505050565b6004836001926142b485614189565b815201920193019290614297565b9190916000926142e46142df836000526008602052604060002090565b61426c565b9081511561444b5760066142fc604083015194611c1f565b50015491429280151580614442575b61443a575b50828411614430576143228482614454565b606061432e8284613c5b565b5101519361433c8184614454565b906143478285613c5b565b515181111561441a5790610daa61436d614390936143658488613c5b565b5151906131fb565b6040614388606061437e868a613c5b565b5101519488613c5b565b5101516136e8565b945b61439c8284613c5b565b515181116143de575b5050508183116143b457505050565b610c239394506143d092916143ca9151926131fb565b906136e8565b670de0b6b3a7640000900490565b6144119394509060406143886143fb610daa946143658588613c5b565b9260606144088288613c5b565b51015195613c5b565b903880806143a5565b5061442760609184613c5b565b51015194614392565b5060009450505050565b925038614310565b5080841161430b565b50600093505050565b8051918215614264576144686000936131ec565b61447183613c4e565b515182106144ee576144838184613c5b565b51518210156144e75791905b82841061449c5750505090565b9091926144ba6144b46144af868461368f565b613681565b60011c90565b90826144c68386613c5b565b5151116144d75750925b919061448f565b93506144e2906131ec565b6144d0565b9250505090565b50505090565b610caf61450391949394611c1f565b6101208101916001600160401b038351161561444b576060015142034281116108465761453a6112f984516001600160401b031690565b918282101561443057926145896112f961457b6145959561ffff61457461458f9761456e61014061459d9c015161ffff1690565b936131fb565b91166136e8565b92516001600160401b031690565b90613d69565b846136e8565b612710900490565b918083116145a85750565b9150565b805480156145e65760001901906145c38282611eb4565b6131d1576004816000809355826001820155826002820155826003820155015555565b634e487b7160e01b600052603160045260246000fd5b60009081526007602090815260408083206001600160a01b039094168352929052208054801561417a578083101561417a5760001981019081116108465780830361464d575b50611d4a91506145ac565b61465a6146629183611eb4565b509282611eb4565b6131d15782611d4a938203614678575b50614642565b600481819254845560018101546001850155600281015460028501556003810154600385015501549101553880614672565b6002546040516323b872dd60e01b602082019081526001600160a01b03928316602483015291909216604483015260648083019390935291815260009182916146f4608482611ceb565b5190827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af161472b613b2b565b90156147545780518061473f575050600190565b6020111561474d5750600190565b6020015190565b50600090565b9061476482613be1565b604061477281519283611ceb565b8382528193614783601f1991613be1565b019060005b8281106147955750505050565b81519060c08201918083106001600160401b03841117611ccb57602092845260008152826000818301526000858301526000606083015260006080830152600060a0830152828701015201614788565b906147ef82613be1565b6147fc6040519182611ceb565b828152809261480d601f1991613be1565b0190602036910137565b4283111561426457610caf61482b91611c1f565b9142810390811161084657614851614856926040670de0b6b3a7640000950151906136e8565b6136e8565b049056feaa211e74adce5c21e4e0fc664561d516fa03c91b42283f5da9740ebb0f0e6901fc6ecd966b430510beae9124efe7dd517ed5286d7ed0ae258f8556c7a9765a44a2646970667358221220b119eca2bfbd9ccd76953d635b00a7010182e5ee6ba0446732bd827d5e1e809064736f6c634300081400330000000000000000000000009ff58067bd8d239000010c154c6983a325df138e0000000000000000000000008bca1c3affed700ed10ad33fc7d5273242d24e3e000000000000000000000000f788ffa00aa58721e2f49538f5de6b9c9418ae9f00000000000000000000000091e9588e0489725af78a1cfad842fa82a9b9e065