Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 331 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 16065953 | 1188 days ago | IN | 0 ETH | 0.01019863 | ||||
| Create_lock | 15696798 | 1240 days ago | IN | 0 ETH | 0.00410625 | ||||
| Withdraw | 15696788 | 1240 days ago | IN | 0 ETH | 0.00261618 | ||||
| Withdraw | 15693840 | 1240 days ago | IN | 0 ETH | 0.00164443 | ||||
| Create_lock | 15661868 | 1245 days ago | IN | 0 ETH | 0.00263511 | ||||
| Withdraw | 15602151 | 1253 days ago | IN | 0 ETH | 0.00222025 | ||||
| Withdraw | 15558885 | 1259 days ago | IN | 0 ETH | 0.00220587 | ||||
| Create_lock | 15405665 | 1284 days ago | IN | 0 ETH | 0.01161603 | ||||
| Withdraw | 15161209 | 1322 days ago | IN | 0 ETH | 0.00339747 | ||||
| Create_lock | 15157695 | 1322 days ago | IN | 0 ETH | 0.00412308 | ||||
| Create_lock | 15077980 | 1335 days ago | IN | 0 ETH | 0.007956 | ||||
| Withdraw | 15041040 | 1341 days ago | IN | 0 ETH | 0.01126342 | ||||
| Create_lock | 15027438 | 1343 days ago | IN | 0 ETH | 0.01424015 | ||||
| Increase_amount | 14999449 | 1348 days ago | IN | 0 ETH | 0.00425567 | ||||
| Create_lock | 14988380 | 1350 days ago | IN | 0 ETH | 0.00749174 | ||||
| Create_lock | 14984655 | 1351 days ago | IN | 0 ETH | 0.01549594 | ||||
| Withdraw | 14871293 | 1370 days ago | IN | 0 ETH | 0.00536566 | ||||
| Create_lock | 14868552 | 1371 days ago | IN | 0 ETH | 0.01285217 | ||||
| Increase_unlock_... | 14863056 | 1372 days ago | IN | 0 ETH | 0.00371123 | ||||
| Withdraw | 14854538 | 1373 days ago | IN | 0 ETH | 0.01336899 | ||||
| Create_lock | 14830295 | 1377 days ago | IN | 0 ETH | 0.00637011 | ||||
| Create_lock | 14822369 | 1378 days ago | IN | 0 ETH | 0.0047011 | ||||
| Create_lock | 14813502 | 1380 days ago | IN | 0 ETH | 0.00997489 | ||||
| Create_lock | 14801897 | 1381 days ago | IN | 0 ETH | 0.01319457 | ||||
| Withdraw | 14800352 | 1382 days ago | IN | 0 ETH | 0.00804819 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.4
Contract Source Code (Vyper language format)
# @version 0.2.4
"""
@title Voting Escrow
@author Curve Finance
@license MIT
@notice Votes have a weight depending on time, so that users are
committed to the future of (whatever they are voting for)
@dev Vote weight decays linearly over time. Lock time cannot be
more than `MAXTIME` (4 years).
"""
# Voting escrow to have time-weighted votes
# Votes have a weight depending on time, so that users are committed
# to the future of (whatever they are voting for).
# The weight in this implementation is linear, and lock cannot be more than maxtime:
# w ^
# 1 + /
# | /
# | /
# | /
# |/
# 0 +--------+------> time
# maxtime (4 years?)
struct Point:
bias: int128
slope: int128 # - dweight / dt
ts: uint256
blk: uint256 # block
# We cannot really do block numbers per se b/c slope is per time, not per block
# and per block could be fairly bad b/c Ethereum changes blocktimes.
# What we can do is to extrapolate ***At functions
struct LockedBalance:
amount: int128
end: uint256
interface ERC20:
def decimals() -> uint256: view
def name() -> String[64]: view
def symbol() -> String[32]: view
def transfer(to: address, amount: uint256) -> bool: nonpayable
def transferFrom(spender: address, to: address, amount: uint256) -> bool: nonpayable
# Interface for checking whether address belongs to a whitelisted
# type of a smart wallet.
# When new types are added - the whole contract is changed
# The check() method is modifying to be able to use caching
# for individual wallet addresses
interface SmartWalletChecker:
def check(addr: address) -> bool: nonpayable
DEPOSIT_FOR_TYPE: constant(int128) = 0
CREATE_LOCK_TYPE: constant(int128) = 1
INCREASE_LOCK_AMOUNT: constant(int128) = 2
INCREASE_UNLOCK_TIME: constant(int128) = 3
event Shutdown:
pass
event CommitOwnership:
admin: address
event ApplyOwnership:
admin: address
event Deposit:
provider: indexed(address)
value: uint256
locktime: indexed(uint256)
type: int128
ts: uint256
event Withdraw:
provider: indexed(address)
value: uint256
ts: uint256
event Supply:
prevSupply: uint256
supply: uint256
WEEK: constant(uint256) = 7 * 86400 # all future times are rounded by week
MAXTIME: constant(uint256) = 4 * 365 * 86400 # 4 years
MULTIPLIER: constant(uint256) = 10 ** 18
token: public(address)
supply: public(uint256)
locked: public(HashMap[address, LockedBalance])
epoch: public(uint256)
point_history: public(Point[100000000000000000000000000000]) # epoch -> unsigned point
user_point_history: public(HashMap[address, Point[1000000000]]) # user -> Point[user_epoch]
user_point_epoch: public(HashMap[address, uint256])
slope_changes: public(HashMap[uint256, int128]) # time -> signed slope change
# Aragon's view methods for compatibility
controller: public(address)
transfersEnabled: public(bool)
name: public(String[64])
symbol: public(String[32])
version: public(String[32])
decimals: public(uint256)
# Checker for whitelisted (smart contract) wallets which are allowed to deposit
# The goal is to prevent tokenizing the escrow
future_smart_wallet_checker: public(address)
smart_wallet_checker: public(address)
admin: public(address) # Can and will be a smart contract
future_admin: public(address)
# Functionality added by APY.Finance to allow complete
# shutdown of this contract while allowing users to
# withdraw their locked deposits
is_shutdown: public(bool)
@external
def __init__(token_addr: address, _name: String[64], _symbol: String[32], _version: String[32]):
"""
@notice Contract constructor
@param token_addr `ERC20CRV` token address
@param _name Token name
@param _symbol Token symbol
@param _version Contract version - required for Aragon compatibility
"""
self.admin = msg.sender
self.token = token_addr
self.point_history[0].blk = block.number
self.point_history[0].ts = block.timestamp
self.controller = msg.sender
self.transfersEnabled = True
_decimals: uint256 = ERC20(token_addr).decimals()
assert _decimals <= 255
self.decimals = _decimals
self.name = _name
self.symbol = _symbol
self.version = _version
self.is_shutdown = False
@external
def shutdown():
"""
@notice Disable deposits but allow withdrawals regardless of lock
"""
assert msg.sender == self.admin, "Admin only" # dev: admin only
self.is_shutdown = True
log Shutdown()
@external
def commit_transfer_ownership(addr: address):
"""
@notice Transfer ownership of VotingEscrow contract to `addr`
@param addr Address to have ownership transferred to
"""
assert msg.sender == self.admin # dev: admin only
self.future_admin = addr
log CommitOwnership(addr)
@external
def apply_transfer_ownership():
"""
@notice Apply ownership transfer
"""
assert msg.sender == self.admin # dev: admin only
_admin: address = self.future_admin
assert _admin != ZERO_ADDRESS # dev: admin not set
self.admin = _admin
log ApplyOwnership(_admin)
@external
def commit_smart_wallet_checker(addr: address):
"""
@notice Set an external contract to check for approved smart contract wallets
@param addr Address of Smart contract checker
"""
assert msg.sender == self.admin
self.future_smart_wallet_checker = addr
@external
def apply_smart_wallet_checker():
"""
@notice Apply setting external contract to check approved smart contract wallets
"""
assert msg.sender == self.admin
self.smart_wallet_checker = self.future_smart_wallet_checker
@internal
def assert_not_contract(addr: address):
"""
@notice Check if the call is from a whitelisted smart contract, revert if not
@param addr Address to be checked
"""
if addr != tx.origin:
checker: address = self.smart_wallet_checker
if checker != ZERO_ADDRESS:
if SmartWalletChecker(checker).check(addr):
return
raise "Smart contract depositors not allowed"
@external
@view
def get_last_user_slope(addr: address) -> int128:
"""
@notice Get the most recently recorded rate of voting power decrease for `addr`
@param addr Address of the user wallet
@return Value of the slope
"""
uepoch: uint256 = self.user_point_epoch[addr]
return self.user_point_history[addr][uepoch].slope
@external
@view
def user_point_history__ts(_addr: address, _idx: uint256) -> uint256:
"""
@notice Get the timestamp for checkpoint `_idx` for `_addr`
@param _addr User wallet address
@param _idx User epoch number
@return Epoch time of the checkpoint
"""
return self.user_point_history[_addr][_idx].ts
@external
@view
def locked__end(_addr: address) -> uint256:
"""
@notice Get timestamp when `_addr`'s lock finishes
@param _addr User wallet
@return Epoch time of the lock end
"""
return self.locked[_addr].end
@internal
def _checkpoint(addr: address, old_locked: LockedBalance, new_locked: LockedBalance):
"""
@notice Record global and per-user data to checkpoint
@param addr User's wallet address. No user checkpoint if 0x0
@param old_locked Pevious locked amount / end lock time for the user
@param new_locked New locked amount / end lock time for the user
"""
u_old: Point = empty(Point)
u_new: Point = empty(Point)
old_dslope: int128 = 0
new_dslope: int128 = 0
_epoch: uint256 = self.epoch
if addr != ZERO_ADDRESS:
# Calculate slopes and biases
# Kept at zero when they have to
if old_locked.end > block.timestamp and old_locked.amount > 0:
u_old.slope = old_locked.amount / MAXTIME
u_old.bias = u_old.slope * convert(old_locked.end - block.timestamp, int128)
if new_locked.end > block.timestamp and new_locked.amount > 0:
u_new.slope = new_locked.amount / MAXTIME
u_new.bias = u_new.slope * convert(new_locked.end - block.timestamp, int128)
# Read values of scheduled changes in the slope
# old_locked.end can be in the past and in the future
# new_locked.end can ONLY by in the FUTURE unless everything expired: than zeros
old_dslope = self.slope_changes[old_locked.end]
if new_locked.end != 0:
if new_locked.end == old_locked.end:
new_dslope = old_dslope
else:
new_dslope = self.slope_changes[new_locked.end]
last_point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number})
if _epoch > 0:
last_point = self.point_history[_epoch]
last_checkpoint: uint256 = last_point.ts
# initial_last_point is used for extrapolation to calculate block number
# (approximately, for *At methods) and save them
# as we cannot figure that out exactly from inside the contract
initial_last_point: Point = last_point
block_slope: uint256 = 0 # dblock/dt
if block.timestamp > last_point.ts:
block_slope = MULTIPLIER * (block.number - last_point.blk) / (block.timestamp - last_point.ts)
# If last point is already recorded in this block, slope=0
# But that's ok b/c we know the block in such case
# Go over weeks to fill history and calculate what the current point is
t_i: uint256 = (last_checkpoint / WEEK) * WEEK
for i in range(255):
# Hopefully it won't happen that this won't get used in 5 years!
# If it does, users will be able to withdraw but vote weight will be broken
t_i += WEEK
d_slope: int128 = 0
if t_i > block.timestamp:
t_i = block.timestamp
else:
d_slope = self.slope_changes[t_i]
last_point.bias -= last_point.slope * convert(t_i - last_checkpoint, int128)
last_point.slope += d_slope
if last_point.bias < 0: # This can happen
last_point.bias = 0
if last_point.slope < 0: # This cannot happen - just in case
last_point.slope = 0
last_checkpoint = t_i
last_point.ts = t_i
last_point.blk = initial_last_point.blk + block_slope * (t_i - initial_last_point.ts) / MULTIPLIER
_epoch += 1
if t_i == block.timestamp:
last_point.blk = block.number
break
else:
self.point_history[_epoch] = last_point
self.epoch = _epoch
# Now point_history is filled until t=now
if addr != ZERO_ADDRESS:
# If last point was in this block, the slope change has been applied already
# But in such case we have 0 slope(s)
last_point.slope += (u_new.slope - u_old.slope)
last_point.bias += (u_new.bias - u_old.bias)
if last_point.slope < 0:
last_point.slope = 0
if last_point.bias < 0:
last_point.bias = 0
# Record the changed point into history
self.point_history[_epoch] = last_point
if addr != ZERO_ADDRESS:
# Schedule the slope changes (slope is going down)
# We subtract new_user_slope from [new_locked.end]
# and add old_user_slope to [old_locked.end]
if old_locked.end > block.timestamp:
# old_dslope was <something> - u_old.slope, so we cancel that
old_dslope += u_old.slope
if new_locked.end == old_locked.end:
old_dslope -= u_new.slope # It was a new deposit, not extension
self.slope_changes[old_locked.end] = old_dslope
if new_locked.end > block.timestamp:
if new_locked.end > old_locked.end:
new_dslope -= u_new.slope # old slope disappeared at this point
self.slope_changes[new_locked.end] = new_dslope
# else: we recorded it already in old_dslope
# Now handle user history
user_epoch: uint256 = self.user_point_epoch[addr] + 1
self.user_point_epoch[addr] = user_epoch
u_new.ts = block.timestamp
u_new.blk = block.number
self.user_point_history[addr][user_epoch] = u_new
@internal
def _deposit_for(_addr: address, _value: uint256, unlock_time: uint256, locked_balance: LockedBalance, type: int128):
"""
@notice Deposit and lock tokens for a user
@param _addr User's wallet address
@param _value Amount to deposit
@param unlock_time New time when to unlock the tokens, or 0 if unchanged
@param locked_balance Previous locked amount / timestamp
"""
_locked: LockedBalance = locked_balance
supply_before: uint256 = self.supply
self.supply = supply_before + _value
old_locked: LockedBalance = _locked
# Adding to existing lock, or if a lock is expired - creating a new one
_locked.amount += convert(_value, int128)
if unlock_time != 0:
_locked.end = unlock_time
self.locked[_addr] = _locked
# Possibilities:
# Both old_locked.end could be current or expired (>/< block.timestamp)
# value == 0 (extend lock) or value > 0 (add to lock or extend lock)
# _locked.end > block.timestamp (always)
self._checkpoint(_addr, old_locked, _locked)
if _value != 0:
assert ERC20(self.token).transferFrom(_addr, self, _value)
log Deposit(_addr, _value, _locked.end, type, block.timestamp)
log Supply(supply_before, supply_before + _value)
@external
def checkpoint():
"""
@notice Record global data to checkpoint
"""
self._checkpoint(ZERO_ADDRESS, empty(LockedBalance), empty(LockedBalance))
@external
@nonreentrant('lock')
def deposit_for(_addr: address, _value: uint256):
"""
@notice Deposit `_value` tokens for `_addr` and add to the lock
@dev Anyone (even a smart contract) can deposit for someone else, but
cannot extend their locktime and deposit for a brand new user
@param _addr User's wallet address
@param _value Amount to add to user's lock
"""
_locked: LockedBalance = self.locked[_addr]
assert not self.is_shutdown, "Contract is shutdown"
assert _value > 0 # dev: need non-zero value
assert _locked.amount > 0, "No existing lock found"
assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw"
self._deposit_for(_addr, _value, 0, self.locked[_addr], DEPOSIT_FOR_TYPE)
@external
@nonreentrant('lock')
def create_lock(_value: uint256, _unlock_time: uint256):
"""
@notice Deposit `_value` tokens for `msg.sender` and lock until `_unlock_time`
@param _value Amount to deposit
@param _unlock_time Epoch time when tokens unlock, rounded down to whole weeks
"""
self.assert_not_contract(msg.sender)
unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks
_locked: LockedBalance = self.locked[msg.sender]
assert not self.is_shutdown, "Contract is shutdown"
assert _value > 0 # dev: need non-zero value
assert _locked.amount == 0, "Withdraw old tokens first"
assert unlock_time > block.timestamp, "Can only lock until time in the future"
assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max"
self._deposit_for(msg.sender, _value, unlock_time, _locked, CREATE_LOCK_TYPE)
@external
@nonreentrant('lock')
def increase_amount(_value: uint256):
"""
@notice Deposit `_value` additional tokens for `msg.sender`
without modifying the unlock time
@param _value Amount of tokens to deposit and add to the lock
"""
self.assert_not_contract(msg.sender)
_locked: LockedBalance = self.locked[msg.sender]
assert not self.is_shutdown, "Contract is shutdown"
assert _value > 0 # dev: need non-zero value
assert _locked.amount > 0, "No existing lock found"
assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw"
self._deposit_for(msg.sender, _value, 0, _locked, INCREASE_LOCK_AMOUNT)
@external
@nonreentrant('lock')
def increase_unlock_time(_unlock_time: uint256):
"""
@notice Extend the unlock time for `msg.sender` to `_unlock_time`
@param _unlock_time New epoch time for unlocking
"""
self.assert_not_contract(msg.sender)
_locked: LockedBalance = self.locked[msg.sender]
unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks
assert not self.is_shutdown, "Contract is shutdown"
assert _locked.end > block.timestamp, "Lock expired"
assert _locked.amount > 0, "Nothing is locked"
assert unlock_time > _locked.end, "Can only increase lock duration"
assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max"
self._deposit_for(msg.sender, 0, unlock_time, _locked, INCREASE_UNLOCK_TIME)
@external
@nonreentrant('lock')
def withdraw():
"""
@notice Withdraw all tokens for `msg.sender`
@dev Only possible if the lock has expired
"""
_locked: LockedBalance = self.locked[msg.sender]
assert block.timestamp >= _locked.end or self.is_shutdown, "The lock didn't expire"
value: uint256 = convert(_locked.amount, uint256)
old_locked: LockedBalance = _locked
_locked.end = 0
_locked.amount = 0
self.locked[msg.sender] = _locked
supply_before: uint256 = self.supply
self.supply = supply_before - value
# old_locked can have either expired <= timestamp or zero end
# _locked has only 0 end
# Both can have >= 0 amount
if not self.is_shutdown:
self._checkpoint(msg.sender, old_locked, _locked)
assert ERC20(self.token).transfer(msg.sender, value)
log Withdraw(msg.sender, value, block.timestamp)
log Supply(supply_before, supply_before - value)
# The following ERC20/minime-compatible methods are not real balanceOf and supply!
# They measure the weights for the purpose of voting, so they don't represent
# real coins.
@internal
@view
def find_block_epoch(_block: uint256, max_epoch: uint256) -> uint256:
"""
@notice Binary search to estimate timestamp for block number
@param _block Block to find
@param max_epoch Don't go beyond this epoch
@return Approximate timestamp for block
"""
# Binary search
_min: uint256 = 0
_max: uint256 = max_epoch
for i in range(128): # Will be always enough for 128-bit numbers
if _min >= _max:
break
_mid: uint256 = (_min + _max + 1) / 2
if self.point_history[_mid].blk <= _block:
_min = _mid
else:
_max = _mid - 1
return _min
@external
@view
def balanceOf(addr: address, _t: uint256 = block.timestamp) -> uint256:
"""
@notice Get the current voting power for `msg.sender`
@dev Adheres to the ERC20 `balanceOf` interface for Aragon compatibility
@param addr User wallet address
@param _t Epoch time to return voting power at
@return User voting power
"""
_epoch: uint256 = self.user_point_epoch[addr]
if _epoch == 0:
return 0
else:
last_point: Point = self.user_point_history[addr][_epoch]
last_point.bias -= last_point.slope * convert(_t - last_point.ts, int128)
if last_point.bias < 0:
last_point.bias = 0
return convert(last_point.bias, uint256)
@external
@view
def balanceOfAt(addr: address, _block: uint256) -> uint256:
"""
@notice Measure voting power of `addr` at block height `_block`
@dev Adheres to MiniMe `balanceOfAt` interface: https://github.com/Giveth/minime
@param addr User's wallet address
@param _block Block to calculate the voting power at
@return Voting power
"""
# Copying and pasting totalSupply code because Vyper cannot pass by
# reference yet
assert _block <= block.number
# Binary search
_min: uint256 = 0
_max: uint256 = self.user_point_epoch[addr]
for i in range(128): # Will be always enough for 128-bit numbers
if _min >= _max:
break
_mid: uint256 = (_min + _max + 1) / 2
if self.user_point_history[addr][_mid].blk <= _block:
_min = _mid
else:
_max = _mid - 1
upoint: Point = self.user_point_history[addr][_min]
max_epoch: uint256 = self.epoch
_epoch: uint256 = self.find_block_epoch(_block, max_epoch)
point_0: Point = self.point_history[_epoch]
d_block: uint256 = 0
d_t: uint256 = 0
if _epoch < max_epoch:
point_1: Point = self.point_history[_epoch + 1]
d_block = point_1.blk - point_0.blk
d_t = point_1.ts - point_0.ts
else:
d_block = block.number - point_0.blk
d_t = block.timestamp - point_0.ts
block_time: uint256 = point_0.ts
if d_block != 0:
block_time += d_t * (_block - point_0.blk) / d_block
upoint.bias -= upoint.slope * convert(block_time - upoint.ts, int128)
if upoint.bias >= 0:
return convert(upoint.bias, uint256)
else:
return 0
@internal
@view
def supply_at(point: Point, t: uint256) -> uint256:
"""
@notice Calculate total voting power at some point in the past
@param point The point (bias/slope) to start search from
@param t Time to calculate the total voting power at
@return Total voting power at that time
"""
last_point: Point = point
t_i: uint256 = (last_point.ts / WEEK) * WEEK
for i in range(255):
t_i += WEEK
d_slope: int128 = 0
if t_i > t:
t_i = t
else:
d_slope = self.slope_changes[t_i]
last_point.bias -= last_point.slope * convert(t_i - last_point.ts, int128)
if t_i == t:
break
last_point.slope += d_slope
last_point.ts = t_i
if last_point.bias < 0:
last_point.bias = 0
return convert(last_point.bias, uint256)
@external
@view
def totalSupply(t: uint256 = block.timestamp) -> uint256:
"""
@notice Calculate total voting power
@dev Adheres to the ERC20 `totalSupply` interface for Aragon compatibility
@return Total voting power
"""
_epoch: uint256 = self.epoch
last_point: Point = self.point_history[_epoch]
return self.supply_at(last_point, t)
@external
@view
def totalSupplyAt(_block: uint256) -> uint256:
"""
@notice Calculate total voting power at some point in the past
@param _block Block to calculate the total voting power at
@return Total voting power at `_block`
"""
assert _block <= block.number
_epoch: uint256 = self.epoch
target_epoch: uint256 = self.find_block_epoch(_block, _epoch)
point: Point = self.point_history[target_epoch]
dt: uint256 = 0
if target_epoch < _epoch:
point_next: Point = self.point_history[target_epoch + 1]
if point.blk != point_next.blk:
dt = (_block - point.blk) * (point_next.ts - point.ts) / (point_next.blk - point.blk)
else:
if point.blk != block.number:
dt = (_block - point.blk) * (block.timestamp - point.ts) / (block.number - point.blk)
# Now dt contains info on how far are we beyond point
return self.supply_at(point, point.ts + dt)
# Dummy methods for compatibility with Aragon
@external
def changeController(_newController: address):
"""
@dev Dummy method required for Aragon compatibility
"""
assert msg.sender == self.controller
self.controller = _newControllerContract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"Shutdown","inputs":[],"anonymous":false,"type":"event"},{"name":"CommitOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"Deposit","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false},{"type":"uint256","name":"locktime","indexed":true},{"type":"int128","name":"type","indexed":false},{"type":"uint256","name":"ts","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false},{"type":"uint256","name":"ts","indexed":false}],"anonymous":false,"type":"event"},{"name":"Supply","inputs":[{"type":"uint256","name":"prevSupply","indexed":false},{"type":"uint256","name":"supply","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"token_addr"},{"type":"string","name":"_name"},{"type":"string","name":"_symbol"},{"type":"string","name":"_version"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"shutdown","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37026},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37627},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38527},{"name":"commit_smart_wallet_checker","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":36337},{"name":"apply_smart_wallet_checker","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37125},{"name":"get_last_user_slope","outputs":[{"type":"int128","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":2599},{"name":"user_point_history__ts","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_addr"},{"type":"uint256","name":"_idx"}],"stateMutability":"view","type":"function","gas":1702},{"name":"locked__end","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"view","type":"function","gas":1623},{"name":"checkpoint","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37052402},{"name":"deposit_for","outputs":[],"inputs":[{"type":"address","name":"_addr"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":74280964},{"name":"create_lock","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"uint256","name":"_unlock_time"}],"stateMutability":"nonpayable","type":"function","gas":74282569},{"name":"increase_amount","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":74281934},{"name":"increase_unlock_time","outputs":[],"inputs":[{"type":"uint256","name":"_unlock_time"}],"stateMutability":"nonpayable","type":"function","gas":74282682},{"name":"withdraw","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37225323},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function"},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"},{"type":"uint256","name":"_t"}],"stateMutability":"view","type":"function"},{"name":"balanceOfAt","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"},{"type":"uint256","name":"_block"}],"stateMutability":"view","type":"function","gas":514393},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function"},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"t"}],"stateMutability":"view","type":"function"},{"name":"totalSupplyAt","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_block"}],"stateMutability":"view","type":"function","gas":812650},{"name":"changeController","outputs":[],"inputs":[{"type":"address","name":"_newController"}],"stateMutability":"nonpayable","type":"function","gas":36937},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1871},{"name":"supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1901},{"name":"locked","outputs":[{"type":"int128","name":"amount"},{"type":"uint256","name":"end"}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":3389},{"name":"epoch","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1961},{"name":"point_history","outputs":[{"type":"int128","name":"bias"},{"type":"int128","name":"slope"},{"type":"uint256","name":"ts"},{"type":"uint256","name":"blk"}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":5580},{"name":"user_point_history","outputs":[{"type":"int128","name":"bias"},{"type":"int128","name":"slope"},{"type":"uint256","name":"ts"},{"type":"uint256","name":"blk"}],"inputs":[{"type":"address","name":"arg0"},{"type":"uint256","name":"arg1"}],"stateMutability":"view","type":"function","gas":6109},{"name":"user_point_epoch","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2205},{"name":"slope_changes","outputs":[{"type":"int128","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2196},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"transfersEnabled","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2141},{"name":"name","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":8573},{"name":"symbol","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7626},{"name":"version","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7656},{"name":"decimals","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"future_smart_wallet_checker","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291},{"name":"smart_wallet_checker","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2321},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2351},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2381},{"name":"is_shutdown","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2411}]Contract Creation Code
740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260806137706101403934156100a157600080fd5b602061377060c03960c05160205181106100ba57600080fd5b506060602060206137700160c03960c051613770016101c0396040602060206137700160c03960c0516004013511156100f257600080fd5b6040602060406137700160c03960c05161377001610240396020602060406137700160c03960c05160040135111561012957600080fd5b6040602060606137700160c03960c051613770016102a0396020602060606137700160c03960c05160040135111561016057600080fd5b3360105561014051600055436003600460c052602060c02060c052602060c0200155426002600460c052602060c02060c052602060c02001553360085560016009556020610380600463313ce5676103205261033c610140515afa6101c457600080fd5b601f3d116101d157600080fd5b600050610380516103005260ff6103005111156101ed57600080fd5b61030051600d556101c080600a60c052602060c020602082510161012060006003818352015b8261012051602002111561022657610248565b61012051602002850151610120518501555b8151600101808352811415610213575b50505050505061024080600b60c052602060c020602082510161012060006002818352015b82610120516020021115610280576102a2565b61012051602002850151610120518501555b815160010180835281141561026d575b5050505050506102a080600c60c052602060c020602082510161012060006002818352015b826101205160200211156102da576102fc565b61012051602002850151610120518501555b81516001018083528114156102c7575b505050505050600060125561375856600436101561000d57613446565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263fc0e74d160005114156101355734156100ba57600080fd5b6308c379a061014052602061016052600a610180527f41646d696e206f6e6c79000000000000000000000000000000000000000000006101a05261018050601054331461010857606461015cfd5b60016012557f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf860006000a1005b636b441a4060005114156101a457341561014e57600080fd5b600435602051811061015f57600080fd5b50601054331461016e57600080fd5b600435601155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561021a5734156101bd57600080fd5b60105433146101cb57600080fd5b60115461014052600061014051186101e257600080fd5b6101405160105561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e2600051141561025b57341561023357600080fd5b600435602051811061024457600080fd5b50601054331461025357600080fd5b600435600e55005b638e5b490f600051141561028a57341561027457600080fd5b601054331461028257600080fd5b600e54600f55005b60001561037b575b61016052610140523261014051181561037557600f54610180526000610180511815610304576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af16102e457600080fd5b601f3d116102f157600080fd5b60005061022051156103035761016051565b5b6308c379a06102605260206102805260256102a0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c6102c0527f6c6f7765640000000000000000000000000000000000000000000000000000006102e0526102a050600061037457608461027cfd5b5b61016051565b637c74a17460005114156103ff57341561039457600080fd5b60043560205181106103a557600080fd5b50600660043560e05260c052604060c0205461014052600161014051633b9aca0081106103d157600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63da020a18600051141561046d57341561041857600080fd5b600435602051811061042957600080fd5b506002602435633b9aca00811061043f57600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63adc6358960005114156104bf57341561048657600080fd5b600435602051811061049757600080fd5b506001600260043560e05260c052604060c02060c052602060c020015460005260206000f350005b600015610dc7575b6101e0526101405261016052610180526101a0526101c05260803661020037608036610280376000610300526000610320526003546103405260006101405118156106d057426101805111156105235760006101605113610526565b60005b156105c35761016051630784ce00606051818061054257600080fd5b83058060405190131561055457600080fd5b809190121561056257600080fd5b90509050610220526102205161018051428082101561058057600080fd5b8082039050905060405181111561059657600080fd5b606051818302806040519013156105ac57600080fd5b80919012156105ba57600080fd5b90509050610200525b426101c05111156105da5760006101a051136105dd565b60005b1561067a576101a051630784ce0060605181806105f957600080fd5b83058060405190131561060b57600080fd5b809190121561061957600080fd5b905090506102a0526102a0516101c051428082101561063757600080fd5b8082039050905060405181111561064d57600080fd5b6060518183028060405190131561066357600080fd5b809190121561067157600080fd5b90509050610280525b60076101805160e05260c052604060c020546103005260006101c05118156106cf57610180516101c05114156106b75761030051610320526106ce565b60076101c05160e05260c052604060c02054610320525b5b5b610360600081526000816020015242816040015243816060015250600061034051111561076757610360610340516c01431e0fae6d7217caa0000000811061071757600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a05142111561081657670de0b6b3a7640000436103c051808210156107c557600080fd5b8082039050905080820282158284830414176107e057600080fd5b80905090509050426103a051808210156107f957600080fd5b80820390509050808061080b57600080fd5b820490509050610480525b6103e05162093a80808061082957600080fd5b82049050905062093a80808202821582848304141761084757600080fd5b809050905090506104a0526104c0600060ff818352015b6104a0805162093a8081818301101561087657600080fd5b8082019050905081525060006104e052426104a051111561089b57426104a0526108b2565b60076104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e051808210156108d057600080fd5b808203905090506040518111156108e657600080fd5b606051818302806040519013156108fc57600080fd5b809190121561090a57600080fd5b905090506060518183038060405190131561092457600080fd5b809190121561093257600080fd5b9050905081525061038080516104e0516060518183018060405190131561095857600080fd5b809190121561096657600080fd5b905090508152506000610360511215610980576000610360525b6000610380511215610993576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a05161044051808210156109c057600080fd5b8082039050905080820282158284830414176109db57600080fd5b80905090509050670de0b6b3a764000080806109f657600080fd5b820490509050818183011015610a0b57600080fd5b808201905090506103c05261034080516001818183011015610a2c57600080fd5b80820190509050815250426104a0511415610a4f57436103c052610ab856610aa7565b610340516c01431e0fae6d7217caa00000008110610a6c57600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550505b5b815160010180835281141561085e575b5050610340516003556000610140511815610bb45761038080516102a0516102205160605181830380604051901315610af057600080fd5b8091901215610afe57600080fd5b9050905060605181830180604051901315610b1857600080fd5b8091901215610b2657600080fd5b905090508152506103608051610280516102005160605181830380604051901315610b5057600080fd5b8091901215610b5e57600080fd5b9050905060605181830180604051901315610b7857600080fd5b8091901215610b8657600080fd5b905090508152506000610380511215610ba0576000610380525b6000610360511215610bb3576000610360525b5b610340516c01431e0fae6d7217caa00000008110610bd157600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550506000610140511815610dc15742610180511115610cb05761030080516102205160605181830180604051901315610c4157600080fd5b8091901215610c4f57600080fd5b90509050815250610180516101c0511415610c995761030080516102a05160605181830380604051901315610c8357600080fd5b8091901215610c9157600080fd5b905090508152505b6103005160076101805160e05260c052604060c020555b426101c0511115610d1557610180516101c0511115610d145761032080516102a05160605181830380604051901315610ce857600080fd5b8091901215610cf657600080fd5b905090508152506103205160076101c05160e05260c052604060c020555b5b60066101405160e05260c052604060c020546001818183011015610d3857600080fd5b80820190509050610500526105005160066101405160e05260c052604060c02055426102c052436102e05261050051633b9aca008110610d7757600080fd5b60056101405160e05260c052604060c02060c052602060c0200160c052602060c0206102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b600015611069575b610200526101405261016052610180526101a0526101c0526101e0526102206101a080518252806020015182602001525050600154610260526102605161016051818183011015610e1f57600080fd5b8082019050905060015561028061022080518252806020015182602001525050610220805161016051604051811115610e5757600080fd5b60605181830180604051901315610e6d57600080fd5b8091901215610e7b57600080fd5b905090508152506000610180511815610e975761018051610240525b60026101405160e05260c052604060c02060c052602060c020610220805182558060200151600183015550506101406102c0525b6102c0515160206102c051016102c0526102c06102c0511015610eed57610ecb565b610140516102e0526103006102808051825280602001518260200152505061034061022080518252806020015182602001525050610360516103405161032051610300516102e051600658016104c7565b6102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515610f6957610f46565b6000506000610160511815610fce57602061048060646323b872dd6103c052610140516103e052306104005261016051610420526103dc60006000545af1610fb057600080fd5b601f3d11610fbd57600080fd5b60005061048051610fcd57600080fd5b5b610160516104a0526101e0516104c052426104e05261024051610140517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606104a0a36102605161050052610260516101605181818301101561103157600080fd5b80820190509050610520527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610500a161020051565b63c2c4c5c160005114156110b857341561108257600080fd5b600061014052604036610160376040366101a0376101c0516101a051610180516101605161014051600658016104c7565b600050005b633a46273e600051141561131b5762ffffff54156110d557600080fd5b600162ffffff5534156110e757600080fd5b60043560205181106110f857600080fd5b50610140600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101805260206101a05260146101c0527f436f6e74726163742069732073687574646f776e0000000000000000000000006101e0526101c0506012541561117957606461019cfd5b60006024351161118857600080fd5b6308c379a0610220526020610240526016610260527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006102805261026050600061014051136111d857606461023cfd5b6308c379a06102c05260206102e0526024610300527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610320527f6472617700000000000000000000000000000000000000000000000000000000610340526103005042610160511161124c5760846102dcfd5b610140610380525b6103805151602061038051016103805261038061038051101561127657611254565b6004356103a0526024356103c05260006103e052610400600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506000610440526104405161042051610400516103e0516103c0516103a05160065801610dcf565b610360610380525b610380515260206103805103610380526101406103805110151561130f576112ec565b600050600062ffffff55005b6365fc387360005114156116065762ffffff541561133857600080fd5b600162ffffff55341561134a57600080fd5b33610140526101405160065801610292565b60005060243562093a80808061137157600080fd5b82049050905062093a80808202821582848304141761138f57600080fd5b809050905090506101a0526101c060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a0610200526020610220526014610240527f436f6e74726163742069732073687574646f776e00000000000000000000000061026052610240506012541561141857606461021cfd5b60006004351161142757600080fd5b6308c379a06102a05260206102c05260196102e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610300526102e0506101c051156114755760646102bcfd5b6308c379a0610340526020610360526026610380527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e20746865206103a0527f66757475726500000000000000000000000000000000000000000000000000006103c05261038050426101a051116114e957608461035cfd5b6308c379a061040052602061042052601e610440527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610460526104405042630784ce0081818301101561153c57600080fd5b808201905090506101a051111561155457606461041cfd5b6101406104a0525b6104a0515160206104a051016104a0526104a06104a051101561157e5761155c565b336104c0526004356104e0526101a051610500526105206101c080518252806020015182602001525050600161056052610560516105405161052051610500516104e0516104c05160065801610dcf565b6104806104a0525b6104a0515260206104a051036104a0526101406104a0511015156115fa576115d7565b600050600062ffffff55005b634957677c600051141561184b5762ffffff541561162357600080fd5b600162ffffff55341561163557600080fd5b33610140526101405160065801610292565b6000506101a060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101e0526020610200526014610220527f436f6e74726163742069732073687574646f776e0000000000000000000000006102405261022050601254156116c85760646101fcfd5b6000600435116116d757600080fd5b6308c379a06102805260206102a05260166102c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006102e0526102c05060006101a0511361172757606461029cfd5b6308c379a0610320526020610340526024610360527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610380527f64726177000000000000000000000000000000000000000000000000000000006103a05261036050426101c0511161179b57608461033cfd5b6101406103e0525b6103e0515160206103e051016103e0526103e06103e05110156117c5576117a3565b3361040052600435610420526000610440526104606101a08051825280602001518260200152505060026104a0526104a051610480516104605161044051610420516104005160065801610dcf565b6103c06103e0525b6103e0515260206103e051036103e0526101406103e05110151561183f5761181c565b600050600062ffffff55005b63eff7a6126000511415611b555762ffffff541561186857600080fd5b600162ffffff55341561187a57600080fd5b33610140526101405160065801610292565b6000506101a060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060043562093a8080806118d257600080fd5b82049050905062093a8080820282158284830414176118f057600080fd5b809050905090506101e0526308c379a0610200526020610220526014610240527f436f6e74726163742069732073687574646f776e00000000000000000000000061026052610240506012541561194857606461021cfd5b6308c379a06102a05260206102c052600c6102e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610300526102e050426101c051116119975760646102bcfd5b6308c379a0610340526020610360526011610380527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006103a0526103805060006101a051136119e757606461035cfd5b6308c379a06103e052602061040052601f610420527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e0061044052610420506101c0516101e05111611a395760646103fcfd5b6308c379a06104805260206104a052601e6104c0527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006104e0526104c05042630784ce00818183011015611a8c57600080fd5b808201905090506101e0511115611aa457606461049cfd5b610140610520525b61052051516020610520510161052052610520610520511015611ace57611aac565b33610540526000610560526101e051610580526105a06101a08051825280602001518260200152505060036105e0526105e0516105c0516105a05161058051610560516105405160065801610dcf565b610500610520525b6105205152602061052051036105205261014061052051101515611b4957611b26565b600050600062ffffff55005b633ccfd60b6000511415611e275762ffffff5415611b7257600080fd5b600162ffffff553415611b8457600080fd5b61014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c0506101605142101515611c06576001611c0a565b6012545b5b611c1657606461019cfd5b610140516000811215611c2857600080fd5b610220526102406101408051825280602001518260200152505060006101605260006101405260023360e05260c052604060c02060c052602060c0206101408051825580602001516001830155505060015461028052610280516102205180821015611c9357600080fd5b808203905090506001556012541515611d4d576101406102a0525b6102a0515160206102a051016102a0526102a06102a0511015611cd057611cae565b336102c0526102e061024080518252806020015182602001525050610320610140805182528060200151826020015250506103405161032051610300516102e0516102c051600658016104c7565b6102806102a0525b6102a0515260206102a051036102a0526101406102a051101515611d4957611d26565b6000505b6020610440604463a9059cbb6103a052336103c052610220516103e0526103bc60006000545af1611d7d57600080fd5b601f3d11611d8a57600080fd5b60005061044051611d9a57600080fd5b61022051610460524261048052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610460a2610280516104a052610280516102205180821015611dec57600080fd5b808203905090506104c0527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406104a0a1600062ffffff55005b600015611f46575b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051101515611e6957611f32565b6101a0516101c051818183011015611e8057600080fd5b808201905090506001818183011015611e9857600080fd5b8082019050905060028080611eac57600080fd5b82049050905061020052610140516003610200516c01431e0fae6d7217caa00000008110611ed957600080fd5b600460c052602060c0200160c052602060c0200154111515611f0257610200516101a052611f21565b61020051600180821015611f1557600080fd5b808203905090506101c0525b5b8151600101808352811415611e55575b50506101a051600052600051610180515650005b6370a082316000511415611f5e574261014052611f83565b62fdd58e6000511415611f7b576020602461014037600050611f83565b6000156120fb575b3415611f8e57600080fd5b6004356020518110611f9f57600080fd5b50600660043560e05260c052604060c0205461016052610160511515611fcf57600060005260206000f3506120f9565b61018061016051633b9aca008110611fe657600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505061018080516101a051610140516101c0518082101561206157600080fd5b8082039050905060405181111561207757600080fd5b6060518183028060405190131561208d57600080fd5b809190121561209b57600080fd5b90509050606051818303806040519013156120b557600080fd5b80919012156120c357600080fd5b9050905081525060006101805112156120dd576000610180525b6101805160008112156120ef57600080fd5b60005260206000f3505b005b634ee2cd7e600051141561260a57341561211457600080fd5b600435602051811061212557600080fd5b5043602435111561213557600080fd5b600061014052600660043560e05260c052604060c020546101605261018060006080818352015b61016051610140511015156121705761223d565b610140516101605181818301101561218757600080fd5b80820190509050600181818301101561219f57600080fd5b80820190509050600280806121b357600080fd5b8204905090506101a05260243560036101a051633b9aca0081106121d657600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015411151561220d576101a0516101405261222c565b6101a05160018082101561222057600080fd5b80820390509050610160525b5b815160010180835281141561215c575b50506101c061014051633b9aca00811061225657600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050600354610240526101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516024356102a052610240516102c0526102c0516102a05160065801611e2f565b61032052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103205161026052610340610260516c01431e0fae6d7217caa0000000811061235657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505060006103c05260006103e0526102405161026051101561248b576104006102605160018181830110156123d757600080fd5b808201905090506c01431e0fae6d7217caa000000081106123f757600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610460516103a0518082101561245b57600080fd5b808203905090506103c05261044051610380518082101561247b57600080fd5b808203905090506103e0526124c6565b436103a0518082101561249d57600080fd5b808203905090506103c0524261038051808210156124ba57600080fd5b808203905090506103e0525b610380516104805260006103c05118156125485761048080516103e0516024356103a051808210156124f757600080fd5b80820390509050808202821582848304141761251257600080fd5b809050905090506103c051808061252857600080fd5b82049050905081818301101561253d57600080fd5b808201905090508152505b6101c080516101e05161048051610200518082101561256657600080fd5b8082039050905060405181111561257c57600080fd5b6060518183028060405190131561259257600080fd5b80919012156125a057600080fd5b90509050606051818303806040519013156125ba57600080fd5b80919012156125c857600080fd5b9050905081525060006101c0511215156125fc576101c05160008112156125ee57600080fd5b60005260206000f350612608565b600060005260206000f3505b005b600015612812575b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a80808061266757600080fd5b82049050905062093a80808202821582848304141761268557600080fd5b80905090509050610280526102a0600060ff818352015b610280805162093a808181830110156126b457600080fd5b8082019050905081525060006102c0526101c0516102805111156126df576101c051610280526126f6565b60076102805160e05260c052604060c020546102c0525b61020080516102205161028051610240518082101561271457600080fd5b8082039050905060405181111561272a57600080fd5b6060518183028060405190131561274057600080fd5b809190121561274e57600080fd5b905090506060518183038060405190131561276857600080fd5b809190121561277657600080fd5b905090508152506101c051610280511415612790576127dd565b61022080516102c051606051818301806040519013156127af57600080fd5b80919012156127bd57600080fd5b9050905081525061028051610240525b815160010180835281141561269c575b505060006102005112156127f2576000610200525b61020051600081121561280457600080fd5b6000526000516101e0515650005b6318160ddd600051141561282a574261014052612850565b63bd85b0396000511415612848576020600461014037600050612850565b600015612963575b341561285b57600080fd5b60035461016052610180610160516c01431e0fae6d7217caa0000000811061288257600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506101405161016051610180516101a0516101c0516101e051610220610180805182528060200151826020015280604001518260400152806060015182606001525050610140516102a0526102a0516102805161026051610240516102205160065801612612565b610300526101e0526101c0526101a0526101805261016052610140526103005160005260206000f350005b63981b24d06000511415612cca57341561297c57600080fd5b43600435111561298b57600080fd5b6003546101405261014051610160516004356101a052610140516101c0526101c0516101a05160065801611e2f565b6102205261016052610140526102205161016052610240610160516c01431e0fae6d7217caa000000081106129ee57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505060006102c05261014051610160511015612b6f576102e0610160516001818183011015612a6957600080fd5b808201905090506c01431e0fae6d7217caa00000008110612a8957600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610340516102a0511815612b6a576004356102a05180821015612afa57600080fd5b80820390509050610320516102805180821015612b1657600080fd5b808203905090508082028215828483041417612b3157600080fd5b80905090509050610340516102a05180821015612b4d57600080fd5b808203905090508080612b5f57600080fd5b8204905090506102c0525b612bf9565b436102a0511815612bf8576004356102a05180821015612b8e57600080fd5b80820390509050426102805180821015612ba757600080fd5b808203905090508082028215828483041417612bc257600080fd5b80905090509050436102a05180821015612bdb57600080fd5b808203905090508080612bed57600080fd5b8204905090506102c0525b5b610140610360525b610360515160206103605101610360526102e0610360511015612c2357612c01565b610380610240805182528060200151826020015280604001518260400152806060015182606001525050610280516102c051818183011015612c6457600080fd5b8082019050905061040052610400516103e0516103c0516103a0516103805160065801612612565b610460526102c0610360525b6103605152602061036051036103605261014061036051101515612cbb57612c98565b6104605160005260206000f350005b633cebb8236000511415612d0b573415612ce357600080fd5b6004356020518110612cf457600080fd5b506008543314612d0357600080fd5b600435600855005b63fc0c546a6000511415612d32573415612d2457600080fd5b60005460005260206000f350005b63047fc9aa6000511415612d59573415612d4b57600080fd5b60015460005260206000f350005b63cbf9fe5f6000511415612de2573415612d7257600080fd5b6004356020518110612d8357600080fd5b50610140808080600260043560e05260c052604060c02060c052602060c020548152505060208101905080806001600260043560e05260c052604060c02060c052602060c02001548152505060409050905060c05260c051610140f350005b63900cf0cf6000511415612e09573415612dfb57600080fd5b60035460005260206000f350005b63d1febfb96000511415612f2c573415612e2257600080fd5b6101408080806004356c01431e0fae6d7217caa00000008110612e4457600080fd5b600460c052602060c0200160c052602060c0205481525050602081019050808060016004356c01431e0fae6d7217caa00000008110612e8257600080fd5b600460c052602060c0200160c052602060c020015481525050602081019050808060026004356c01431e0fae6d7217caa00000008110612ec157600080fd5b600460c052602060c0200160c052602060c020015481525050602081019050808060036004356c01431e0fae6d7217caa00000008110612f0057600080fd5b600460c052602060c0200160c052602060c02001548152505060809050905060c05260c051610140f350005b6328d09d476000511415613075573415612f4557600080fd5b6004356020518110612f5657600080fd5b50610140808080602435633b9aca008110612f7057600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020548152505060208101905080806001602435633b9aca008110612fb357600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060208101905080806002602435633b9aca008110612ff757600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060208101905080806003602435633b9aca00811061303b57600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060809050905060c05260c051610140f350005b63010ae75760005114156130bc57341561308e57600080fd5b600435602051811061309f57600080fd5b50600660043560e05260c052604060c0205460005260206000f350005b637119748460005114156130f15734156130d557600080fd5b600760043560e05260c052604060c0205460005260206000f350005b63f77c4791600051141561311857341561310a57600080fd5b60085460005260206000f350005b63bef97c87600051141561313f57341561313157600080fd5b60095460005260206000f350005b6306fdde0360005114156131f357341561315857600080fd5b600a8060c052602060c020610180602082540161012060006003818352015b8261012051602002111561318a576131ac565b61012051850154610120516020028501525b8151600101808352811415613177575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b4160005114156132a757341561320c57600080fd5b600b8060c052602060c020610180602082540161012060006002818352015b8261012051602002111561323e57613260565b61012051850154610120516020028501525b815160010180835281141561322b575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6354fd4d50600051141561335b5734156132c057600080fd5b600c8060c052602060c020610180602082540161012060006002818352015b826101205160200211156132f257613314565b61012051850154610120516020028501525b81516001018083528114156132df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce567600051141561338257341561337457600080fd5b600d5460005260206000f350005b638ff36fd160005114156133a957341561339b57600080fd5b600e5460005260206000f350005b637175d4f760005114156133d05734156133c257600080fd5b600f5460005260206000f350005b63f851a44060005114156133f75734156133e957600080fd5b60105460005260206000f350005b6317f7182a600051141561341e57341561341057600080fd5b60115460005260206000f350005b63943a7a57600051141561344557341561343757600080fd5b60125460005260206000f350005b5b60006000fd5b61030c6137580361030c60003961030c613758036000f300000000000000000000000095a4492f028aa1fd432ea71146b433e7b4446611000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000010426f6f73742d4c6f636b656420415059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005626c4150590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005312e302e30000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d57613446565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263fc0e74d160005114156101355734156100ba57600080fd5b6308c379a061014052602061016052600a610180527f41646d696e206f6e6c79000000000000000000000000000000000000000000006101a05261018050601054331461010857606461015cfd5b60016012557f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf860006000a1005b636b441a4060005114156101a457341561014e57600080fd5b600435602051811061015f57600080fd5b50601054331461016e57600080fd5b600435601155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561021a5734156101bd57600080fd5b60105433146101cb57600080fd5b60115461014052600061014051186101e257600080fd5b6101405160105561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e2600051141561025b57341561023357600080fd5b600435602051811061024457600080fd5b50601054331461025357600080fd5b600435600e55005b638e5b490f600051141561028a57341561027457600080fd5b601054331461028257600080fd5b600e54600f55005b60001561037b575b61016052610140523261014051181561037557600f54610180526000610180511815610304576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af16102e457600080fd5b601f3d116102f157600080fd5b60005061022051156103035761016051565b5b6308c379a06102605260206102805260256102a0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c6102c0527f6c6f7765640000000000000000000000000000000000000000000000000000006102e0526102a050600061037457608461027cfd5b5b61016051565b637c74a17460005114156103ff57341561039457600080fd5b60043560205181106103a557600080fd5b50600660043560e05260c052604060c0205461014052600161014051633b9aca0081106103d157600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63da020a18600051141561046d57341561041857600080fd5b600435602051811061042957600080fd5b506002602435633b9aca00811061043f57600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63adc6358960005114156104bf57341561048657600080fd5b600435602051811061049757600080fd5b506001600260043560e05260c052604060c02060c052602060c020015460005260206000f350005b600015610dc7575b6101e0526101405261016052610180526101a0526101c05260803661020037608036610280376000610300526000610320526003546103405260006101405118156106d057426101805111156105235760006101605113610526565b60005b156105c35761016051630784ce00606051818061054257600080fd5b83058060405190131561055457600080fd5b809190121561056257600080fd5b90509050610220526102205161018051428082101561058057600080fd5b8082039050905060405181111561059657600080fd5b606051818302806040519013156105ac57600080fd5b80919012156105ba57600080fd5b90509050610200525b426101c05111156105da5760006101a051136105dd565b60005b1561067a576101a051630784ce0060605181806105f957600080fd5b83058060405190131561060b57600080fd5b809190121561061957600080fd5b905090506102a0526102a0516101c051428082101561063757600080fd5b8082039050905060405181111561064d57600080fd5b6060518183028060405190131561066357600080fd5b809190121561067157600080fd5b90509050610280525b60076101805160e05260c052604060c020546103005260006101c05118156106cf57610180516101c05114156106b75761030051610320526106ce565b60076101c05160e05260c052604060c02054610320525b5b5b610360600081526000816020015242816040015243816060015250600061034051111561076757610360610340516c01431e0fae6d7217caa0000000811061071757600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a05142111561081657670de0b6b3a7640000436103c051808210156107c557600080fd5b8082039050905080820282158284830414176107e057600080fd5b80905090509050426103a051808210156107f957600080fd5b80820390509050808061080b57600080fd5b820490509050610480525b6103e05162093a80808061082957600080fd5b82049050905062093a80808202821582848304141761084757600080fd5b809050905090506104a0526104c0600060ff818352015b6104a0805162093a8081818301101561087657600080fd5b8082019050905081525060006104e052426104a051111561089b57426104a0526108b2565b60076104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e051808210156108d057600080fd5b808203905090506040518111156108e657600080fd5b606051818302806040519013156108fc57600080fd5b809190121561090a57600080fd5b905090506060518183038060405190131561092457600080fd5b809190121561093257600080fd5b9050905081525061038080516104e0516060518183018060405190131561095857600080fd5b809190121561096657600080fd5b905090508152506000610360511215610980576000610360525b6000610380511215610993576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a05161044051808210156109c057600080fd5b8082039050905080820282158284830414176109db57600080fd5b80905090509050670de0b6b3a764000080806109f657600080fd5b820490509050818183011015610a0b57600080fd5b808201905090506103c05261034080516001818183011015610a2c57600080fd5b80820190509050815250426104a0511415610a4f57436103c052610ab856610aa7565b610340516c01431e0fae6d7217caa00000008110610a6c57600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550505b5b815160010180835281141561085e575b5050610340516003556000610140511815610bb45761038080516102a0516102205160605181830380604051901315610af057600080fd5b8091901215610afe57600080fd5b9050905060605181830180604051901315610b1857600080fd5b8091901215610b2657600080fd5b905090508152506103608051610280516102005160605181830380604051901315610b5057600080fd5b8091901215610b5e57600080fd5b9050905060605181830180604051901315610b7857600080fd5b8091901215610b8657600080fd5b905090508152506000610380511215610ba0576000610380525b6000610360511215610bb3576000610360525b5b610340516c01431e0fae6d7217caa00000008110610bd157600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550506000610140511815610dc15742610180511115610cb05761030080516102205160605181830180604051901315610c4157600080fd5b8091901215610c4f57600080fd5b90509050815250610180516101c0511415610c995761030080516102a05160605181830380604051901315610c8357600080fd5b8091901215610c9157600080fd5b905090508152505b6103005160076101805160e05260c052604060c020555b426101c0511115610d1557610180516101c0511115610d145761032080516102a05160605181830380604051901315610ce857600080fd5b8091901215610cf657600080fd5b905090508152506103205160076101c05160e05260c052604060c020555b5b60066101405160e05260c052604060c020546001818183011015610d3857600080fd5b80820190509050610500526105005160066101405160e05260c052604060c02055426102c052436102e05261050051633b9aca008110610d7757600080fd5b60056101405160e05260c052604060c02060c052602060c0200160c052602060c0206102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b600015611069575b610200526101405261016052610180526101a0526101c0526101e0526102206101a080518252806020015182602001525050600154610260526102605161016051818183011015610e1f57600080fd5b8082019050905060015561028061022080518252806020015182602001525050610220805161016051604051811115610e5757600080fd5b60605181830180604051901315610e6d57600080fd5b8091901215610e7b57600080fd5b905090508152506000610180511815610e975761018051610240525b60026101405160e05260c052604060c02060c052602060c020610220805182558060200151600183015550506101406102c0525b6102c0515160206102c051016102c0526102c06102c0511015610eed57610ecb565b610140516102e0526103006102808051825280602001518260200152505061034061022080518252806020015182602001525050610360516103405161032051610300516102e051600658016104c7565b6102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515610f6957610f46565b6000506000610160511815610fce57602061048060646323b872dd6103c052610140516103e052306104005261016051610420526103dc60006000545af1610fb057600080fd5b601f3d11610fbd57600080fd5b60005061048051610fcd57600080fd5b5b610160516104a0526101e0516104c052426104e05261024051610140517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606104a0a36102605161050052610260516101605181818301101561103157600080fd5b80820190509050610520527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610500a161020051565b63c2c4c5c160005114156110b857341561108257600080fd5b600061014052604036610160376040366101a0376101c0516101a051610180516101605161014051600658016104c7565b600050005b633a46273e600051141561131b5762ffffff54156110d557600080fd5b600162ffffff5534156110e757600080fd5b60043560205181106110f857600080fd5b50610140600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101805260206101a05260146101c0527f436f6e74726163742069732073687574646f776e0000000000000000000000006101e0526101c0506012541561117957606461019cfd5b60006024351161118857600080fd5b6308c379a0610220526020610240526016610260527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006102805261026050600061014051136111d857606461023cfd5b6308c379a06102c05260206102e0526024610300527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610320527f6472617700000000000000000000000000000000000000000000000000000000610340526103005042610160511161124c5760846102dcfd5b610140610380525b6103805151602061038051016103805261038061038051101561127657611254565b6004356103a0526024356103c05260006103e052610400600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506000610440526104405161042051610400516103e0516103c0516103a05160065801610dcf565b610360610380525b610380515260206103805103610380526101406103805110151561130f576112ec565b600050600062ffffff55005b6365fc387360005114156116065762ffffff541561133857600080fd5b600162ffffff55341561134a57600080fd5b33610140526101405160065801610292565b60005060243562093a80808061137157600080fd5b82049050905062093a80808202821582848304141761138f57600080fd5b809050905090506101a0526101c060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a0610200526020610220526014610240527f436f6e74726163742069732073687574646f776e00000000000000000000000061026052610240506012541561141857606461021cfd5b60006004351161142757600080fd5b6308c379a06102a05260206102c05260196102e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610300526102e0506101c051156114755760646102bcfd5b6308c379a0610340526020610360526026610380527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e20746865206103a0527f66757475726500000000000000000000000000000000000000000000000000006103c05261038050426101a051116114e957608461035cfd5b6308c379a061040052602061042052601e610440527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610460526104405042630784ce0081818301101561153c57600080fd5b808201905090506101a051111561155457606461041cfd5b6101406104a0525b6104a0515160206104a051016104a0526104a06104a051101561157e5761155c565b336104c0526004356104e0526101a051610500526105206101c080518252806020015182602001525050600161056052610560516105405161052051610500516104e0516104c05160065801610dcf565b6104806104a0525b6104a0515260206104a051036104a0526101406104a0511015156115fa576115d7565b600050600062ffffff55005b634957677c600051141561184b5762ffffff541561162357600080fd5b600162ffffff55341561163557600080fd5b33610140526101405160065801610292565b6000506101a060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101e0526020610200526014610220527f436f6e74726163742069732073687574646f776e0000000000000000000000006102405261022050601254156116c85760646101fcfd5b6000600435116116d757600080fd5b6308c379a06102805260206102a05260166102c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006102e0526102c05060006101a0511361172757606461029cfd5b6308c379a0610320526020610340526024610360527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610380527f64726177000000000000000000000000000000000000000000000000000000006103a05261036050426101c0511161179b57608461033cfd5b6101406103e0525b6103e0515160206103e051016103e0526103e06103e05110156117c5576117a3565b3361040052600435610420526000610440526104606101a08051825280602001518260200152505060026104a0526104a051610480516104605161044051610420516104005160065801610dcf565b6103c06103e0525b6103e0515260206103e051036103e0526101406103e05110151561183f5761181c565b600050600062ffffff55005b63eff7a6126000511415611b555762ffffff541561186857600080fd5b600162ffffff55341561187a57600080fd5b33610140526101405160065801610292565b6000506101a060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060043562093a8080806118d257600080fd5b82049050905062093a8080820282158284830414176118f057600080fd5b809050905090506101e0526308c379a0610200526020610220526014610240527f436f6e74726163742069732073687574646f776e00000000000000000000000061026052610240506012541561194857606461021cfd5b6308c379a06102a05260206102c052600c6102e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610300526102e050426101c051116119975760646102bcfd5b6308c379a0610340526020610360526011610380527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006103a0526103805060006101a051136119e757606461035cfd5b6308c379a06103e052602061040052601f610420527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e0061044052610420506101c0516101e05111611a395760646103fcfd5b6308c379a06104805260206104a052601e6104c0527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006104e0526104c05042630784ce00818183011015611a8c57600080fd5b808201905090506101e0511115611aa457606461049cfd5b610140610520525b61052051516020610520510161052052610520610520511015611ace57611aac565b33610540526000610560526101e051610580526105a06101a08051825280602001518260200152505060036105e0526105e0516105c0516105a05161058051610560516105405160065801610dcf565b610500610520525b6105205152602061052051036105205261014061052051101515611b4957611b26565b600050600062ffffff55005b633ccfd60b6000511415611e275762ffffff5415611b7257600080fd5b600162ffffff553415611b8457600080fd5b61014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c0506101605142101515611c06576001611c0a565b6012545b5b611c1657606461019cfd5b610140516000811215611c2857600080fd5b610220526102406101408051825280602001518260200152505060006101605260006101405260023360e05260c052604060c02060c052602060c0206101408051825580602001516001830155505060015461028052610280516102205180821015611c9357600080fd5b808203905090506001556012541515611d4d576101406102a0525b6102a0515160206102a051016102a0526102a06102a0511015611cd057611cae565b336102c0526102e061024080518252806020015182602001525050610320610140805182528060200151826020015250506103405161032051610300516102e0516102c051600658016104c7565b6102806102a0525b6102a0515260206102a051036102a0526101406102a051101515611d4957611d26565b6000505b6020610440604463a9059cbb6103a052336103c052610220516103e0526103bc60006000545af1611d7d57600080fd5b601f3d11611d8a57600080fd5b60005061044051611d9a57600080fd5b61022051610460524261048052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610460a2610280516104a052610280516102205180821015611dec57600080fd5b808203905090506104c0527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406104a0a1600062ffffff55005b600015611f46575b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051101515611e6957611f32565b6101a0516101c051818183011015611e8057600080fd5b808201905090506001818183011015611e9857600080fd5b8082019050905060028080611eac57600080fd5b82049050905061020052610140516003610200516c01431e0fae6d7217caa00000008110611ed957600080fd5b600460c052602060c0200160c052602060c0200154111515611f0257610200516101a052611f21565b61020051600180821015611f1557600080fd5b808203905090506101c0525b5b8151600101808352811415611e55575b50506101a051600052600051610180515650005b6370a082316000511415611f5e574261014052611f83565b62fdd58e6000511415611f7b576020602461014037600050611f83565b6000156120fb575b3415611f8e57600080fd5b6004356020518110611f9f57600080fd5b50600660043560e05260c052604060c0205461016052610160511515611fcf57600060005260206000f3506120f9565b61018061016051633b9aca008110611fe657600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505061018080516101a051610140516101c0518082101561206157600080fd5b8082039050905060405181111561207757600080fd5b6060518183028060405190131561208d57600080fd5b809190121561209b57600080fd5b90509050606051818303806040519013156120b557600080fd5b80919012156120c357600080fd5b9050905081525060006101805112156120dd576000610180525b6101805160008112156120ef57600080fd5b60005260206000f3505b005b634ee2cd7e600051141561260a57341561211457600080fd5b600435602051811061212557600080fd5b5043602435111561213557600080fd5b600061014052600660043560e05260c052604060c020546101605261018060006080818352015b61016051610140511015156121705761223d565b610140516101605181818301101561218757600080fd5b80820190509050600181818301101561219f57600080fd5b80820190509050600280806121b357600080fd5b8204905090506101a05260243560036101a051633b9aca0081106121d657600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015411151561220d576101a0516101405261222c565b6101a05160018082101561222057600080fd5b80820390509050610160525b5b815160010180835281141561215c575b50506101c061014051633b9aca00811061225657600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050600354610240526101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516024356102a052610240516102c0526102c0516102a05160065801611e2f565b61032052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103205161026052610340610260516c01431e0fae6d7217caa0000000811061235657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505060006103c05260006103e0526102405161026051101561248b576104006102605160018181830110156123d757600080fd5b808201905090506c01431e0fae6d7217caa000000081106123f757600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610460516103a0518082101561245b57600080fd5b808203905090506103c05261044051610380518082101561247b57600080fd5b808203905090506103e0526124c6565b436103a0518082101561249d57600080fd5b808203905090506103c0524261038051808210156124ba57600080fd5b808203905090506103e0525b610380516104805260006103c05118156125485761048080516103e0516024356103a051808210156124f757600080fd5b80820390509050808202821582848304141761251257600080fd5b809050905090506103c051808061252857600080fd5b82049050905081818301101561253d57600080fd5b808201905090508152505b6101c080516101e05161048051610200518082101561256657600080fd5b8082039050905060405181111561257c57600080fd5b6060518183028060405190131561259257600080fd5b80919012156125a057600080fd5b90509050606051818303806040519013156125ba57600080fd5b80919012156125c857600080fd5b9050905081525060006101c0511215156125fc576101c05160008112156125ee57600080fd5b60005260206000f350612608565b600060005260206000f3505b005b600015612812575b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a80808061266757600080fd5b82049050905062093a80808202821582848304141761268557600080fd5b80905090509050610280526102a0600060ff818352015b610280805162093a808181830110156126b457600080fd5b8082019050905081525060006102c0526101c0516102805111156126df576101c051610280526126f6565b60076102805160e05260c052604060c020546102c0525b61020080516102205161028051610240518082101561271457600080fd5b8082039050905060405181111561272a57600080fd5b6060518183028060405190131561274057600080fd5b809190121561274e57600080fd5b905090506060518183038060405190131561276857600080fd5b809190121561277657600080fd5b905090508152506101c051610280511415612790576127dd565b61022080516102c051606051818301806040519013156127af57600080fd5b80919012156127bd57600080fd5b9050905081525061028051610240525b815160010180835281141561269c575b505060006102005112156127f2576000610200525b61020051600081121561280457600080fd5b6000526000516101e0515650005b6318160ddd600051141561282a574261014052612850565b63bd85b0396000511415612848576020600461014037600050612850565b600015612963575b341561285b57600080fd5b60035461016052610180610160516c01431e0fae6d7217caa0000000811061288257600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506101405161016051610180516101a0516101c0516101e051610220610180805182528060200151826020015280604001518260400152806060015182606001525050610140516102a0526102a0516102805161026051610240516102205160065801612612565b610300526101e0526101c0526101a0526101805261016052610140526103005160005260206000f350005b63981b24d06000511415612cca57341561297c57600080fd5b43600435111561298b57600080fd5b6003546101405261014051610160516004356101a052610140516101c0526101c0516101a05160065801611e2f565b6102205261016052610140526102205161016052610240610160516c01431e0fae6d7217caa000000081106129ee57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505060006102c05261014051610160511015612b6f576102e0610160516001818183011015612a6957600080fd5b808201905090506c01431e0fae6d7217caa00000008110612a8957600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610340516102a0511815612b6a576004356102a05180821015612afa57600080fd5b80820390509050610320516102805180821015612b1657600080fd5b808203905090508082028215828483041417612b3157600080fd5b80905090509050610340516102a05180821015612b4d57600080fd5b808203905090508080612b5f57600080fd5b8204905090506102c0525b612bf9565b436102a0511815612bf8576004356102a05180821015612b8e57600080fd5b80820390509050426102805180821015612ba757600080fd5b808203905090508082028215828483041417612bc257600080fd5b80905090509050436102a05180821015612bdb57600080fd5b808203905090508080612bed57600080fd5b8204905090506102c0525b5b610140610360525b610360515160206103605101610360526102e0610360511015612c2357612c01565b610380610240805182528060200151826020015280604001518260400152806060015182606001525050610280516102c051818183011015612c6457600080fd5b8082019050905061040052610400516103e0516103c0516103a0516103805160065801612612565b610460526102c0610360525b6103605152602061036051036103605261014061036051101515612cbb57612c98565b6104605160005260206000f350005b633cebb8236000511415612d0b573415612ce357600080fd5b6004356020518110612cf457600080fd5b506008543314612d0357600080fd5b600435600855005b63fc0c546a6000511415612d32573415612d2457600080fd5b60005460005260206000f350005b63047fc9aa6000511415612d59573415612d4b57600080fd5b60015460005260206000f350005b63cbf9fe5f6000511415612de2573415612d7257600080fd5b6004356020518110612d8357600080fd5b50610140808080600260043560e05260c052604060c02060c052602060c020548152505060208101905080806001600260043560e05260c052604060c02060c052602060c02001548152505060409050905060c05260c051610140f350005b63900cf0cf6000511415612e09573415612dfb57600080fd5b60035460005260206000f350005b63d1febfb96000511415612f2c573415612e2257600080fd5b6101408080806004356c01431e0fae6d7217caa00000008110612e4457600080fd5b600460c052602060c0200160c052602060c0205481525050602081019050808060016004356c01431e0fae6d7217caa00000008110612e8257600080fd5b600460c052602060c0200160c052602060c020015481525050602081019050808060026004356c01431e0fae6d7217caa00000008110612ec157600080fd5b600460c052602060c0200160c052602060c020015481525050602081019050808060036004356c01431e0fae6d7217caa00000008110612f0057600080fd5b600460c052602060c0200160c052602060c02001548152505060809050905060c05260c051610140f350005b6328d09d476000511415613075573415612f4557600080fd5b6004356020518110612f5657600080fd5b50610140808080602435633b9aca008110612f7057600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020548152505060208101905080806001602435633b9aca008110612fb357600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060208101905080806002602435633b9aca008110612ff757600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060208101905080806003602435633b9aca00811061303b57600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c02001548152505060809050905060c05260c051610140f350005b63010ae75760005114156130bc57341561308e57600080fd5b600435602051811061309f57600080fd5b50600660043560e05260c052604060c0205460005260206000f350005b637119748460005114156130f15734156130d557600080fd5b600760043560e05260c052604060c0205460005260206000f350005b63f77c4791600051141561311857341561310a57600080fd5b60085460005260206000f350005b63bef97c87600051141561313f57341561313157600080fd5b60095460005260206000f350005b6306fdde0360005114156131f357341561315857600080fd5b600a8060c052602060c020610180602082540161012060006003818352015b8261012051602002111561318a576131ac565b61012051850154610120516020028501525b8151600101808352811415613177575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b4160005114156132a757341561320c57600080fd5b600b8060c052602060c020610180602082540161012060006002818352015b8261012051602002111561323e57613260565b61012051850154610120516020028501525b815160010180835281141561322b575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6354fd4d50600051141561335b5734156132c057600080fd5b600c8060c052602060c020610180602082540161012060006002818352015b826101205160200211156132f257613314565b61012051850154610120516020028501525b81516001018083528114156132df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce567600051141561338257341561337457600080fd5b600d5460005260206000f350005b638ff36fd160005114156133a957341561339b57600080fd5b600e5460005260206000f350005b637175d4f760005114156133d05734156133c257600080fd5b600f5460005260206000f350005b63f851a44060005114156133f75734156133e957600080fd5b60105460005260206000f350005b6317f7182a600051141561341e57341561341057600080fd5b60115460005260206000f350005b63943a7a57600051141561344557341561343757600080fd5b60125460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000095a4492f028aa1fd432ea71146b433e7b4446611000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000010426f6f73742d4c6f636b656420415059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005626c4150590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005312e302e30000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : token_addr (address): 0x95a4492F028aa1fd432Ea71146b433E7B4446611
Arg [1] : _name (string): Boost-Locked APY
Arg [2] : _symbol (string): blAPY
Arg [3] : _version (string): 1.0.0
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000095a4492f028aa1fd432ea71146b433e7b4446611
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [5] : 426f6f73742d4c6f636b65642041505900000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 626c415059000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 312e302e30000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2,153.05
Net Worth in ETH
1.097097
Token Allocations
APY
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.000461 | 4,674,348.7332 | $2,153.05 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.