ETH Price: $2,229.34 (-1.08%)

Contract

0x2f6Ff964eb04CC42192A78210C77a44B1f69AF1D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove Liquidity83178182019-08-09 17:49:342030 days ago1565372974IN
0x2f6Ff964...B1f69AF1D
0 ETH0.000569495.39584837
Transfer83177932019-08-09 17:42:162030 days ago1565372536IN
0x2f6Ff964...B1f69AF1D
0 ETH0.0005700411
Transfer83177782019-08-09 17:38:032030 days ago1565372283IN
0x2f6Ff964...B1f69AF1D
0 ETH0.0007364420
Remove Liquidity83176382019-08-09 17:04:312030 days ago1565370271IN
0x2f6Ff964...B1f69AF1D
0 ETH0.0002744311
Add Liquidity83176222019-08-09 17:00:412030 days ago1565370041IN
0x2f6Ff964...B1f69AF1D
0 ETH0.0011468610.18560885
Update Output To...82777002019-08-03 12:24:132036 days ago1564835053IN
0x2f6Ff964...B1f69AF1D
0 ETH0.00011932.74140953
Update Output To...82776992019-08-03 12:24:062036 days ago1564835046IN
0x2f6Ff964...B1f69AF1D
0 ETH0.000135693.09548711
Update Input Tok...82776942019-08-03 12:21:492036 days ago1564834909IN
0x2f6Ff964...B1f69AF1D
0 ETH0.000126132.90037214
Update Input Tok...82776922019-08-03 12:21:462036 days ago1564834906IN
0x2f6Ff964...B1f69AF1D
0 ETH0.000136983.12678397
Transfer Ownersh...82775262019-08-03 11:44:322036 days ago1564832672IN
0x2f6Ff964...B1f69AF1D
0 ETH0.0003066410.19354838

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.1.0b9

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

contract ERC20():
    def transfer(_to: address, _value: uint256) -> bool: modifying
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying
    def balanceOf(_owner: address) -> uint256: constant
    def allowance(_owner: address, _spender: address) -> uint256: constant
    def decimals() -> uint256: constant

contract PriceOracle():
    def poolSize(contract_address: address) -> uint256: constant
    def normalized_token_prices(token_address: address) -> uint256: constant

TOKEN_PRICE_MULTIPLIER: constant(uint256) = 100000000
FEE_MULTIPLIER: constant(uint256) = 100000

# ERC20 events
Transfer: event({_from: indexed(address), _to: indexed(address), _value: uint256})
Approval: event({_owner: indexed(address), _spender: indexed(address), _value: uint256})

OwnershipTransferred: event({previous_owner: indexed(address), new_owner: indexed(address)})
LiquidityAdded: event({provider: indexed(address), amount: indexed(uint256)})
LiquidityRemoved: event({provider: indexed(address), amount: indexed(uint256)})
Trade: event({input_token: indexed(address), output_token: indexed(address), input_amount: indexed(uint256)})
PermissionUpdated: event({name: indexed(string[32]), value: indexed(bool)})
FeeUpdated: event({name: indexed(string[32]), value: indexed(decimal)})
PriceOracleAddressUpdated: event({new_address: indexed(address)})
Payment: event({amount: uint256(wei), _from: indexed(address)})

name: public(string[32])                                 # Stablecoinswap
owner: public(address)                                   # contract owner
decimals: public(uint256)                                # 18
totalSupply: public(uint256)                             # total number of contract tokens in existence
balanceOf: public(map(address, uint256))                 # balance of an address
allowance: public(map(address, map(address, uint256)))   # allowance of one address on another
inputTokens: public(map(address, bool))                  # addresses of the ERC20 tokens allowed to transfer into this contract
outputTokens: public(map(address, bool))                 # addresses of the ERC20 tokens allowed to transfer out of this contract
permissions: public(map(string[32], bool))               # pause / resume contract functions
feesInt: map(string[32], uint256)                        # trade / pool fees multiplied by FEE_MULTIPLIER
priceOracleAddress: public(address)                      # address of price oracle

@public
def __init__(token_addresses: address[3], price_oracle_addr: address):
    assert price_oracle_addr != ZERO_ADDRESS

    self.owner = msg.sender
    self.name = "Stablecoinswap"
    self.decimals = 18
    self.permissions["tradingAllowed"] = True
    self.permissions["liquidityAddingAllowed"] = True
    self.permissions["liquidityRemovingAllowed"] = True

    for i in range(3):
        assert token_addresses[i] != ZERO_ADDRESS
        self.inputTokens[token_addresses[i]] = True
        self.outputTokens[token_addresses[i]] = True

    self.feesInt['tradeFee'] = 200
    self.feesInt['ownerFee'] = 100

    self.priceOracleAddress = price_oracle_addr

@private
@constant
def tokenPrice(token_address: address) -> uint256:
    token_price: uint256 = PriceOracle(self.priceOracleAddress).normalized_token_prices(token_address)
    assert token_price > 0

    return token_price

# Deposit erc20 token
@public
def addLiquidity(token_address: address, erc20_token_amount: uint256, deadline: timestamp) -> bool:
    assert self.inputTokens[token_address]
    assert deadline > block.timestamp and erc20_token_amount > 0
    assert self.permissions["liquidityAddingAllowed"]
    assert ERC20(token_address).balanceOf(msg.sender) >= erc20_token_amount
    assert ERC20(token_address).allowance(msg.sender, self) >= erc20_token_amount

    token_price: uint256 = self.tokenPrice(token_address)
    # It's better to divide at the very end for a higher precision
    new_liquidity: uint256 = token_price * erc20_token_amount / TOKEN_PRICE_MULTIPLIER
    if self.totalSupply > 0:
        new_liquidity = new_liquidity * self.totalSupply / PriceOracle(self.priceOracleAddress).poolSize(self)
    else:
        assert new_liquidity >= 1000000000

    self.balanceOf[msg.sender] += new_liquidity
    self.totalSupply += new_liquidity

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_from_result: bool = ERC20(token_address).transferFrom(msg.sender, self, erc20_token_amount)
    assert transfer_from_result

    log.LiquidityAdded(msg.sender, new_liquidity)

    return True

# Withdraw erc20 token
@public
def removeLiquidity(token_address: address, stableswap_token_amount: uint256, deadline: timestamp) -> bool:
    assert self.outputTokens[token_address]
    assert stableswap_token_amount > 0 and deadline > block.timestamp
    assert self.balanceOf[msg.sender] >= stableswap_token_amount
    assert self.permissions["liquidityRemovingAllowed"]
    assert self.totalSupply > 0

    token_price: uint256 = self.tokenPrice(token_address)
    pool_size: uint256 = PriceOracle(self.priceOracleAddress).poolSize(self)
    # erc20_token_amount = stableswapt_token_amount * pool_size / totalSupply / token_price * TOKEN_PRICE_MULTIPLIER
    # It's better to divide at the very end for a higher precision
    erc20_token_amount: uint256 = stableswap_token_amount * pool_size * TOKEN_PRICE_MULTIPLIER / token_price / self.totalSupply

    ownerFee: uint256 = 0

    if msg.sender != self.owner:
        ownerFee = stableswap_token_amount * self.feesInt['ownerFee'] / FEE_MULTIPLIER
        multiplier_after_fees: uint256 = FEE_MULTIPLIER - self.feesInt['ownerFee'] - self.feesInt['tradeFee']
        erc20_token_amount = erc20_token_amount * multiplier_after_fees / FEE_MULTIPLIER

    self.balanceOf[msg.sender] -= stableswap_token_amount
    self.balanceOf[self.owner] += ownerFee
    self.totalSupply -= stableswap_token_amount - ownerFee

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_result: bool = ERC20(token_address).transfer(msg.sender, erc20_token_amount)
    assert transfer_result

    log.LiquidityRemoved(msg.sender, stableswap_token_amount)

    return True

# Trade one erc20 token for another
@public
def swapTokens(input_token: address, output_token: address, erc20_input_amount: uint256, erc20_min_output_amount: uint256, deadline: timestamp) -> bool:
    assert self.inputTokens[input_token] and self.outputTokens[output_token]
    assert erc20_input_amount > 0 and erc20_min_output_amount > 0
    assert deadline > block.timestamp
    assert self.permissions["tradingAllowed"]
    assert ERC20(input_token).balanceOf(msg.sender) >= erc20_input_amount
    assert ERC20(input_token).allowance(msg.sender, self) >= erc20_input_amount

    input_token_price: uint256 = self.tokenPrice(input_token)
    output_token_price: uint256 = self.tokenPrice(output_token)

    # contract_token_amount is an equivalent of an input multiplied by TOKEN_PRICE_MULTIPLIER
    contract_token_amount: uint256 = erc20_input_amount * input_token_price
    tradeFee: uint256 = contract_token_amount * self.feesInt['tradeFee'] / FEE_MULTIPLIER
    ownerFee: uint256 = contract_token_amount * self.feesInt['ownerFee'] / FEE_MULTIPLIER
    contract_token_amount -= tradeFee + ownerFee

    tradeFee /= TOKEN_PRICE_MULTIPLIER
    ownerFee /= TOKEN_PRICE_MULTIPLIER
    pool_size_after_swap: uint256 = PriceOracle(self.priceOracleAddress).poolSize(self) + tradeFee
    new_owner_shares: uint256 = self.totalSupply * ownerFee / pool_size_after_swap

    erc20_output_amount: uint256 = contract_token_amount / output_token_price
    assert erc20_output_amount >= erc20_min_output_amount

    self.balanceOf[self.owner] += new_owner_shares
    self.totalSupply += new_owner_shares

    # Can't assert the result directly: https://github.com/ethereum/vyper/issues/1468
    transfer_from_result: bool = ERC20(input_token).transferFrom(msg.sender, self, erc20_input_amount)
    assert transfer_from_result
    transfer_result: bool = ERC20(output_token).transfer(msg.sender, erc20_output_amount)
    assert transfer_result

    log.Trade(input_token, output_token, erc20_input_amount)

    return True

@public
def updateInputToken(token_address: address, allowed: bool) -> bool:
    assert msg.sender == self.owner
    assert not self.inputTokens[token_address] == allowed
    self.inputTokens[token_address] = allowed
    return True

@public
def updateOutputToken(token_address: address, allowed: bool) -> bool:
    assert msg.sender == self.owner
    assert not self.outputTokens[token_address] == allowed
    self.outputTokens[token_address] = allowed
    return True

@public
def updatePermission(permission_name: string[32], value: bool) -> bool:
    assert msg.sender == self.owner
    self.permissions[permission_name] = value
    log.PermissionUpdated(permission_name, value)
    return True

# Return share of total liquidity belonging to the user
@public
@constant
def poolOwnership(user_address: address) -> decimal:
    user_balance: decimal = convert(self.balanceOf[user_address], decimal)
    total_liquidity: decimal = convert(self.totalSupply, decimal)
    share: decimal = user_balance / total_liquidity
    return share

@public
def transferOwnership(new_owner: address) -> bool:
    assert new_owner != ZERO_ADDRESS
    assert msg.sender == self.owner
    self.owner = new_owner
    log.OwnershipTransferred(self.owner, new_owner)
    return True

@public
def updateFee(fee_name: string[32], value: decimal) -> bool:
    assert msg.sender == self.owner
    self.feesInt[fee_name] = convert(floor(value * convert(FEE_MULTIPLIER, decimal)), uint256)
    log.FeeUpdated(fee_name, value)
    return True

@public
@constant
def fees(fee_name: string[32]) -> decimal:
    return convert(self.feesInt[fee_name], decimal) / convert(FEE_MULTIPLIER, decimal)

@public
def updatePriceOracleAddress(new_address: address) -> bool:
    assert msg.sender == self.owner
    self.priceOracleAddress = new_address
    log.PriceOracleAddressUpdated(new_address)
    return True

# ERC-20 functions

@public
def transfer(_to: address, _value: uint256) -> bool:
    self.balanceOf[msg.sender] -= _value
    self.balanceOf[_to] += _value
    log.Transfer(msg.sender, _to, _value)
    return True

@public
def transferFrom(_from: address, _to: address, _value: uint256) -> bool:
    self.balanceOf[_from] -= _value
    self.balanceOf[_to] += _value
    self.allowance[_from][msg.sender] -= _value
    log.Transfer(_from, _to, _value)
    return True

@public
def approve(_spender: address, _value: uint256) -> bool:
    self.allowance[msg.sender][_spender] = _value
    log.Approval(msg.sender, msg.sender, _value)
    return True

Contract Security Audit

Contract ABI

API
[{"name":"Transfer","inputs":[{"type":"address","name":"_from","indexed":true},{"type":"address","name":"_to","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"type":"address","name":"_owner","indexed":true},{"type":"address","name":"_spender","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false,"type":"event"},{"name":"OwnershipTransferred","inputs":[{"type":"address","name":"previous_owner","indexed":true},{"type":"address","name":"new_owner","indexed":true}],"anonymous":false,"type":"event"},{"name":"LiquidityAdded","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"LiquidityRemoved","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"Trade","inputs":[{"type":"address","name":"input_token","indexed":true},{"type":"address","name":"output_token","indexed":true},{"type":"uint256","name":"input_amount","indexed":true}],"anonymous":false,"type":"event"},{"name":"PermissionUpdated","inputs":[{"type":"string32","name":"name","indexed":true},{"type":"bool","name":"value","indexed":true}],"anonymous":false,"type":"event"},{"name":"FeeUpdated","inputs":[{"type":"string32","name":"name","indexed":true},{"type":"fixed168x10","name":"value","indexed":true}],"anonymous":false,"type":"event"},{"name":"PriceOracleAddressUpdated","inputs":[{"type":"address","name":"new_address","indexed":true}],"anonymous":false,"type":"event"},{"name":"Payment","inputs":[{"type":"uint256","name":"amount","indexed":false,"unit":"wei"},{"type":"address","name":"_from","indexed":true}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address[3]","name":"token_addresses"},{"type":"address","name":"price_oracle_addr"}],"constant":false,"payable":false,"type":"constructor"},{"name":"addLiquidity","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"uint256","name":"erc20_token_amount"},{"type":"uint256","name":"deadline","unit":"sec"}],"constant":false,"payable":false,"type":"function","gas":84801},{"name":"removeLiquidity","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"uint256","name":"stableswap_token_amount"},{"type":"uint256","name":"deadline","unit":"sec"}],"constant":false,"payable":false,"type":"function","gas":124344},{"name":"swapTokens","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"input_token"},{"type":"address","name":"output_token"},{"type":"uint256","name":"erc20_input_amount"},{"type":"uint256","name":"erc20_min_output_amount"},{"type":"uint256","name":"deadline","unit":"sec"}],"constant":false,"payable":false,"type":"function","gas":94815},{"name":"updateInputToken","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"bool","name":"allowed"}],"constant":false,"payable":false,"type":"function","gas":36334},{"name":"updateOutputToken","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"token_address"},{"type":"bool","name":"allowed"}],"constant":false,"payable":false,"type":"function","gas":36364},{"name":"updatePermission","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"permission_name"},{"type":"bool","name":"value"}],"constant":false,"payable":false,"type":"function","gas":37803},{"name":"poolOwnership","outputs":[{"type":"fixed168x10","name":"out"}],"inputs":[{"type":"address","name":"user_address"}],"constant":true,"payable":false,"type":"function","gas":1375},{"name":"transferOwnership","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"new_owner"}],"constant":false,"payable":false,"type":"function","gas":37700},{"name":"updateFee","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"fee_name"},{"type":"fixed168x10","name":"value"}],"constant":false,"payable":false,"type":"function","gas":37857},{"name":"fees","outputs":[{"type":"fixed168x10","name":"out"}],"inputs":[{"type":"string","name":"fee_name"}],"constant":true,"payable":false,"type":"function","gas":1349},{"name":"updatePriceOracleAddress","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"new_address"}],"constant":false,"payable":false,"type":"function","gas":37112},{"name":"transfer","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":74374},{"name":"transferFrom","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":110247},{"name":"approve","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"constant":false,"payable":false,"type":"function","gas":38105},{"name":"name","outputs":[{"type":"string","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":6732},{"name":"owner","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":963},{"name":"decimals","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":993},{"name":"totalSupply","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1023},{"name":"balanceOf","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1225},{"name":"allowance","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"constant":true,"payable":false,"type":"function","gas":1415},{"name":"inputTokens","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1285},{"name":"outputTokens","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"address","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1315},{"name":"permissions","outputs":[{"type":"bool","name":"out"}],"inputs":[{"type":"string","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1488},{"name":"priceOracleAddress","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1203}]

600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052608061257d6101403934156100a757600080fd5b602061257d60c03960c05160205181106100c057600080fd5b506020602061257d0160c03960c05160205181106100dd57600080fd5b506020604061257d0160c03960c05160205181106100fa57600080fd5b506020606061257d0160c03960c051602051811061011757600080fd5b5060006101a051141561012957600080fd5b33600155600e6101c0527f537461626c65636f696e737761700000000000000000000000000000000000006101e0526101c080600060c052602060c020602082510161012060006002818352015b8261012051602002111561018a576101ac565b61012051602002850151610120518501555b8151600101808352811415610177575b505050505050601260025560016008600e610220527f74726164696e67416c6c6f776564000000000000000000000000000000000000610240526102205150610220516102402060e05260c052604060c02055600160086016610280527f6c6971756964697479416464696e67416c6c6f776564000000000000000000006102a0526102805150610280516102a02060e05260c052604060c020556001600860186102e0527f6c697175696469747952656d6f76696e67416c6c6f7765640000000000000000610300526102e051506102e0516103002060e05260c052604060c0205561034060006003818352015b600061014061034051600381106102b157600080fd5b602002015114156102c157600080fd5b6001600661014061034051600381106102d957600080fd5b602002015160e05260c052604060c0205560016007610140610340516003811061030257600080fd5b602002015160e05260c052604060c020555b815160010180835281141561029b575b505060c860096008610360527f7472616465466565000000000000000000000000000000000000000000000000610380526103605150610360516103802060e05260c052604060c020556064600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c020556101a051600a5561256556600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052600015610115575b6101605261014052600a543b6100b057600080fd5b600a543014156100bf57600080fd5b6020610220602463f1bb10866101a052610140516101c0526101bc600a545afa6100e857600080fd5b60005061022051610180526000610180511161010357600080fd5b61018051600052600051610160515650005b6355776b776000511415610538576060600461014037341561013657600080fd5b600435602051811061014757600080fd5b5060066101405160e05260c052604060c0205461016357600080fd5b600061016051114261018051111661017a57600080fd5b600860166101a0527f6c6971756964697479416464696e67416c6c6f776564000000000000000000006101c0526101a051506101a0516101c02060e05260c052604060c020546101c957600080fd5b61016051610140513b6101db57600080fd5b610140513014156101eb57600080fd5b602061028060246370a0823161020052336102205261021c610140515afa61021257600080fd5b60005061028051101561022457600080fd5b61016051610140513b61023657600080fd5b6101405130141561024657600080fd5b6020610340604463dd62ed3e6102a052336102c052306102e0526102bc610140515afa61027257600080fd5b60005061034051101561028457600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516103205161034051610360516384ba3f6961038052610140516103a0526103a0516006580161009b565b61040052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261040051610360526305f5e10061034c57600080fd5b6305f5e100610360511515610362576000610388565b6101605161036051610160516103605102041461037e57600080fd5b6101605161036051025b04610420526000600354111561043457600a543b6103a557600080fd5b600a543014156103b457600080fd5b60206104c0602463fa75d16061044052306104605261045c600a545afa6103da57600080fd5b6000506104c0516104e0526104e0516103f257600080fd5b6104e05161042051151561040757600061042a565b600354610420516003546104205102041461042157600080fd5b60035461042051025b0461042052610449565b633b9aca0061042051101561044857600080fd5b5b60043360e05260c052604060c020805461042051825401101561046b57600080fd5b610420518154018155506003805461042051825401101561048b57600080fd5b61042051815401815550610140513b6104a357600080fd5b610140513014156104b357600080fd5b60206105e060646323b872dd6105205233610540523061056052610160516105805261053c6000610140515af16104e957600080fd5b6000506105e051610500526105005161050157600080fd5b61042051337fc17cea59c2955cb181b03393209566960365771dbba9dc3d510180e7cb31208860006000a3600160005260206000f3005b63e38192e36000511415610c84576060600461014037341561055957600080fd5b600435602051811061056a57600080fd5b5060076101405160e05260c052604060c0205461058657600080fd5b426101805111600061016051111661059d57600080fd5b6101605160043360e05260c052604060c0205410156105bb57600080fd5b600860186101a0527f6c697175696469747952656d6f76696e67416c6c6f77656400000000000000006101c0526101a051506101a0516101c02060e05260c052604060c0205461060a57600080fd5b60006003541161061957600080fd5b6101405161016051610180516101a0516101c0516101e051610200516384ba3f69610220526101405161024052610240516006580161009b565b6102a052610200526101e0526101c0526101a0526101805261016052610140526102a05161020052600a543b61068857600080fd5b600a5430141561069757600080fd5b6020610360602463fa75d1606102e05230610300526102fc600a545afa6106bd57600080fd5b600050610360516102c0526003546106d457600080fd5b600354610200516106e457600080fd5b610200516101605115156106f957600061071f565b6102c051610160516102c0516101605102041461071557600080fd5b6102c05161016051025b151561072c5760006107ee565b6305f5e100610160511515610742576000610768565b6102c051610160516102c0516101605102041461075e57600080fd5b6102c05161016051025b6305f5e10061016051151561077e5760006107a4565b6102c051610160516102c0516101605102041461079a57600080fd5b6102c05161016051025b0204146107b057600080fd5b6305f5e1006101605115156107c65760006107ec565b6102c051610160516102c051610160510204146107e257600080fd5b6102c05161016051025b025b04046103805260006103a05260015433141515610b4257620186a061081257600080fd5b620186a0610160511515610827576000610913565b600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c0205461016051600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c02054610160510204146108c757600080fd5b600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c0205461016051025b046103a052600960086104a0527f74726164654665650000000000000000000000000000000000000000000000006104c0526104a051506104a0516104c02060e05260c052604060c0205460096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a010156109b357600080fd5b60096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a0031015610a0957600080fd5b600960086104a0527f74726164654665650000000000000000000000000000000000000000000000006104c0526104a051506104a0516104c02060e05260c052604060c0205460096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a01015610aa457600080fd5b60096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a0030361042052620186a0610b0157600080fd5b620186a0610380511515610b16576000610b3c565b61042051610380516104205161038051020414610b3257600080fd5b6104205161038051025b04610380525b60043360e05260c052604060c0206101605181541015610b6157600080fd5b61016051815403815550600460015460e05260c052604060c02080546103a0518254011015610b8f57600080fd5b6103a05181540181555060036103a051610160511015610bae57600080fd5b6103a051610160510381541015610bc457600080fd5b6103a051610160511015610bd757600080fd5b6103a0516101605103815403815550610140513b610bf457600080fd5b61014051301415610c0457600080fd5b60206105c0604463a9059cbb610520523361054052610380516105605261053c6000610140515af1610c3557600080fd5b6000506105c0516105005261050051610c4d57600080fd5b61016051337fc2c3f06e49b9f15e7b4af9055e183b0d73362e033ad82a07dec9bf984017171960006000a3600160005260206000f3005b6343d91bf160005114156115245760a06004610140373415610ca557600080fd5b6004356020518110610cb657600080fd5b506024356020518110610cc857600080fd5b5060076101605160e05260c052604060c0205460066101405160e05260c052604060c0205416610cf757600080fd5b60006101a051116000610180511116610d0f57600080fd5b426101c05111610d1e57600080fd5b6008600e6101e0527f74726164696e67416c6c6f776564000000000000000000000000000000000000610200526101e051506101e0516102002060e05260c052604060c02054610d6d57600080fd5b61018051610140513b610d7f57600080fd5b61014051301415610d8f57600080fd5b60206102c060246370a0823161024052336102605261025c610140515afa610db657600080fd5b6000506102c0511015610dc857600080fd5b61018051610140513b610dda57600080fd5b61014051301415610dea57600080fd5b6020610380604463dd62ed3e6102e052336103005230610320526102fc610140515afa610e1657600080fd5b600050610380511015610e2857600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516384ba3f696103c052610140516103e0526103e0516006580161009b565b610440526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610440516103a0526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e051610400516104205161044051610460516384ba3f6961048052610160516104a0526104a0516006580161009b565b61050052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526105005161046052610180511515610ffd576000611023565b6103a051610180516103a0516101805102041461101957600080fd5b6103a05161018051025b61052052620186a061103457600080fd5b620186a0610520511515611049576000611135565b60096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c020546105205160096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c02054610520510204146110e957600080fd5b60096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c0205461052051025b0461054052620186a061114757600080fd5b620186a061052051151561115c576000611248565b600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c0205461052051600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c02054610520510204146111fc57600080fd5b600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c0205461052051025b046105c052610520610540516105c0516105405101101561126857600080fd5b6105c05161054051018151101561127e57600080fd5b610540516105c0516105405101101561129657600080fd5b6105c05161054051018151038152506105406305f5e1006112b657600080fd5b6305f5e1008151048152506105c06305f5e1006112d257600080fd5b6305f5e100815104815250600a543b6112ea57600080fd5b600a543014156112f957600080fd5b60206106e0602463fa75d16061066052306106805261067c600a545afa61131f57600080fd5b6000506106e0516107005261070051610540516107005101101561134257600080fd5b610540516107005101610640526106405161135c57600080fd5b610640516003541515611370576000611393565b6105c0516003546105c05160035402041461138a57600080fd5b6105c051600354025b0461072052610460516113a557600080fd5b610460516105205104610740526101a0516107405110156113c557600080fd5b600460015460e05260c052604060c02080546107205182540110156113e957600080fd5b610720518154018155506003805461072051825401101561140957600080fd5b61072051815401815550610140513b61142157600080fd5b6101405130141561143157600080fd5b602061084060646323b872dd61078052336107a052306107c052610180516107e05261079c6000610140515af161146757600080fd5b60005061084051610760526107605161147f57600080fd5b610160513b61148d57600080fd5b6101605130141561149d57600080fd5b6020610920604463a9059cbb61088052336108a052610740516108c05261089c6000610160515af16114ce57600080fd5b6000506109205161086052610860516114e657600080fd5b6101805161016051610140517f0d49f50d6dd629f4e4070731edb0abd680823ab1cbd43d89590522da4b5b32e760006000a4600160005260206000f3005b6323d7d1a860005114156115b9576040600461014037341561154557600080fd5b600435602051811061155657600080fd5b506024356002811061156757600080fd5b50600154331461157657600080fd5b6101605160066101405160e05260c052604060c02054141561159757600080fd5b6101605160066101405160e05260c052604060c02055600160005260206000f3005b6344dbd334600051141561164e57604060046101403734156115da57600080fd5b60043560205181106115eb57600080fd5b50602435600281106115fc57600080fd5b50600154331461160b57600080fd5b6101605160076101405160e05260c052604060c02054141561162c57600080fd5b6101605160076101405160e05260c052604060c02055600160005260206000f3005b63903a10016000511415611739576040600461014037341561166f57600080fd5b604060043560040161018037602060043560040135111561168f57600080fd5b6024356002811061169f57600080fd5b5060015433146116ae57600080fd5b610160516008610180516101a02060e05260c052604060c02055610160516101808060200151600082518060209013156116e757600080fd5b80919012156116f557600080fd5b8061018051036101000a82049050905090507f22b59c94b6ec143f205f4ac5d8177280de0eab514e8d857330a1af17343e97bd60006000a3600160005260206000f3005b6380a0628b6000511415611808576020600461014037341561175a57600080fd5b600435602051811061176b57600080fd5b506402540be40060046101405160e05260c052604060c020540260805181111561179457600080fd5b610160526402540be400600354026080518111156117b157600080fd5b6101805260a0516101605161018051806117ca57600080fd5b806402540be40083020590509050806080519013156117e857600080fd5b80919012156117f657600080fd5b6101a0526101a05160005260206000f3005b63f2fde38b600051141561189a576020600461014037341561182957600080fd5b600435602051811061183a57600080fd5b50600061014051141561184c57600080fd5b600154331461185a57600080fd5b61014051600155610140516001547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3600160005260206000f3005b63993f4a206000511415611aa657604060046101403734156118bb57600080fd5b60406004356004016101803760206004356004013511156118db57600080fd5b60015433146118e957600080fd5b600066038d7ea4c680006101e05260a0516101e05161016051818102811583838305141761191657600080fd5b6402540be40081059050905090508060805190131561193457600080fd5b809190121561194257600080fd5b12156119b2576402540be4006402540be3ff66038d7ea4c680006101e05260a0516101e05161016051818102811583838305141761197f57600080fd5b6402540be40081059050905090508060805190131561199d57600080fd5b80919012156119ab57600080fd5b0305611a11565b6402540be40066038d7ea4c680006101e05260a0516101e0516101605181810281158383830514176119e357600080fd5b6402540be400810590509050905080608051901315611a0157600080fd5b8091901215611a0f57600080fd5b055b6000811215611a1f57600080fd5b6009610180516101a02060e05260c052604060c0205561016051610180806020015160008251806020901315611a5457600080fd5b8091901215611a6257600080fd5b8061018051036101000a82049050905090507fd8dd23b660d1a2cd022ce86c6122d03c591f721b3c2af378ecb404c0b605ddc760006000a3600160005260206000f3005b63e005cbbf6000511415611b6e5760206004610140373415611ac757600080fd5b6040600435600401610160376020600435600401351115611ae757600080fd5b6402540be4006009610160516101802060e05260c052604060c0205402608051811115611b1357600080fd5b6101c05266038d7ea4c680006101e05260a0516101c0516101e05180611b3857600080fd5b806402540be4008302059050905080608051901315611b5657600080fd5b8091901215611b6457600080fd5b60005260206000f3005b6386d1e02b6000511415611bec5760206004610140373415611b8f57600080fd5b6004356020518110611ba057600080fd5b506001543314611baf57600080fd5b61014051600a55610140517f12ad2958c2383ce31dd51da097e673d81de88c202731500406f3afc70a8cf17060006000a2600160005260206000f3005b63a9059cbb6000511415611cb75760406004610140373415611c0d57600080fd5b6004356020518110611c1e57600080fd5b5060043360e05260c052604060c0206101605181541015611c3e57600080fd5b6101605181540381555060046101405160e05260c052604060c0208054610160518254011015611c6d57600080fd5b61016051815401815550610160516101805261014051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610180a3600160005260206000f3005b6323b872dd6000511415611dd25760606004610140373415611cd857600080fd5b6004356020518110611ce957600080fd5b506024356020518110611cfb57600080fd5b5060046101405160e05260c052604060c0206101805181541015611d1e57600080fd5b6101805181540381555060046101605160e05260c052604060c0208054610180518254011015611d4d57600080fd5b6101805181540181555060056101405160e05260c052604060c0203360e05260c052604060c0206101805181541015611d8557600080fd5b61018051815403815550610180516101a05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a3600160005260206000f3005b63095ea7b36000511415611e645760406004610140373415611df357600080fd5b6004356020518110611e0457600080fd5b506101605160053360e05260c052604060c0206101405160e05260c052604060c02055610160516101805233337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610180a3600160005260206000f3005b6306fdde036000511415611f47573415611e7d57600080fd5b60008060c052602060c020610180602082540161012060006002818352015b82610120516020021115611eaf57611ed1565b61012051850154610120516020028501525b8151600101808352811415611e9c575b5050505050506101805160206001820306601f82010390506101e0610180516020818352015b826101e0511115611f0757611f23565b60006101e0516101a001535b8151600101808352811415611ef7575b5050506020610160526040610180510160206001820306601f8201039050610160f3005b638da5cb5b6000511415611f6d573415611f6057600080fd5b60015460005260206000f3005b63313ce5676000511415611f93573415611f8657600080fd5b60025460005260206000f3005b6318160ddd6000511415611fb9573415611fac57600080fd5b60035460005260206000f3005b6370a0823160005114156120085760206004610140373415611fda57600080fd5b6004356020518110611feb57600080fd5b5060046101405160e05260c052604060c0205460005260206000f3005b63dd62ed3e6000511415612078576040600461014037341561202957600080fd5b600435602051811061203a57600080fd5b50602435602051811061204c57600080fd5b5060056101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f3005b634999eb8f60005114156120c7576020600461014037341561209957600080fd5b60043560205181106120aa57600080fd5b5060066101405160e05260c052604060c0205460005260206000f3005b6351ecd2fa600051141561211657602060046101403734156120e857600080fd5b60043560205181106120f957600080fd5b5060076101405160e05260c052604060c0205460005260206000f3005b63752708fb6000511415612177576020600461014037341561213757600080fd5b604060043560040161016037602060043560040135111561215757600080fd5b6008610160516101802060e05260c052604060c0205460005260206000f3005b632bc51c6d600051141561219d57341561219057600080fd5b600a5460005260206000f3005b60006000fd5b6103c2612565036103c26000396103c2612565036000f3000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9

Deployed Bytecode

0x600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052600015610115575b6101605261014052600a543b6100b057600080fd5b600a543014156100bf57600080fd5b6020610220602463f1bb10866101a052610140516101c0526101bc600a545afa6100e857600080fd5b60005061022051610180526000610180511161010357600080fd5b61018051600052600051610160515650005b6355776b776000511415610538576060600461014037341561013657600080fd5b600435602051811061014757600080fd5b5060066101405160e05260c052604060c0205461016357600080fd5b600061016051114261018051111661017a57600080fd5b600860166101a0527f6c6971756964697479416464696e67416c6c6f776564000000000000000000006101c0526101a051506101a0516101c02060e05260c052604060c020546101c957600080fd5b61016051610140513b6101db57600080fd5b610140513014156101eb57600080fd5b602061028060246370a0823161020052336102205261021c610140515afa61021257600080fd5b60005061028051101561022457600080fd5b61016051610140513b61023657600080fd5b6101405130141561024657600080fd5b6020610340604463dd62ed3e6102a052336102c052306102e0526102bc610140515afa61027257600080fd5b60005061034051101561028457600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516103205161034051610360516384ba3f6961038052610140516103a0526103a0516006580161009b565b61040052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261040051610360526305f5e10061034c57600080fd5b6305f5e100610360511515610362576000610388565b6101605161036051610160516103605102041461037e57600080fd5b6101605161036051025b04610420526000600354111561043457600a543b6103a557600080fd5b600a543014156103b457600080fd5b60206104c0602463fa75d16061044052306104605261045c600a545afa6103da57600080fd5b6000506104c0516104e0526104e0516103f257600080fd5b6104e05161042051151561040757600061042a565b600354610420516003546104205102041461042157600080fd5b60035461042051025b0461042052610449565b633b9aca0061042051101561044857600080fd5b5b60043360e05260c052604060c020805461042051825401101561046b57600080fd5b610420518154018155506003805461042051825401101561048b57600080fd5b61042051815401815550610140513b6104a357600080fd5b610140513014156104b357600080fd5b60206105e060646323b872dd6105205233610540523061056052610160516105805261053c6000610140515af16104e957600080fd5b6000506105e051610500526105005161050157600080fd5b61042051337fc17cea59c2955cb181b03393209566960365771dbba9dc3d510180e7cb31208860006000a3600160005260206000f3005b63e38192e36000511415610c84576060600461014037341561055957600080fd5b600435602051811061056a57600080fd5b5060076101405160e05260c052604060c0205461058657600080fd5b426101805111600061016051111661059d57600080fd5b6101605160043360e05260c052604060c0205410156105bb57600080fd5b600860186101a0527f6c697175696469747952656d6f76696e67416c6c6f77656400000000000000006101c0526101a051506101a0516101c02060e05260c052604060c0205461060a57600080fd5b60006003541161061957600080fd5b6101405161016051610180516101a0516101c0516101e051610200516384ba3f69610220526101405161024052610240516006580161009b565b6102a052610200526101e0526101c0526101a0526101805261016052610140526102a05161020052600a543b61068857600080fd5b600a5430141561069757600080fd5b6020610360602463fa75d1606102e05230610300526102fc600a545afa6106bd57600080fd5b600050610360516102c0526003546106d457600080fd5b600354610200516106e457600080fd5b610200516101605115156106f957600061071f565b6102c051610160516102c0516101605102041461071557600080fd5b6102c05161016051025b151561072c5760006107ee565b6305f5e100610160511515610742576000610768565b6102c051610160516102c0516101605102041461075e57600080fd5b6102c05161016051025b6305f5e10061016051151561077e5760006107a4565b6102c051610160516102c0516101605102041461079a57600080fd5b6102c05161016051025b0204146107b057600080fd5b6305f5e1006101605115156107c65760006107ec565b6102c051610160516102c051610160510204146107e257600080fd5b6102c05161016051025b025b04046103805260006103a05260015433141515610b4257620186a061081257600080fd5b620186a0610160511515610827576000610913565b600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c0205461016051600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c02054610160510204146108c757600080fd5b600960086103c0527f6f776e65724665650000000000000000000000000000000000000000000000006103e0526103c051506103c0516103e02060e05260c052604060c0205461016051025b046103a052600960086104a0527f74726164654665650000000000000000000000000000000000000000000000006104c0526104a051506104a0516104c02060e05260c052604060c0205460096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a010156109b357600080fd5b60096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a0031015610a0957600080fd5b600960086104a0527f74726164654665650000000000000000000000000000000000000000000000006104c0526104a051506104a0516104c02060e05260c052604060c0205460096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a01015610aa457600080fd5b60096008610440527f6f776e6572466565000000000000000000000000000000000000000000000000610460526104405150610440516104602060e05260c052604060c02054620186a0030361042052620186a0610b0157600080fd5b620186a0610380511515610b16576000610b3c565b61042051610380516104205161038051020414610b3257600080fd5b6104205161038051025b04610380525b60043360e05260c052604060c0206101605181541015610b6157600080fd5b61016051815403815550600460015460e05260c052604060c02080546103a0518254011015610b8f57600080fd5b6103a05181540181555060036103a051610160511015610bae57600080fd5b6103a051610160510381541015610bc457600080fd5b6103a051610160511015610bd757600080fd5b6103a0516101605103815403815550610140513b610bf457600080fd5b61014051301415610c0457600080fd5b60206105c0604463a9059cbb610520523361054052610380516105605261053c6000610140515af1610c3557600080fd5b6000506105c0516105005261050051610c4d57600080fd5b61016051337fc2c3f06e49b9f15e7b4af9055e183b0d73362e033ad82a07dec9bf984017171960006000a3600160005260206000f3005b6343d91bf160005114156115245760a06004610140373415610ca557600080fd5b6004356020518110610cb657600080fd5b506024356020518110610cc857600080fd5b5060076101605160e05260c052604060c0205460066101405160e05260c052604060c0205416610cf757600080fd5b60006101a051116000610180511116610d0f57600080fd5b426101c05111610d1e57600080fd5b6008600e6101e0527f74726164696e67416c6c6f776564000000000000000000000000000000000000610200526101e051506101e0516102002060e05260c052604060c02054610d6d57600080fd5b61018051610140513b610d7f57600080fd5b61014051301415610d8f57600080fd5b60206102c060246370a0823161024052336102605261025c610140515afa610db657600080fd5b6000506102c0511015610dc857600080fd5b61018051610140513b610dda57600080fd5b61014051301415610dea57600080fd5b6020610380604463dd62ed3e6102e052336103005230610320526102fc610140515afa610e1657600080fd5b600050610380511015610e2857600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516384ba3f696103c052610140516103e0526103e0516006580161009b565b610440526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610440516103a0526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e051610400516104205161044051610460516384ba3f6961048052610160516104a0526104a0516006580161009b565b61050052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526105005161046052610180511515610ffd576000611023565b6103a051610180516103a0516101805102041461101957600080fd5b6103a05161018051025b61052052620186a061103457600080fd5b620186a0610520511515611049576000611135565b60096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c020546105205160096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c02054610520510204146110e957600080fd5b60096008610560527f7472616465466565000000000000000000000000000000000000000000000000610580526105605150610560516105802060e05260c052604060c0205461052051025b0461054052620186a061114757600080fd5b620186a061052051151561115c576000611248565b600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c0205461052051600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c02054610520510204146111fc57600080fd5b600960086105e0527f6f776e6572466565000000000000000000000000000000000000000000000000610600526105e051506105e0516106002060e05260c052604060c0205461052051025b046105c052610520610540516105c0516105405101101561126857600080fd5b6105c05161054051018151101561127e57600080fd5b610540516105c0516105405101101561129657600080fd5b6105c05161054051018151038152506105406305f5e1006112b657600080fd5b6305f5e1008151048152506105c06305f5e1006112d257600080fd5b6305f5e100815104815250600a543b6112ea57600080fd5b600a543014156112f957600080fd5b60206106e0602463fa75d16061066052306106805261067c600a545afa61131f57600080fd5b6000506106e0516107005261070051610540516107005101101561134257600080fd5b610540516107005101610640526106405161135c57600080fd5b610640516003541515611370576000611393565b6105c0516003546105c05160035402041461138a57600080fd5b6105c051600354025b0461072052610460516113a557600080fd5b610460516105205104610740526101a0516107405110156113c557600080fd5b600460015460e05260c052604060c02080546107205182540110156113e957600080fd5b610720518154018155506003805461072051825401101561140957600080fd5b61072051815401815550610140513b61142157600080fd5b6101405130141561143157600080fd5b602061084060646323b872dd61078052336107a052306107c052610180516107e05261079c6000610140515af161146757600080fd5b60005061084051610760526107605161147f57600080fd5b610160513b61148d57600080fd5b6101605130141561149d57600080fd5b6020610920604463a9059cbb61088052336108a052610740516108c05261089c6000610160515af16114ce57600080fd5b6000506109205161086052610860516114e657600080fd5b6101805161016051610140517f0d49f50d6dd629f4e4070731edb0abd680823ab1cbd43d89590522da4b5b32e760006000a4600160005260206000f3005b6323d7d1a860005114156115b9576040600461014037341561154557600080fd5b600435602051811061155657600080fd5b506024356002811061156757600080fd5b50600154331461157657600080fd5b6101605160066101405160e05260c052604060c02054141561159757600080fd5b6101605160066101405160e05260c052604060c02055600160005260206000f3005b6344dbd334600051141561164e57604060046101403734156115da57600080fd5b60043560205181106115eb57600080fd5b50602435600281106115fc57600080fd5b50600154331461160b57600080fd5b6101605160076101405160e05260c052604060c02054141561162c57600080fd5b6101605160076101405160e05260c052604060c02055600160005260206000f3005b63903a10016000511415611739576040600461014037341561166f57600080fd5b604060043560040161018037602060043560040135111561168f57600080fd5b6024356002811061169f57600080fd5b5060015433146116ae57600080fd5b610160516008610180516101a02060e05260c052604060c02055610160516101808060200151600082518060209013156116e757600080fd5b80919012156116f557600080fd5b8061018051036101000a82049050905090507f22b59c94b6ec143f205f4ac5d8177280de0eab514e8d857330a1af17343e97bd60006000a3600160005260206000f3005b6380a0628b6000511415611808576020600461014037341561175a57600080fd5b600435602051811061176b57600080fd5b506402540be40060046101405160e05260c052604060c020540260805181111561179457600080fd5b610160526402540be400600354026080518111156117b157600080fd5b6101805260a0516101605161018051806117ca57600080fd5b806402540be40083020590509050806080519013156117e857600080fd5b80919012156117f657600080fd5b6101a0526101a05160005260206000f3005b63f2fde38b600051141561189a576020600461014037341561182957600080fd5b600435602051811061183a57600080fd5b50600061014051141561184c57600080fd5b600154331461185a57600080fd5b61014051600155610140516001547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3600160005260206000f3005b63993f4a206000511415611aa657604060046101403734156118bb57600080fd5b60406004356004016101803760206004356004013511156118db57600080fd5b60015433146118e957600080fd5b600066038d7ea4c680006101e05260a0516101e05161016051818102811583838305141761191657600080fd5b6402540be40081059050905090508060805190131561193457600080fd5b809190121561194257600080fd5b12156119b2576402540be4006402540be3ff66038d7ea4c680006101e05260a0516101e05161016051818102811583838305141761197f57600080fd5b6402540be40081059050905090508060805190131561199d57600080fd5b80919012156119ab57600080fd5b0305611a11565b6402540be40066038d7ea4c680006101e05260a0516101e0516101605181810281158383830514176119e357600080fd5b6402540be400810590509050905080608051901315611a0157600080fd5b8091901215611a0f57600080fd5b055b6000811215611a1f57600080fd5b6009610180516101a02060e05260c052604060c0205561016051610180806020015160008251806020901315611a5457600080fd5b8091901215611a6257600080fd5b8061018051036101000a82049050905090507fd8dd23b660d1a2cd022ce86c6122d03c591f721b3c2af378ecb404c0b605ddc760006000a3600160005260206000f3005b63e005cbbf6000511415611b6e5760206004610140373415611ac757600080fd5b6040600435600401610160376020600435600401351115611ae757600080fd5b6402540be4006009610160516101802060e05260c052604060c0205402608051811115611b1357600080fd5b6101c05266038d7ea4c680006101e05260a0516101c0516101e05180611b3857600080fd5b806402540be4008302059050905080608051901315611b5657600080fd5b8091901215611b6457600080fd5b60005260206000f3005b6386d1e02b6000511415611bec5760206004610140373415611b8f57600080fd5b6004356020518110611ba057600080fd5b506001543314611baf57600080fd5b61014051600a55610140517f12ad2958c2383ce31dd51da097e673d81de88c202731500406f3afc70a8cf17060006000a2600160005260206000f3005b63a9059cbb6000511415611cb75760406004610140373415611c0d57600080fd5b6004356020518110611c1e57600080fd5b5060043360e05260c052604060c0206101605181541015611c3e57600080fd5b6101605181540381555060046101405160e05260c052604060c0208054610160518254011015611c6d57600080fd5b61016051815401815550610160516101805261014051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610180a3600160005260206000f3005b6323b872dd6000511415611dd25760606004610140373415611cd857600080fd5b6004356020518110611ce957600080fd5b506024356020518110611cfb57600080fd5b5060046101405160e05260c052604060c0206101805181541015611d1e57600080fd5b6101805181540381555060046101605160e05260c052604060c0208054610180518254011015611d4d57600080fd5b6101805181540181555060056101405160e05260c052604060c0203360e05260c052604060c0206101805181541015611d8557600080fd5b61018051815403815550610180516101a05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a3600160005260206000f3005b63095ea7b36000511415611e645760406004610140373415611df357600080fd5b6004356020518110611e0457600080fd5b506101605160053360e05260c052604060c0206101405160e05260c052604060c02055610160516101805233337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610180a3600160005260206000f3005b6306fdde036000511415611f47573415611e7d57600080fd5b60008060c052602060c020610180602082540161012060006002818352015b82610120516020021115611eaf57611ed1565b61012051850154610120516020028501525b8151600101808352811415611e9c575b5050505050506101805160206001820306601f82010390506101e0610180516020818352015b826101e0511115611f0757611f23565b60006101e0516101a001535b8151600101808352811415611ef7575b5050506020610160526040610180510160206001820306601f8201039050610160f3005b638da5cb5b6000511415611f6d573415611f6057600080fd5b60015460005260206000f3005b63313ce5676000511415611f93573415611f8657600080fd5b60025460005260206000f3005b6318160ddd6000511415611fb9573415611fac57600080fd5b60035460005260206000f3005b6370a0823160005114156120085760206004610140373415611fda57600080fd5b6004356020518110611feb57600080fd5b5060046101405160e05260c052604060c0205460005260206000f3005b63dd62ed3e6000511415612078576040600461014037341561202957600080fd5b600435602051811061203a57600080fd5b50602435602051811061204c57600080fd5b5060056101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f3005b634999eb8f60005114156120c7576020600461014037341561209957600080fd5b60043560205181106120aa57600080fd5b5060066101405160e05260c052604060c0205460005260206000f3005b6351ecd2fa600051141561211657602060046101403734156120e857600080fd5b60043560205181106120f957600080fd5b5060076101405160e05260c052604060c0205460005260206000f3005b63752708fb6000511415612177576020600461014037341561213757600080fd5b604060043560040161016037602060043560040135111561215757600080fd5b6008610160516101802060e05260c052604060c0205460005260206000f3005b632bc51c6d600051141561219d57341561219057600080fd5b600a5460005260206000f3005b60006000fd

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e10000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [1] : 00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a23260359
Arg [2] : 0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1
Arg [3] : 0000000000000000000000002b4ba323ab07da8250e896b6ff29bb96ddfe55a9


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.