0 txs
177 calls
constructor
constructor()
functions
ACC_REWARD_SCALE
viewfunction ACC_REWARD_SCALE() view returns (uint256)
accRewardPerShare
viewfunction accRewardPerShare() view returns (uint256)
accRewardPerShareLocked
viewfunction accRewardPerShareLocked() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
balanceOfUnlocked
viewfunction balanceOfUnlocked(address user) view returns (uint256)
cooldownDuration
viewfunction cooldownDuration() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
diem
viewfunction diem() view returns (address)
diemMintRates
viewfunction diemMintRates(uint256) view returns (uint256)
diemSupply
viewfunction diemSupply(uint256) view returns (uint256)
emissionRatePerSecond
viewfunction emissionRatePerSecond() view returns (uint256)
getDiemAmountOut
viewfunction getDiemAmountOut(uint256 sVVVAmountToLock) view returns (uint256)
getVenicePercentage
viewfunction getVenicePercentage() view returns (uint256)
lastRewardTimestamp
viewfunction lastRewardTimestamp() view returns (uint256)
lockedStakes
viewfunction lockedStakes(address) view returns (uint256 sVVVLockedAmount, uint256 outstandingDiemAmount)
name
viewfunction name() view returns (string)
oracle
viewfunction oracle() view returns (address)
owner
viewfunction owner() view returns (address)
pendingRewards
viewfunction pendingRewards(address _user) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
stakes
viewfunction stakes(address) view returns (uint256 rewardDebt, uint256 cooldownEnd, uint256 cooldownAmount)
symbol
viewfunction symbol() view returns (string)
totalLockedStakedVVV
viewfunction totalLockedStakedVVV() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
venice
viewfunction venice() view returns (address)
veniceEmissionsPercentage
viewfunction veniceEmissionsPercentage() view returns (uint256)
veniceEmissionsPercentageWhenLocked
viewfunction veniceEmissionsPercentageWhenLocked() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
burnDiem
nonpayablefunction burnDiem(uint256 diemAmountToBurn)
claim
nonpayablefunction claim()
claimAndStake
nonpayablefunction claimAndStake()
finalizeUnstake
nonpayablefunction finalizeUnstake()
initialize
nonpayablefunction initialize(address _venice, address _oracle, address _treasury)
initiateUnstake
nonpayablefunction initiateUnstake(uint256 amount)
mintDiem
nonpayablefunction mintDiem(uint256 sVVVAmountToLock, uint256 minDiemAmountOut)
renounceOwnership
nonpayablefunction renounceOwnership()
setCooldownDuration
nonpayablefunction setCooldownDuration(uint256 _cooldownDuration)
setDiemMintCurve
nonpayablefunction setDiemMintCurve(uint256[256] _diemSupply, uint256[256] _diemMintRates)
setEmissionRate
nonpayablefunction setEmissionRate(uint256 _emissionRate)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setVeniceEmissionsPercentage
nonpayablefunction setVeniceEmissionsPercentage(uint256 _veniceEmissionsPercentage)
setVeniceEmissionsPercentageWhenLocked
nonpayablefunction setVeniceEmissionsPercentageWhenLocked(uint256 _veniceEmissionsPercentage)
stake
nonpayablefunction stake(address recipient, uint256 amount)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeInitialize
nonpayablefunction upgradeInitialize(address _diem)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Claimed
event Claimed(address indexed user, uint256 amount)
CooldownDurationUpdated
event CooldownDurationUpdated(uint256 newDuration)
DiemBurned
event DiemBurned(uint256 svvvUnlocked, uint256 diemBurned)
DiemMinted
event DiemMinted(uint256 svvvLocked, uint256 diemMinted)
DiemMintRatesUpdated
event DiemMintRatesUpdated(uint256[256] diemSupply, uint256[256] diemMintRates)
EmissionRateUpdated
event EmissionRateUpdated(uint256 newRate)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Staked
event Staked(address indexed user, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
TreasuryUpdated
event TreasuryUpdated(address newTreasury)
UnstakeFinalized
event UnstakeFinalized(address indexed user, uint256 amount)
UnstakeInitiated
event UnstakeInitiated(address indexed user, uint256 amount)
Upgraded
event Upgraded(address indexed implementation)
VeniceEmissionsPercentageUpdated
event VeniceEmissionsPercentageUpdated(uint256 newPercentage)
VeniceEmissionsPercentageWhenLockedUpdated
event VeniceEmissionsPercentageWhenLockedUpdated(uint256 newPercentage)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523461003c5730608052610015610040565b61001d610040565b604051612bd390816100fd82396080518181816110bf015261118f0152f35b5f80fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100ed576002600160401b03196001600160401b038216016100885750565b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1565b63f92ee8a960e01b5f5260045ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630342063b14611daa5750806306fdde0314611cc8578063095ea7b314611c235780630caf48d314611b725780630ea9434114611a3b57806316934fc4146119ec57806318160ddd146119c35780632006efcb1461181f57806323b872dd1461174857806325bef7461461172a57806325fae12b146117015780632c74d1df1461108e578063313ce567146116e557806331d7a262146116c157806335269315146116a357806340370f1f1461161357806345af37b2146115f55780634d44f110146113985780634e71d92d146113655780634f1ef2861461111357806352d1902d146110ac5780635dea41bb1461108e57806361d027b31461106557806370a0823114611020578063715018a614610fb75780637dc0d1d014610f8e57806387716cbf14610f6f5780638da5cb5b14610f3a5780638f1f8d0c14610f1357806392417dc714610ecf578063939d623714610eb157806395d89b4114610dbe578063966be07514610d705780639b1650ed14610d0f578063a1bdb15e14610cb9578063a80152d614610c9b578063a9059cbb14610c77578063aaaff76714610c05578063ad3cb1cc14610bc0578063ad66f18214610b97578063adc9772e14610b71578063ae5ac92114610965578063b4f70f7214610936578063c0c53b8b146103d5578063cb1a4fc0146103b2578063ceddd07d14610386578063dd62ed3e1461033e578063e3a684021461030a578063f0f442601461029c578063f2fde38b1461026f5763f8077fae1461024f575f80fd5b3461026c578060031936011261026c576020600754604051908152f35b80fd5b503461026c57602036600319011261026c5761029961028c611dee565b61029461252a565b6124b9565b80f35b503461026c57602036600319011261026c577f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d160206102d9611dee565b6102e161252a565b600280546001600160a01b0319166001600160a01b03929092169182179055604051908152a180f35b503461026c57602036600319011261026c5760043561010081101561033a576020915061010d0154604051908152f35b5080fd5b503461026c57604036600319011261026c57610358611dee565b610369610363611e04565b91611e1a565b9060018060a01b03165f52602052602060405f2054604051908152f35b503461026c57602036600319011261026c5760206103aa6103a5611dee565b612480565b604051908152f35b503461026c578060031936011261026c576102996103cf33611fa9565b3361236c565b503461026c57606036600319011261026c576103ef611dee565b6103f7611e04565b6044356001600160a01b03811690819003610932575f80516020612b7e833981519152549160ff8360401c16159267ffffffffffffffff81168015908161092a575b6001149081610920575b159081610917575b506109085767ffffffffffffffff1981166001175f80516020612b7e83398151915255836108dc575b5060409384516104848682611e52565b601381527229ba30b5b2b2102b32b734b1b2902a37b5b2b760691b60208201528551906104b18783611e52565b600482526339ab2b2b60e11b60208301526104ca612a34565b6104d2612a34565b80519067ffffffffffffffff82116108c85781906104fd5f80516020612abe83398151915254611ea4565b601f811161084e575b50602090601f83116001146107d2578a926107c7575b50508160011b915f199060031b1c1916175f80516020612abe833981519152555b80519067ffffffffffffffff82116107b35781906105685f80516020612afe83398151915254611ea4565b601f8111610739575b50602090601f83116001146106bd5789926106b2575b50508160011b915f199060031b1c1916175f80516020612afe833981519152555b6105b0612a34565b6105b8612a34565b6105c1336124b9565b6105c9612a34565b60018060a01b03166001600160601b0360a01b86541617855560018060a01b03166001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556706292e6de3503dd360035562093a8060045542600755301561069e5761063f670de0b6b3a76400003061298a565b610647575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f80516020612b7e83398151915254165f80516020612b7e833981519152555160018152a180f35b63ec442f0560e01b83526004839052602483fd5b015190505f80610587565b5f80516020612afe8339815191528a52818a209250601f1984168a5b8181106107215750908460019594939210610709575b505050811b015f80516020612afe833981519152556105a8565b01515f1960f88460031b161c191690555f80806106ef565b929360206001819287860151815501950193016106d9565b5f80516020612afe8339815191528a529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c810191602085106107a9575b90601f859493920160051c01905b81811061079b5750610571565b8a815584935060010161078e565b9091508190610780565b634e487b7160e01b88526041600452602488fd5b015190505f8061051c565b5f80516020612abe8339815191528b52818b209250601f1984168b5b818110610836575090846001959493921061081e575b505050811b015f80516020612abe8339815191525561053d565b01515f1960f88460031b161c191690555f8080610804565b929360206001819287860151815501950193016107ee565b5f80516020612abe8339815191528b529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c810191602085106108be575b90601f859493920160051c01905b8181106108b05750610506565b8b81558493506001016108a3565b9091508190610895565b634e487b7160e01b89526041600452602489fd5b68ffffffffffffffffff191668010000000000000001175f80516020612b7e833981519152555f610474565b63f92ee8a960e01b8652600486fd5b9050155f61044b565b303b159150610443565b859150610439565b8380fd5b503461026c57602036600319011261026c5760043561010081101561033a5760209150600d0154604051908152f35b503461026c57602036600319011261026c57600435906040906109ae825161098d8482611e52565b600c81526b554e5354414b455f5a45524f60a01b6020820152841515611edc565b33815260056020528181209060028201906109f88254158551906109d28783611e52565b6014825273434f4f4c444f574e5f494e5f50524f475245535360601b6020830152611edc565b610a1585610a0533612480565b1015610a0f611f18565b90611edc565b610a1e3361255d565b3315610b5d57610b14578390335f525f80516020612ade833981519152602052835f2054828110610af9578290335f525f80516020612ade83398151915260205203845f2055815f80516020612b3e83398151915254035f80516020612b3e833981519152555f84518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3610abc60045442611f4a565b600184015555610acb33612611565b9055519081527fc606a9f55fc42cd3159fcfc8ddcd749dd21c4574cca0b68a5a65d5f984b6c42c60203392a2005b905063391434e360e21b5f523360045260245260445260645ffd5b610b5983805190610b258183611e52565b60118252704e4f545f5452414e534645525241424c4560781b60208301525162461bcd60e51b815291829160048301611dc4565b0390fd5b634b637e8f60e11b81526004819052602490fd5b503461026c57604036600319011261026c57610299610b8e611dee565b6024359061236c565b503461026c578060031936011261026c57600c546040516001600160a01b039091168152602090f35b503461026c578060031936011261026c5750610c01604051610be3604082611e52565b60058152640352e302e360dc1b602082015260405191829182611dc4565b0390f35b503461026c57602036600319011261026c577f3fa751adc7d77b89491ef674a701215e6998cd5d3d73b083cc69e15c85f0790d6020600435610c4561252a565b610c4d6126e4565b610c69610c58612331565b670de0b6b3a7640000831115611edc565b80600955604051908152a180f35b503461026c57604036600319011261026c57610c91611dee565b602435903361266b565b503461026c578060031936011261026c576020600354604051908152f35b503461026c57602036600319011261026c577fffcc630bf88a67ba7c8b27440787c31777ae923aee1e9bbd0127feea56da2cd06020600435610cf961252a565b610d016126e4565b80600355604051908152a180f35b503461026c57602036600319011261026c577f38a604e8a36592c14768cd04d016e8f0be9e11c140f1643cd8d4266f9e28e9e46020600435610d4f61252a565b610d576126e4565b610d62610c58612331565b80600a55604051908152a180f35b503461026c57602036600319011261026c577f3b919acbae27b7c60197957a5423655702d842fcc85c19c7631dc1c777f478f56020600435610db061252a565b80600455604051908152a180f35b503461026c578060031936011261026c5760405190805f80516020612afe8339815191525490610ded82611ea4565b8085529160018116908115610e8a5750600114610e21575b610c0184610e1581860382611e52565b60405191829182611dc4565b5f80516020612afe83398151915281527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610e7057509091508101602001610e1582610e05565b919260018160209254838588010152019101909291610e57565b60ff191660208087019190915292151560051b85019092019250610e159150839050610e05565b503461026c578060031936011261026c576020600654604051908152f35b503461026c57602036600319011261026c5760409081906001600160a01b03610ef6611dee565b16815261020d602052206001815491015482519182526020820152f35b503461026c578060031936011261026c57546040516001600160a01b039091168152602090f35b503461026c578060031936011261026c575f80516020612b1e833981519152546040516001600160a01b039091168152602090f35b503461026c57602036600319011261026c5760206103aa6004356121a1565b503461026c578060031936011261026c576001546040516001600160a01b039091168152602090f35b503461026c578060031936011261026c57610fd061252a565b5f80516020612b1e83398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461026c57602036600319011261026c576020906040906001600160a01b03611048611dee565b1681525f80516020612ade83398151915283522054604051908152f35b503461026c578060031936011261026c576002546040516001600160a01b039091168152602090f35b503461026c578060031936011261026c576020600954604051908152f35b503461026c578060031936011261026c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036111045760206040515f80516020612b5e8339815191528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261026c57611128611dee565b6024359067ffffffffffffffff82116113615736602383011215611361578160040135908361115683611e88565b936111646040519586611e52565b8385526020850193366024828401011161136157806024602093018637850101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561133f575b50611330576111c761252a565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa8691816112f8575b5061120a57634c9c8ce360e01b86526004859052602486fd5b93845f80516020612b5e8339815191528796036112e65750823b156112d4575f80516020612b5e83398151915280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28051156112b9576112ad9382915190845af43d156112b1573d9161129183611e88565b9261129f6040519485611e52565b83523d85602085013e612a5f565b5080f35b606091612a5f565b50505050346112c55780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011611328575b8161131460209383611e52565b810103126113245751905f6111f1565b8680fd5b3d9150611307565b63703e46dd60e11b8452600484fd5b5f80516020612b5e833981519152546001600160a01b0316141590505f6111ba565b8280fd5b503461026c578060031936011261026c5761137f3361255d565b61138833612611565b3382526005602052604082205580f35b503461026c57602036600319011261026c576004356040906113dd82516113bf8482611e52565b60098152684255524e5f5a45524f60b81b6020820152821515611edc565b600c5482516370a0823160e01b815233600482015290602090829060249082906001600160a01b03165afa80156115e85784906115b0575b61142b915082611423611f18565b911015611edc565b33835261020d602052611448600183852001541515610a0f612166565b6114513361255d565b33835261020d602052818320908154916114e28261146f8582611f78565b60018401936114cc61148386548094611f8b565b80986114c78b516114948d82611e52565b601b81527f494e53554646494349454e545f4c4f434b45445f42414c414e43450000000000602082015283831015611edc565b611f6b565b90556114c76114d9612166565b83831015611edc565b90556114f082600b54611f6b565b600b55600c546001600160a01b031691823b156115ac578351632770a7eb60e21b81523360048201526024810183905292849290869081908690604490829084905af180156115a057611585575b507f77e8c1608e07b1a4395fc907407d6244a50b86eead919f3ee61d8ce99e204bd6935082519182526020820152a161157633612611565b90338352600560205282205580f35b611593919350809294611e52565b610932578183918561153e565b508351903d90823e3d90fd5b8480fd5b506020813d6020116115e0575b816115ca60209383611e52565b810103126115dc5761142b9051611415565b5f80fd5b3d91506115bd565b50505051903d90823e3d90fd5b503461026c578060031936011261026c576020600a54604051908152f35b503461026c57602036600319011261026c5761162d611dee565b61163561252a565b600c549061167a60405161164a604082611e52565b60138152721053149150511657d253925512505312569151606a1b60208201526001600160a01b03841615611edc565b6702c68af0bb140000600a556001600160a01b03166001600160a01b03199190911617600c5580f35b503461026c578060031936011261026c576020600454604051908152f35b503461026c57602036600319011261026c5760206103aa6116e0611dee565b611fa9565b503461026c578060031936011261026c57602060405160128152f35b503461026c578060031936011261026c5760206040516a0c097ce7bc90715b34b9f160241b8152f35b503461026c578060031936011261026c576020600b54604051908152f35b503461026c57606036600319011261026c57611762611dee565b61176a611e04565b906044359261177882611e1a565b335f9081526020919091526040902054905f198210611799575b505061266b565b848210611805576001600160a01b038316156117f15733156117dd57506117bf82611e1a565b60018060a01b0333165f526020528360405f20910390555f80611792565b634a1406b160e11b81526004819052602490fd5b63e602df0560e01b81526004819052602490fd5b84606492637dc7a0d960e11b835233600452602452604452fd5b50346115dc5760403660031901126115dc5760043560409061186482516118468482611e52565b60098152684c4f434b5f5a45524f60b81b6020820152821515611edc565b61186d3361255d565b61187a81610a0533612480565b335f5261020d602052815f2061188f826121a1565b906118d4845161189f8682611e52565b601981527f42454c4f575f4d494e5f4449454d5f414d4f554e545f4f5554000000000000006020820152602435841015611edc565b600181016118e3838254611f4a565b90556118f0838254611f4a565b90556118fe82600b54611f4a565b600b55600c546001600160a01b0316803b156115dc5783516340c10f1960e01b815233600482015260248101839052905f908290604490829084905af180156119b95761197f575b507fd081a649ef2f9530490e16b4ff4d6e1f46460e01107d1ecf7c576cca3cf9d35791839182519182526020820152a161157633612611565b83919450916119af5f7fd081a649ef2f9530490e16b4ff4d6e1f46460e01107d1ecf7c576cca3cf9d35794611e52565b5f94915091611946565b84513d5f823e3d90fd5b346115dc575f3660031901126115dc5760205f80516020612b3e83398151915254604051908152f35b346115dc5760203660031901126115dc576001600160a01b03611a0d611dee565b165f526005602052606060405f20805490600260018201549101549060405192835260208301526040820152f35b346115dc575f3660031901126115dc57335f52600560205260405f2060028101905f825492816001604094611a958651611a758882611e52565b600b81526a2727afa1a7a7a62227aba760a91b6020820152881515611edc565b01611ace8154421015865190611aab8883611e52565b601182527021a7a7a62227aba72fa727aa2fa7ab22a960791b6020830152611edc565b55555f8054825163a9059cbb60e01b8152336004820152602481018590529160209183916044918391906001600160a01b03165af18015611b6857611b3b575b50519081527fc819022d26707b1e41f61d9adc9481024e27272d949e34a1dfec4d7abf168a3360203392a2005b611b5c9060203d602011611b61575b611b548183611e52565b810190611f00565b611b0e565b503d611b4a565b82513d5f823e3d90fd5b346115dc576140003660031901126115dc5736612004116115dc5736614004116115dc57611b9e61252a565b5f5b6101008110908115611be8578060051b91826004013582600d015515611bd45760019161200401358161010d015501611ba0565b634e487b7160e01b5f52603260045260245ffd5b7fa17dd66150b8ad4ee99c4d23c5cdbb44eaa4076e6e1d854c3005aa021511da5a6140006040516120006004823761200061200481830137a1005b346115dc5760403660031901126115dc57611c3c611dee565b602435903315611cb5576001600160a01b0316908115611ca257611c5f33611e1a565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b346115dc575f3660031901126115dc576040515f5f80516020612abe83398151915254611cf481611ea4565b8084529060018116908115611d865750600114611d1c575b610c0183610e1581850382611e52565b5f80516020612abe8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611d6c57509091508101602001610e15611d0c565b919260018160209254838588010152019101909291611d54565b60ff191660208086019190915291151560051b84019091019150610e159050611d0c565b346115dc575f3660031901126115dc576020906008548152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036115dc57565b602435906001600160a01b03821682036115dc57565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90601f8019910116810190811067ffffffffffffffff821117611e7457604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111611e7457601f01601f191660200190565b90600182811c92168015611ed2575b6020831014611ebe57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611eb3565b15611ee45750565b60405162461bcd60e51b8152908190610b599060048301611dc4565b908160209103126115dc575180151581036115dc5790565b60405190611f27604083611e52565b6014825273494e53554646494349454e545f42414c414e434560601b6020830152565b91908201809211611f5757565b634e487b7160e01b5f52601160045260245ffd5b91908203918211611f5757565b81810292918115918404141715611f5757565b8115611f95570490565b634e487b7160e01b5f52601260045260245ffd5b6006549060085490600754804211612024575b50806a0c097ce7bc90715b34b9f160241b61200781611fe961202197611fe461200e97612480565b611f78565b049260018060a01b031694855f5261020d60205260405f2054611f78565b0490611f4a565b905f52600560205260405f205490611f6b565b90565b61203d6120346120599242611f6b565b60035490611f78565b670de0b6b3a764000061205260095483611f78565b0490611f6b565b600b54906120678282611f78565b946120a461208e6120875f80516020612b3e833981519152548099611f8b565b8094611f6b565b92670de0b6b3a7640000612052600a5483611f78565b956a0c097ce7bc90715b34b9f160241b8302928084046a0c097ce7bc90715b34b9f160241b1490151715611f57576120ef926120e3856120e993611f6b565b90611f8b565b90611f4a565b93816120fc575b50611fbc565b6a0c097ce7bc90715b34b9f160241b81959493929502908082046a0c097ce7bc90715b34b9f160241b1490151715611f57576120076a0c097ce7bc90715b34b9f160241b611fe961215861200e966120e96120219a8597611f8b565b9697505050508192506120f6565b60405190612175604083611e52565b601e82527f494e53554646494349454e545f4f55545354414e44494e475f4449454d5300006020830152565b600c546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa908115612326575f916122f4575b50905f905f5b6101008110156122eb5780600d015493848110156122e157612203818361010d015496611f6b565b61220d8187611f78565b670de0b6b3a763ffff8101809111611f5757670de0b6b3a764000090048481106122b55750505050670de0b6b3a7640000810290808204670de0b6b3a76400001490151715611f5757612263926120e991611f8b565b5f5b61226c5790565b610b5960405161227d604082611e52565b6013815272494e53554646494349454e545f535550504c5960681b602082015260405162461bcd60e51b815291829160048301611dc4565b60019396506122d3906122cd836122d9959798611f4a565b96611f6b565b93611f4a565b935b016121db565b93506001906122db565b50909150612265565b90506020813d60201161231e575b8161230f60209383611e52565b810103126115dc57515f6121d5565b3d9150612302565b6040513d5f823e3d90fd5b60405190612340604083611e52565b601c82527f494e56414c49445f454d495353494f4e535f50455243454e54414745000000006020830152565b90604061239d815161237e8382611e52565b600a8152695354414b455f5a45524f60b01b6020820152831515611edc565b6123a68361255d565b6001600160a01b03831692831561246d576123c1838261298a565b5f805483516323b872dd60e01b8152336004820152306024820152604481018690529160209183916064918391906001600160a01b03165af18015612463577f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d94926020949261243692612448575b50612611565b855f5260058452815f205551908152a2565b61245e90863d8811611b6157611b548183611e52565b612430565b83513d5f823e3d90fd5b63ec442f0560e01b5f525f60045260245ffd5b6001600160a01b03165f9081525f80516020612ade833981519152602090815260408083205461020d9092529091205461202191611f6b565b6001600160a01b03168015612517575f80516020612b1e83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f80516020612b1e833981519152546001600160a01b0316330361254a57565b63118cdaa760e01b5f523360045260245ffd5b6125656126e4565b61256e81611fa9565b9081612578575050565b5f805460405163a9059cbb60e01b81526001600160a01b03848116600483015260248201869052909392602092859260449284929091165af1908115612326577fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a926020926125f6575b506040519384526001600160a01b031692a2565b61260c90833d8511611b6157611b548183611e52565b6125e2565b612021906a0c097ce7bc90715b34b9f160241b61263961263083612480565b60065490611f78565b049060018060a01b03165f5261020d6020526a0c097ce7bc90715b34b9f160241b61200760405f205460085490611f78565b9091506001600160a01b0316156126d1576001600160a01b03161561246d57610b5960405161269b604082611e52565b60118152704e4f545f5452414e534645525241424c4560781b602082015260405162461bcd60e51b815291829160048301611dc4565b634b637e8f60e11b5f525f60045260245ffd5b6007545f9080421115612790576126fe61270b9142611f6b565b4260075560035490611f78565b801561279057612731670de0b6b3a764000061272960095484611f78565b048092611f6b565b5f80516020612b3e8339815191525490600b5461276b6127646127548386611f6b565b9461275f8486611f78565b611f8b565b8093611f6b565b925f9380158015612916575b50505081612867575b505090806127fb575b5080612794575b5050565b81546001600160a01b031690813b15611361576040516340c10f1960e01b815230600482015260248101919091529082908290604490829084905af180156127f0576127de575050565b6127e9828092611e52565b61026c5750565b6040513d84823e3d90fd5b5f546002546001600160a01b0391821692911690823b156115dc576040516340c10f1960e01b81526001600160a01b039290921660048301526024820152905f908290604490829084905af1801561232657156127895761285f9192505f90611e52565b5f905f612789565b612887670de0b6b3a764000061287f600a5485611f78565b048093611f6b565b6a0c097ce7bc90715b34b9f160241b8102908082046a0c097ce7bc90715b34b9f160241b1490151715611f5757816128be91611f8b565b90816128d9575b50506128d19192611f4a565b905f80612780565b906128d1936129076a0c097ce7bc90715b34b9f160241b6128fd61290f9585611f78565b0492600854611f4a565b600855611f4a565b915f6128c5565b6a0c097ce7bc90715b34b9f160241b82029182046a0c097ce7bc90715b34b9f160241b141715611f57578161294a91611f8b565b9081612957575b80612777565b8194506129766a0c097ce7bc90715b34b9f160241b9161298093611f78565b0493600654611f4a565b6006555f80612951565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60205f926129c7855f80516020612b3e83398151915254611f4a565b5f80516020612b3e833981519152556001600160a01b03169384158414612a1257805f80516020612b3e83398151915254035f80516020612b3e833981519152555b604051908152a3565b8484525f80516020612ade833981519152825260408420818154019055612a09565b60ff5f80516020612b7e8339815191525460401c1615612a5057565b631afcd79f60e31b5f5260045ffd5b90612a835750805115612a7457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580612ab4575b612a94575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15612a8c56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220198526574012b3e2ea30d975e702291f47b383b112d9f989826b295f9cfd314664736f6c634300081a0033