ERC-20
Overview
Max Total Supply
2.00878466930741434 CAV
Holders
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2.00878466930741434 CAVValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.3
Contract Source Code (Vyper language format)
# @version 0.3.3 # define swap route struct SwapRoute: swap_pool: address # swap pool to use for swap j_token: address # out token from the pool i: int128 # in token index j: int128 # out token index is_underlying: bool # true if exchange underlying coins using exchange_underlying() is_crypto_pool: bool # true if token index in uint256 # ERC20 events event Transfer: _from: indexed(address) _to: indexed(address) _value: uint256 event Approval: _owner: indexed(address) _spender: indexed(address) _value: uint256 # Vault events event Deposit: _token: indexed(address) _from: indexed(address) token_amount: uint256 vault_balance: uint256 event Withdraw: _token: indexed(address) _from: indexed(address) token_amount: uint256 vault_balance: uint256 event Updated: old_pool: indexed(address) new_pool: indexed(address) _timestamp: uint256 from_amount: uint256 to_amount: uint256 # ERC20 standard interfaces name: public(String[64]) symbol: public(String[32]) balanceOf: public(HashMap[address, uint256]) allowance: public(HashMap[address, HashMap[address, uint256]]) totalSupply: public(uint256) paused: public(bool) main_pool: public(address) # main curve pool address main_pool_coin_count: public(uint8) # (undelying) coin count is_crypto_pool: public(bool) # true if main pool coin index type is uint256 # main deposit address for meta pools # address(0) for base pools # addresss(1) for lending pools (add_liquidity function has one more argument) main_deposit: public(address) main_lp_token: public(address) # Curve LP address of main pool validators: public(HashMap[address, bool]) # validators who can update pool admin: public(address) # admin zap_deposit: public(address) # ZAP deposit pool address that curve provides MAX_COINS: constant(uint8) = 8 # MAX_COINS of curve pools VETH: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE # Virtual address for ETH coin WETH: constant(address) = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 IS_A_POOL_IN_DEPOSIT: constant(address) = 0x0000000000000000000000000000000000000001 # use address(1) as deposit address for aave pools INIT_ZAP_DEPOSIT: constant(address) = 0xA79828DF1850E8a3A3064576f380D90aECDD3359 # init ZAP deposit contract address TRUE_BYTES32: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000000000001 # conversion True into bytes32 MAX_SWAP: constant(uint256) = 4 # MAX count of swap steps interface CrvPool: def remove_liquidity_one_coin(token_amount: uint256, i: int128, min_amount: uint256): nonpayable def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): payable def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256): payable interface CryptoPool: def exchange(i: uint256, j: uint256, dx: uint256, min_dy: uint256): payable def exchange_underlying(i: uint256, j: uint256, dx: uint256, min_dy: uint256): payable def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256): nonpayable interface CrvAPool: def remove_liquidity_one_coin(token_amount: uint256, i: int128, min_amount: uint256, use_underlying: bool): nonpayable interface CryptoAPool: def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256, use_underlying: bool): nonpayable interface CrvZapDeposit: def remove_liquidity_one_coin(_pool: address, token_amount: uint256, i: int128, min_amount: uint256): nonpayable interface CryptoZapDeposit: def remove_liquidity_one_coin(_pool: address, token_amount: uint256, i: uint256, min_amount: uint256): nonpayable interface CrvDeposit: def pool() -> address: view interface LiquidityGauge: def deposit(amount: uint256): nonpayable def withdraw(amount: uint256): nonpayable def balanceOf(addr: address) -> uint256: view interface ERC20: def balanceOf(_to: address) -> uint256: view interface WrappedEth: def deposit(): payable def withdraw(amount: uint256): nonpayable @external def __init__(_name: String[64], _symbol: String[32], _main_pool: address, _main_deposit: address, _main_pool_coin_count: uint8, _main_lp_token: address, _is_crypto_pool: bool): """ @notice Contract constructor @param _name ERC20 standard name @param _symbol ERC20 standard symbol @param _main_pool main curve pool @param _main_deposit main deposit address @param _main_pool_coin_count coin count of main pool @param _main_lp_token curve LP token address of the main pool @param _is_crypto_pool true if main pool coin index type is uint256 """ self.name = _name self.symbol = _symbol self.admin = msg.sender self.validators[msg.sender] = True assert _main_pool != ZERO_ADDRESS, "Wrong Pool" self.main_pool = _main_pool self.main_deposit = _main_deposit assert _main_pool_coin_count >= 2 and _main_pool_coin_count <= MAX_COINS, "Wrong Pool Coin Count" self.main_pool_coin_count = _main_pool_coin_count assert _main_lp_token != ZERO_ADDRESS, "Wrong Pool" self.main_lp_token = _main_lp_token self.zap_deposit = INIT_ZAP_DEPOSIT self.is_crypto_pool = _is_crypto_pool # ERC20 common functions @internal def _mint(_to: address, _value: uint256): assert _to != ZERO_ADDRESS # dev: zero address self.totalSupply += _value self.balanceOf[_to] += _value log Transfer(ZERO_ADDRESS, _to, _value) @internal def _burn(_to: address, _value: uint256): assert _to != ZERO_ADDRESS # dev: zero address self.totalSupply -= _value self.balanceOf[_to] -= _value log Transfer(_to, ZERO_ADDRESS, _value) @internal def safe_approve(_token: address, _to: address, _value: uint256): _response: Bytes[32] = raw_call( _token, concat( method_id("approve(address,uint256)"), convert(_to, bytes32), convert(_value, bytes32) ), max_outsize=32 ) # dev: failed approve if len(_response) > 0: assert convert(_response, bool) # dev: failed approve @internal def safe_transfer(_token: address, _to: address, _value: uint256): _response: Bytes[32] = raw_call( _token, concat( method_id("transfer(address,uint256)"), convert(_to, bytes32), convert(_value, bytes32) ), max_outsize=32 ) # dev: failed transfer if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer @internal def safe_transfer_from(_token: address, _from: address, _to: address, _value: uint256): _response: Bytes[32] = raw_call( _token, concat( method_id("transferFrom(address,address,uint256)"), convert(_from, bytes32), convert(_to, bytes32), convert(_value, bytes32) ), max_outsize=32 ) # dev: failed transfer from if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer from @external @pure def decimals() -> uint8: return 18 @external def transfer(_to : address, _value : uint256) -> bool: assert _to != ZERO_ADDRESS # dev: zero address self.balanceOf[msg.sender] -= _value self.balanceOf[_to] += _value log Transfer(msg.sender, _to, _value) return True @external def transferFrom(_from : address, _to : address, _value : uint256) -> bool: assert _to != ZERO_ADDRESS # dev: zero address self.balanceOf[_from] -= _value self.balanceOf[_to] += _value self.allowance[_from][msg.sender] -= _value log Transfer(_from, _to, _value) return True @external def approve(_spender : address, _value : uint256) -> bool: assert _value == 0 or self.allowance[msg.sender][_spender] == 0 self.allowance[msg.sender][_spender] = _value log Approval(msg.sender, _spender, _value) return True @external def increaseAllowance(_spender: address, _value: uint256) -> bool: allowance: uint256 = self.allowance[msg.sender][_spender] allowance += _value self.allowance[msg.sender][_spender] = allowance log Approval(msg.sender, _spender, allowance) return True @external def decreaseAllowance(_spender: address, _value: uint256) -> bool: allowance: uint256 = self.allowance[msg.sender][_spender] allowance -= _value self.allowance[msg.sender][_spender] = allowance log Approval(msg.sender, _spender, allowance) return True @internal def _deposit(main_pool_: address, _main_deposit: address, _main_pool_coin_count: uint8, i: int128, in_token: address, in_amount: uint256): """ @notice deposit to curve pool using one token only @param _main_pool main curve pool to withdraw tokens @param _main_deposit deposit contract to main pool address(0) if we can deposit does not exist address(1) if the main pool is lending pool and add_liquidity() function requires boolean argument more @param _main_pool_coin_count (underlying) coin count of the main curve pool @param i in token index @param in_amount token in amount """ _main_pool: address = main_pool_ payload: Bytes[320] = empty(Bytes[320]) length: uint256 = len(payload) # payload using only one coin if i == 0: payload = concat(convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 1: payload = concat(EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 2: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 3: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 4: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 5: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32) elif i == 6: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32, EMPTY_BYTES32) else: payload = concat(EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, convert(in_amount, bytes32), EMPTY_BYTES32) m_id: Bytes[4] = empty(Bytes[4]) if _main_deposit == IS_A_POOL_IN_DEPOSIT: # if main_deposit is address(1), mail_pool requires one argument more if _main_pool_coin_count == 2: m_id = method_id("add_liquidity(uint256[2],uint256,bool)") payload = concat(slice(payload, 0, 96), TRUE_BYTES32) elif _main_pool_coin_count == 3: m_id = method_id("add_liquidity(uint256[3],uint256,bool)") payload = concat(slice(payload, 0, 128), TRUE_BYTES32) elif _main_pool_coin_count == 4: m_id = method_id("add_liquidity(uint256[4],uint256,bool)") payload = concat(slice(payload, 0, 160), TRUE_BYTES32) elif _main_pool_coin_count == 5: m_id = method_id("add_liquidity(uint256[5],uint256,bool)") payload = concat(slice(payload, 0, 192), TRUE_BYTES32) elif _main_pool_coin_count == 6: m_id = method_id("add_liquidity(uint256[6],uint256,bool)") payload = concat(slice(payload, 0, 224), TRUE_BYTES32) elif _main_pool_coin_count == 7: m_id = method_id("add_liquidity(uint256[7],uint256,bool)") payload = concat(slice(payload, 0, 256), TRUE_BYTES32) else: m_id = method_id("add_liquidity(uint256[8],uint256,bool)") payload = concat(slice(payload, 0, 288), TRUE_BYTES32) elif _main_deposit == self.zap_deposit: # zap deposit has different arguments if _main_pool_coin_count == 2: m_id = method_id("add_liquidity(address,uint256[2],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 96)) elif _main_pool_coin_count == 3: m_id = method_id("add_liquidity(address,uint256[3],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 128)) elif _main_pool_coin_count == 4: m_id = method_id("add_liquidity(address,uint256[4],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 160)) elif _main_pool_coin_count == 5: m_id = method_id("add_liquidity(address,uint256[5],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 192)) elif _main_pool_coin_count == 6: m_id = method_id("add_liquidity(address,uint256[6],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 224)) elif _main_pool_coin_count == 7: m_id = method_id("add_liquidity(address,uint256[7],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 256)) else: m_id = method_id("add_liquidity(address,uint256[8],uint256)") payload = concat(convert(_main_pool, bytes32), slice(payload, 0, 288)) else: # common pool/deposit add_liquidity function if _main_pool_coin_count == 2: m_id = method_id("add_liquidity(uint256[2],uint256)") payload = slice(payload, 0, 96) elif _main_pool_coin_count == 3: m_id = method_id("add_liquidity(uint256[3],uint256)") payload = slice(payload, 0, 128) elif _main_pool_coin_count == 4: m_id = method_id("add_liquidity(uint256[4],uint256)") payload = slice(payload, 0, 160) elif _main_pool_coin_count == 5: m_id = method_id("add_liquidity(uint256[5],uint256)") payload = slice(payload, 0, 192) elif _main_pool_coin_count == 6: m_id = method_id("add_liquidity(uint256[6],uint256)") payload = slice(payload, 0, 224) elif _main_pool_coin_count == 7: m_id = method_id("add_liquidity(uint256[7],uint256)") payload = slice(payload, 0, 256) else: m_id = method_id("add_liquidity(uint256[8],uint256)") payload = slice(payload, 0, 288) if _main_deposit != ZERO_ADDRESS and _main_deposit != IS_A_POOL_IN_DEPOSIT: _main_pool = _main_deposit if in_token == VETH: raw_call( _main_pool, concat( m_id, payload ), value=in_amount ) else: self.safe_approve(in_token, _main_pool, in_amount) raw_call( _main_pool, concat( m_id, payload ) ) @internal def _swap(pool: address, i: int128, j: int128, from_token: address, to_token: address, is_underlying: bool, from_amount: uint256, is_crypto_pool: bool) -> uint256: """ @notice swap function using curve pool @param pool swap pool to exchange tokens @param i from_token index @param j to_token index @param from_token token address to put into swap pool @param to_token token address to get out from swap pool @param is_underlying true for meta pools @param from_amount from_token amount @param is_crypto_pool true for the pools that use uint256 for indexes """ to_amount: uint256 = 0 if to_token == VETH: # Wrapping ETH if from_token == WETH: WrappedEth(WETH).withdraw(from_amount) return from_amount to_amount = self.balance elif from_token == VETH and to_token == WETH: # unwrapping WETH WrappedEth(WETH).deposit(value=from_amount) return from_amount else: to_amount = ERC20(to_token).balanceOf(self) if is_crypto_pool: # if the pool requires uint256 type indexes if from_token == VETH: CryptoPool(pool).exchange(convert(i, uint256), convert(j, uint256), from_amount, 0, value=from_amount) else: self.safe_approve(from_token, pool, from_amount) if is_underlying: CryptoPool(pool).exchange_underlying(convert(i, uint256), convert(j, uint256), from_amount, 0) else: CryptoPool(pool).exchange(convert(i, uint256), convert(j, uint256), from_amount, 0) else: # if the pool requires int128 type indexes if from_token == VETH: CrvPool(pool).exchange(i, j, from_amount, 0, value=from_amount) else: self.safe_approve(from_token, pool, from_amount) if is_underlying: CrvPool(pool).exchange_underlying(i, j, from_amount, 0) else: CrvPool(pool).exchange(i, j, from_amount, 0) # calculate swapped amount if to_token == VETH: to_amount = self.balance - to_amount else: to_amount = ERC20(to_token).balanceOf(self) - to_amount return to_amount @external @payable @nonreentrant("lock") def deposit(token_address: address, amount: uint256, i: int128, swap_route: DynArray[SwapRoute, MAX_SWAP], min_amount: uint256) -> uint256: """ @notice Deposit token @param token_address deposit token address @param amount deposit token amount @param i deposit token index of the main pool (even after swap) @param swap_route swap route before deposit @param min_amount minimum amount of vault balance after deposit @return added balance of vault """ assert not self.paused, "Paused" self.safe_transfer_from(token_address, msg.sender, self, amount) in_token: address = token_address in_amount: uint256 = amount for route in swap_route: # swap tokens with swap route if route.swap_pool != ZERO_ADDRESS: in_amount = self._swap(route.swap_pool, route.i, route.j, in_token, route.j_token, route.is_underlying, in_amount, route.is_crypto_pool) in_token = route.j_token _main_lp_token: address = self.main_lp_token old_balance: uint256 = ERC20(_main_lp_token).balanceOf(self) self._deposit(self.main_pool, self.main_deposit, self.main_pool_coin_count, i, in_token, in_amount) new_balance: uint256 = ERC20(_main_lp_token).balanceOf(self) assert new_balance > old_balance, "Deposit failed" total_supply: uint256 = self.totalSupply # calculate mint amount as increas LP token amount * totalSupply / old LP balance if total_supply > 0: new_balance = (new_balance - old_balance) * total_supply / old_balance assert new_balance >= min_amount, "High Slippage" self._mint(msg.sender, new_balance) log Deposit(token_address, msg.sender, amount, new_balance) return new_balance @internal def _withdraw(lp_token: address, _main_pool: address, out_token: address, i: int128, out_amount: uint256) -> uint256: """ @notice withdraw from curve pool using one token only @param lp_token main curve LP address @param _main_pool main curve pool to withdraw tokens @param out_token token address to withdraw from the main curve pool @param i out token index @param out_amount curve LP token amount to withdraw from curve pool @return withdrawn token amount """ _main_deposit: address = self.main_deposit old_balance: uint256 = ERC20(out_token).balanceOf(self) if self.is_crypto_pool: # if the pool requires uint256 type indexes if _main_deposit == IS_A_POOL_IN_DEPOSIT: # if main_deposit is address(1), mail_pool requires one argument more self.safe_approve(lp_token, _main_pool, out_amount) CryptoAPool(_main_pool).remove_liquidity_one_coin(out_amount, convert(i, uint256), 1, True) elif _main_deposit == ZERO_ADDRESS: # we can withdraw from the main pool directly self.safe_approve(lp_token, _main_pool, out_amount) CryptoPool(_main_pool).remove_liquidity_one_coin(out_amount, convert(i, uint256), 1) elif _main_deposit == self.zap_deposit: # withdraw using ZAP deposit contract self.safe_approve(lp_token, _main_deposit, out_amount) CryptoZapDeposit(_main_deposit).remove_liquidity_one_coin(_main_pool, out_amount, convert(i, uint256), 1) else: # withdraw using deposit contract self.safe_approve(lp_token, _main_deposit, out_amount) CryptoPool(_main_deposit).remove_liquidity_one_coin(out_amount, convert(i, uint256), 1) else: # if the pool requires int128 type indexes if _main_deposit == IS_A_POOL_IN_DEPOSIT: # if main_deposit is address(1), mail_pool requires one argument more self.safe_approve(lp_token, _main_pool, out_amount) CrvAPool(_main_pool).remove_liquidity_one_coin(out_amount, i, 1, True) elif _main_deposit == ZERO_ADDRESS: # we can withdraw from the main pool directly self.safe_approve(lp_token, _main_pool, out_amount) CrvPool(_main_pool).remove_liquidity_one_coin(out_amount, i, 1) elif _main_deposit == self.zap_deposit: # withdraw using ZAP deposit contract self.safe_approve(lp_token, _main_deposit, out_amount) CrvZapDeposit(_main_deposit).remove_liquidity_one_coin(_main_pool, out_amount, i, 1) else: # withdraw using deposit contract self.safe_approve(lp_token, _main_deposit, out_amount) CrvPool(_main_deposit).remove_liquidity_one_coin(out_amount, i, 1) # returns withdrawn token amount return ERC20(out_token).balanceOf(self) - old_balance @external @nonreentrant("lock") def withdraw(token_address: address, amount: uint256, i: int128, swap_route: DynArray[SwapRoute, MAX_SWAP], min_amount: uint256) -> uint256: """ @notice Withdraw token @param token_address withdraw token address @param amount withdraw vault balance amount(not token amount) @param i withdraw token index of the main pool @param swap_route token swap route after withdraw from curve pool, users will get the final token of the swap route @param min_amount minimum amount of withdrawn token from withdraw @return withdrawn token amount """ out_token: address = token_address lp_token: address = self.main_lp_token out_amount: uint256 = amount * ERC20(lp_token).balanceOf(self) / self.totalSupply _main_pool: address = self.main_pool # withdraw token from the curve pool out_amount = self._withdraw(lp_token, _main_pool, out_token, i, out_amount) self._burn(msg.sender, amount) for route in swap_route: # swap token with swap route if route.swap_pool != ZERO_ADDRESS: out_amount = self._swap(route.swap_pool, route.i, route.j, out_token, route.j_token, route.is_underlying, out_amount, route.is_crypto_pool) out_token = route.j_token assert out_amount >= min_amount, "High Slippage" # transfer token to user if out_token == VETH: send(msg.sender, out_amount) else: self.safe_transfer(out_token, msg.sender, out_amount) log Withdraw(out_token, msg.sender, out_amount, amount) return out_amount @external @nonreentrant('lock') def update_pool(_out_token: address, old_i: int128, swap_route: DynArray[SwapRoute, MAX_SWAP], new_pool: address, new_deposit: address, new_i: int128, new_pool_coin_count: uint8, new_lp_token: address, new_is_crypto_pool: bool, new_lp_min_amount: uint256): """ @notice update pool information @param _out_token withdraw token address from the old pool @param old_i withdraw token index of the old pool @param swap_route token swap route from withdrawing to depositing into the new pool @param new_pool new main curve pool @param new_deposit new main deposit address @param new_i deposit token index of new main pool @param new_pool_coin_count coin count of new main pool @param new_lp_token curve LP token address of the new main pool @param new_is_crypto_pool true if new main pool coin index type is uint256 @param new_lp_min_amount minimum amount of new curve lp token """ assert self.validators[msg.sender], "Not Validator" out_token: address = _out_token lp_token: address = self.main_lp_token out_amount: uint256 = ERC20(lp_token).balanceOf(self) from_amount: uint256 = out_amount _main_pool: address = self.main_pool # withdraw token from the old pool out_amount = self._withdraw(lp_token, _main_pool, out_token, old_i, out_amount) for route in swap_route: # swap token with swap route if route.swap_pool != ZERO_ADDRESS: out_amount = self._swap(route.swap_pool, route.i, route.j, out_token, route.j_token, route.is_underlying, out_amount, route.is_crypto_pool) out_token = route.j_token # deposit token into the new pool self._deposit(new_pool, new_deposit, new_pool_coin_count, new_i, out_token, out_amount) to_amount: uint256 = ERC20(new_lp_token).balanceOf(self) assert to_amount >= new_lp_min_amount, "High Slippage" # update states self.main_pool = new_pool self.main_deposit = new_deposit self.main_pool_coin_count = new_pool_coin_count self.main_lp_token = new_lp_token self.is_crypto_pool = new_is_crypto_pool log Updated(_main_pool, new_pool, block.timestamp, from_amount, to_amount) @external def make_fee(amount: uint256): # make admin fee to the admin address assert msg.sender == self.admin self._mint(msg.sender, amount) @external def transfer_admin(_admin: address): # transfer admin permission old_admin: address = self.admin assert msg.sender == old_admin and _admin != ZERO_ADDRESS and old_admin != _admin self.validators[old_admin] = False self.validators[msg.sender] = True self.admin = _admin @external def set_validator(_validator: address, _value: bool): # register new validator or remove validator assert msg.sender == self.admin self.validators[_validator] = _value @external @payable def __default__(): # to make possible to receive ETH pass # emergency functions @external def set_main_pool(_new_pool: address): assert msg.sender == self.admin self.main_pool = _new_pool @external def set_main_deposit(_new_deposit: address): assert msg.sender == self.admin self.main_deposit = _new_deposit @external def set_main_pool_coin_count(_new_main_pool_coin_count: uint8): assert msg.sender == self.admin self.main_pool_coin_count = _new_main_pool_coin_count @external def set_is_crypto_pool(_new_is_crypto_pool: bool): assert msg.sender == self.admin self.is_crypto_pool = _new_is_crypto_pool @external def set_main_lp_token(_new_main_lp_token: address): assert msg.sender == self.admin self.main_lp_token = _new_main_lp_token @external def set_zap_deposit(_new_zap_deposit: address): assert msg.sender == self.admin self.zap_deposit = _new_zap_deposit @external def pause(_paused: bool): assert msg.sender == self.admin self.paused = _paused
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_spender","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Deposit","inputs":[{"name":"_token","type":"address","indexed":true},{"name":"_from","type":"address","indexed":true},{"name":"token_amount","type":"uint256","indexed":false},{"name":"vault_balance","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"_token","type":"address","indexed":true},{"name":"_from","type":"address","indexed":true},{"name":"token_amount","type":"uint256","indexed":false},{"name":"vault_balance","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Updated","inputs":[{"name":"old_pool","type":"address","indexed":true},{"name":"new_pool","type":"address","indexed":true},{"name":"_timestamp","type":"uint256","indexed":false},{"name":"from_amount","type":"uint256","indexed":false},{"name":"to_amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_main_pool","type":"address"},{"name":"_main_deposit","type":"address"},{"name":"_main_pool_coin_count","type":"uint8"},{"name":"_main_lp_token","type":"address"},{"name":"_is_crypto_pool","type":"bool"}],"outputs":[]},{"stateMutability":"pure","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"payable","type":"function","name":"deposit","inputs":[{"name":"token_address","type":"address"},{"name":"amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"swap_route","type":"(address,address,int128,int128,bool,bool)[]"},{"name":"min_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[{"name":"token_address","type":"address"},{"name":"amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"swap_route","type":"(address,address,int128,int128,bool,bool)[]"},{"name":"min_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"update_pool","inputs":[{"name":"_out_token","type":"address"},{"name":"old_i","type":"int128"},{"name":"swap_route","type":"(address,address,int128,int128,bool,bool)[]"},{"name":"new_pool","type":"address"},{"name":"new_deposit","type":"address"},{"name":"new_i","type":"int128"},{"name":"new_pool_coin_count","type":"uint8"},{"name":"new_lp_token","type":"address"},{"name":"new_is_crypto_pool","type":"bool"},{"name":"new_lp_min_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"make_fee","inputs":[{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"transfer_admin","inputs":[{"name":"_admin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_validator","inputs":[{"name":"_validator","type":"address"},{"name":"_value","type":"bool"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"set_main_pool","inputs":[{"name":"_new_pool","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_main_deposit","inputs":[{"name":"_new_deposit","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_main_pool_coin_count","inputs":[{"name":"_new_main_pool_coin_count","type":"uint8"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_is_crypto_pool","inputs":[{"name":"_new_is_crypto_pool","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_main_lp_token","inputs":[{"name":"_new_main_lp_token","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_zap_deposit","inputs":[{"name":"_new_zap_deposit","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"pause","inputs":[{"name":"_paused","type":"bool"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"main_pool","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"main_pool_coin_count","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"view","type":"function","name":"is_crypto_pool","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"main_deposit","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"main_lp_token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"validators","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"zap_deposit","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
6020613b896000396000516040602082613b890160003960005111613b8457602081613b890160003960005180604052602082018181613b89016060395050506020613ba96000396000516020602082613b890160003960005111613b8457602081613b89016000396000518060a05260208201602081613b890160003960005160c0525050506020613bc96000396000518060a01c613b845760e0526020613be96000396000518060a01c613b8457610100526020613c096000396000518060081c613b8457610120526020613c296000396000518060a01c613b8457610140526020613c496000396000518060011c613b845761016052604051806001556000602082601f010460028111613b8457801561013057905b60208102606001518160020155600101818118610118575b50505060a0518060045560c05160055550336010556001600f33602052600052604060002055600060e05114156101c757600a610180527f57726f6e6720506f6f6c000000000000000000000000000000000000000000006101a0526101805061018051806101a00181600003601f1636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b60e051600a5561010051600d5560026101205112156101e75760006101f0565b60086101205113155b61025a576015610180527f57726f6e6720506f6f6c20436f696e20436f756e7400000000000000000000006101a0526101805061018051806101a00181600003601f1636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b61012051600b5560006101405114156102d357600a610180527f57726f6e6720506f6f6c000000000000000000000000000000000000000000006101a0526101805061018051806101a00181600003601f1636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b61014051600e5573a79828df1850e8a3a3064576f380d90aecdd335960115561016051600c556138716103126300000000396138716000016300000000f3600436101561000d57611575565b60003560e01c63d291525e81186104ac576004358060a01c61386c576107205260443580600f0b811861386c5761074052606435600401600481351161386c57803580610760526000816004811161386c5780156100ef57905b60c081026107800160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a08301525050600101818118610067575b5050505060005461386c5760016000556009541561016d576006610a80527f5061757365640000000000000000000000000000000000000000000000000000610aa052610a8050610a805180610aa00181600003601f1636823750506308c379a0610a40526020610a6052601f19601f610a80510116604401610a5cfd5b61072051604052336060523060805260243560a05261018a611829565b61072051610a8052602435610aa0526000610760516004811161386c57801561025d57905b60c08102610780018051610ac0526020810151610ae0526040810151610b00526060810151610b20526080810151610b405260a0810151610b6052506000610ac0511461025257610ac0516101e052610b005161020052610b205161022052610a805161024052610ae05161026052610b405161028052610aa0516102a052610b60516102c052610241610b80612efd565b610b8051610aa052610ae051610a80525b6001018181186101af575b5050600e54610ac0526370a08231610b005230610b20526020610b006024610b1c610ac0515afa610293573d600060003e3d6000fd5b60203d1061386c57610b0051610ae052600a546101e052600d5461020052600b54610220526107405161024052610a805161026052610aa051610280526102d8611917565b6370a08231610b205230610b40526020610b206024610b3c610ac0515afa610305573d600060003e3d6000fd5b60203d1061386c57610b2051610b0052610ae051610b00511161038857600e610b20527f4465706f736974206661696c6564000000000000000000000000000000000000610b4052610b2050610b205180610b400181600003601f1636823750506308c379a0610ae0526020610b0052601f19601f610b20510116604401610afcfd5b600854610b20526000610b205111156103df57610b0051610ae05180821061386c5780820390509050610b205180820282158284830414171561386c5790509050610ae05180801561386c57820490509050610b00525b608435610b0051101561045257600d610b40527f4869676820536c69707061676500000000000000000000000000000000000000610b6052610b4050610b405180610b600181600003601f1636823750506308c379a0610b00526020610b2052601f19601f610b40510116604401610b1cfd5b33604052610b0051606052610465611577565b33610720517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7602435610b4052610b0051610b60526040610b40a36020610b006000600055f35b63313ce56781186104c7573461386c57601260405260206040f35b63a9059cbb8118610576576004358060a01c61386c576040523461386c5760006040511461386c576006336020526000526040600020805460243580821061386c5780820390509050815550600660405160205260005260406000208054602435818183011061386c5780820190509050815550604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b6323b872dd811861066c576004358060a01c61386c576040526024358060a01c61386c576060523461386c5760006060511461386c5760066040516020526000526040600020805460443580821061386c5780820390509050815550600660605160205260005260406000208054604435818183011061386c578082019050905081555060076040516020526000526040600020803360205260005260406000209050805460443580821061386c57808203905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f35b63095ea7b3811861071e576004358060a01c61386c576040523461386c57602435156106b8576007336020526000526040600020806040516020526000526040600020905054156106bb565b60015b1561386c576024356007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b633950935181186107d6576004358060a01c61386c576040523461386c576007336020526000526040600020806040516020526000526040600020905054606052606051602435818183011061386c57808201905090506060526060516007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63a457c2d7811861088c576004358060a01c61386c576040523461386c57600733602052600052604060002080604051602052600052604060002090505460605260605160243580821061386c57808203905090506060526060516007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63bfd930de8118610c16576004358060a01c61386c576103a05260443580600f0b811861386c576103c052606435600401600481351161386c578035806103e0526000816004811161386c57801561096857905b60c081026104000160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a083015250506001018181186108e0575b505050503461386c5760005461386c5760016000556103a05161070052600e54610720526024356370a082316107605230610780526020610760602461077c610720515afa6109bc573d600060003e3d6000fd5b60203d1061386c576107605180820282158284830414171561386c579050905060085480801561386c5782049050905061074052600a5461076052610720516101e052610760516102005261070051610220526103c051610240526107405161026052610a2a6107806133fd565b610780516107405233604052602435606052610a446115f5565b60006103e0516004811161386c578015610b0857905b60c081026104000180516107805260208101516107a05260408101516107c05260608101516107e05260808101516108005260a0810151610820525060006107805114610afd57610780516101e0526107c051610200526107e0516102205261070051610240526107a051610260526108005161028052610740516102a052610820516102c052610aec610840612efd565b61084051610740526107a051610700525b600101818118610a5a575b5050608435610740511015610b7d57600d610780527f4869676820536c697070616765000000000000000000000000000000000000006107a0526107805061078051806107a00181600003601f1636823750506308c379a061074052602061076052601f19601f61078051011660440161075cfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6107005118610bb557600060006000600061074051336000f11561386c57610bcf565b610700516040523360605261074051608052610bcf61174c565b33610700517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56761074051610780526024356107a0526040610780a360206107406000600055f35b63ebfff1638118611090576004358060a01c61386c576107205260243580600f0b811861386c5761074052604435600401600481351161386c57803580610760526000816004811161386c578015610cf257905b60c081026107800160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a08301525050600101818118610c6a575b505050506064358060a01c61386c57610a80526084358060a01c61386c57610aa05260a43580600f0b811861386c57610ac05260c4358060081c61386c57610ae05260e4358060a01c61386c57610b0052610104358060011c61386c57610b20523461386c5760005461386c576001600055600f33602052600052604060002054610ddd57600d610b40527f4e6f742056616c696461746f7200000000000000000000000000000000000000610b6052610b4050610b405180610b600181600003601f1636823750506308c379a0610b00526020610b2052601f19601f610b40510116604401610b1cfd5b61072051610b4052600e54610b60526370a08231610ba05230610bc0526020610ba06024610bbc610b60515afa610e19573d600060003e3d6000fd5b60203d1061386c57610ba051610b8052610b8051610ba052600a54610bc052610b60516101e052610bc05161020052610b4051610220526107405161024052610b805161026052610e6b610be06133fd565b610be051610b80526000610760516004811161386c578015610f3757905b60c08102610780018051610be0526020810151610c00526040810151610c20526060810151610c40526080810151610c605260a0810151610c8052506000610be05114610f2c57610be0516101e052610c205161020052610c405161022052610b405161024052610c005161026052610c605161028052610b80516102a052610c80516102c052610f1b610ca0612efd565b610ca051610b8052610c0051610b40525b600101818118610e89575b5050610a80516101e052610aa05161020052610ae05161022052610ac05161024052610b405161026052610b805161028052610f71611917565b6370a08231610c005230610c20526020610c006024610c1c610b00515afa610f9e573d600060003e3d6000fd5b60203d1061386c57610c0051610be05261012435610be051101561102257600d610c00527f4869676820536c69707061676500000000000000000000000000000000000000610c2052610c0050610c005180610c200181600003601f1636823750506308c379a0610bc0526020610be052601f19601f610c00510116604401610bdcfd5b610a8051600a55610aa051600d55610ae051600b55610b0051600e55610b2051600c55610a8051610bc0517fc7608c7cbf6d7ffd24200190c130acda0eed7076060d1e6ec0e8a71a16b9d62742610c0052610ba051610c2052610be051610c40526060610c00a36000600055005b636865a73781186110bd573461386c57601054331861386c57336040526004356060526110bb611577565b005b639ffaf1e9811861113d576004358060a01c61386c576040523461386c57601054606052606051331861110957600060405114156110fc57600061110c565b604051606051141561110c565b60005b1561386c576000600f6060516020526000526040600020556001600f33602052600052604060002055604051601055005b63b5de1ed68118611188576004358060a01c61386c576040526024358060011c61386c576060523461386c57601054331861386c57606051600f604051602052600052604060002055005b63949ab87d81186111b7576004358060a01c61386c576040523461386c57601054331861386c57604051600a55005b6373b265e981186111e6576004358060a01c61386c576040523461386c57601054331861386c57604051600d55005b63553a662b8118611215576004358060081c61386c576040523461386c57601054331861386c57604051600b55005b63820019bf8118611244576004358060011c61386c576040523461386c57601054331861386c57604051600c55005b63cf3e7aca8118611273576004358060a01c61386c576040523461386c57601054331861386c57604051600e55005b63eacbecb981186112a2576004358060a01c61386c576040523461386c57601054331861386c57604051601155005b6302329a2981186112d1576004358060011c61386c576040523461386c57601054331861386c57604051600955005b6306fdde038118611353573461386c5760208060405280604001600154808252602082016000602083601f01046002811161386c57801561132557905b80600201546020820284015260010181811861130e575b50505050805180602083010181600003601f163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186113a8573461386c57602080604052806040016004548082526020820160055481525050805180602083010181600003601f163682375050601f19601f825160200101169050810190506040f35b6370a0823181186113e0576004358060a01c61386c576040523461386c57600660405160205260005260406000205460605260206060f35b63dd62ed3e8118611437576004358060a01c61386c576040526024358060a01c61386c576060523461386c576007604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6318160ddd8118611453573461386c5760085460405260206040f35b635c975abb811861146f573461386c5760095460405260206040f35b631423fc81811861148b573461386c57600a5460405260206040f35b63b99476e581186114a7573461386c57600b5460405260206040f35b63ee71afd981186114c3573461386c57600c5460405260206040f35b6394c2dd1c81186114df573461386c57600d5460405260206040f35b638cac896181186114fb573461386c57600e5460405260206040f35b63fa52c7d88118611533576004358060a01c61386c576040523461386c57600f60405160205260005260406000205460605260206060f35b63f851a440811861154f573461386c5760105460405260206040f35b63530b33c5811861156b573461386c5760115460405260206040f35b5061157556611575565b005b60006040511461386c57600854606051818183011061386c5780820190509050600855600660405160205260005260406000208054606051818183011061386c578082019050905081555060405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b60006040511461386c5760085460605180821061386c578082039050905060085560066040516020526000526040600020805460605180821061386c578082039050905081555060006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b6000600460e0527f095ea7b3000000000000000000000000000000000000000000000000000000006101005260e08051602082018361014001815181525050808301925050506060518161014001526020810190506080518161014001526020810190508061012052610120505060206101c06101205161014060006040515af16116ff573d600060003e3d6000fd5b6101a060203d8082116117125781611714565b805b90509050815280518060a05260208201805160c052505050600060a051111561174a5760c05160a0516020036008021c1561386c575b565b6000600460e0527fa9059cbb000000000000000000000000000000000000000000000000000000006101005260e08051602082018361014001815181525050808301925050506060518161014001526020810190506080518161014001526020810190508061012052610120505060206101c06101205161014060006040515af16117dc573d600060003e3d6000fd5b6101a060203d8082116117ef57816117f1565b805b90509050815280518060a05260208201805160c052505050600060a05111156118275760c05160a0516020036008021c1561386c575b565b60006004610100527f23b872dd000000000000000000000000000000000000000000000000000000006101205261010080516020820183610160018151815250508083019250505060605181610160015260208101905060805181610160015260208101905060a0518161016001526020810190508061014052610140505060206102006101405161016060006040515af16118ca573d600060003e3d6000fd5b6101e060203d8082116118dd57816118df565b805b90509050815280518060c05260208201805160e052505050600060c05111156119155760e05160c0516020036008021c1561386c575b565b6101e0516102a05260006102c0526102c051610420526102405115611e2c57600161024051186119ed5760006000816104600152602081019050610280518161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60026102405118611aa45760006000816104600152602081019050600081610460015260208101905061028051816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60036102405118611b5b5760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506102805181610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60046102405118611c125760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050610280518161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60056102405118611cc95760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905061028051816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60066102405118611d805760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506102805181610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050610280518161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60006102805181610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa9050905050505b6000610440526001610200511861245a5760026102205118611fad576004610480527fee22be23000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160601161386c5760606104a060606102e060045afa5060606104805261048080516020820183610520018281848460045afa90505050808301925050506001816105200152602081019050806105005261050090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60036102205118612075576004610480527f2b6e993a000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160801161386c5760806104a060806102e060045afa5060806104805261048080516020820183610540018281848460045afa90505050808301925050506001816105400152602081019050806105205261052090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610220511861213d576004610480527fdc3a2d81000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160a01161386c5760a06104a060a06102e060045afa5060a06104805261048080516020820183610560018281848460045afa90505050808301925050506001816105600152602081019050806105405261054090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60056102205118612205576004610480527fc25fd565000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160c01161386c5760c06104a060c06102e060045afa5060c06104805261048080516020820183610580018281848460045afa90505050808301925050506001816105800152602081019050806105605261056090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600661022051186122cd576004610480527f12b7ef1e000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160e01161386c5760e06104a060e06102e060045afa5060e061048052610480805160208201836105a0018281848460045afa90505050808301925050506001816105a00152602081019050806105805261058090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612399576004610480527fd3c347e8000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c0516101001161386c576101006104a06101006102e060045afa5061010061048052610480805160208201836105c0018281848460045afa90505050808301925050506001816105c00152602081019050806105a0526105a090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527ffca08421000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c0516101201161386c576101206104a06101206102e060045afa5061012061048052610480805160208201836105e0018281848460045afa90505050808301925050506001816105e00152602081019050806105c0526105c090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60115461020051186129e95760026102205118612530576004610480527fd2fb954c000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161052001526020810190506102c05160601161386c5760606104a060606102e060045afa5060606104805261048080516020820183610520018281848460045afa9050505080830192505050806105005261050090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600361022051186125fa576004610480527fa3185179000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161054001526020810190506102c05160801161386c5760806104a060806102e060045afa5060806104805261048080516020820183610540018281848460045afa9050505080830192505050806105205261052090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600461022051186126c4576004610480527f384e03db000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161056001526020810190506102c05160a01161386c5760a06104a060a06102e060045afa5060a06104805261048080516020820183610560018281848460045afa9050505080830192505050806105405261054090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6005610220511861278e576004610480527f1b61222b000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161058001526020810190506102c05160c01161386c5760c06104a060c06102e060045afa5060c06104805261048080516020820183610580018281848460045afa9050505080830192505050806105605261056090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60066102205118612858576004610480527f0dd95c5e000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105a001526020810190506102c05160e01161386c5760e06104a060e06102e060045afa5060e061048052610480805160208201836105a0018281848460045afa9050505080830192505050806105805261058090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612926576004610480527f4a028566000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105c001526020810190506102c0516101001161386c576101006104a06101006102e060045afa5061010061048052610480805160208201836105c0018281848460045afa9050505080830192505050806105a0526105a090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527fe2c87606000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105e001526020810190506102c0516101201161386c576101206104a06101206102e060045afa5061012061048052610480805160208201836105e0018281848460045afa9050505080830192505050806105c0526105c090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60026102205118612a79576004610480527f0b4c7e4d000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160601161386c5760606104a060606102e060045afa506060610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60036102205118612b09576004610480527f4515cef3000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160801161386c5760806104a060806102e060045afa506080610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60046102205118612b99576004610480527f029b2f34000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160a01161386c5760a06104a060a06102e060045afa5060a0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60056102205118612c29576004610480527f84738499000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160c01161386c5760c06104a060c06102e060045afa5060c0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60066102205118612cb9576004610480527f3f8a44f3000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160e01161386c5760e06104a060e06102e060045afa5060e0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612d4d576004610480527fa5918ca1000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c0516101001161386c576101006104a06101006102e060045afa50610100610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527f52d7f317000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c0516101201161386c576101206104a06101206102e060045afa50610120610480526104808051806102c05260208201816102e0838360045afa9050905050505b6000610200511415612de5576000612dee565b60016102005114155b15612dfc57610200516102a0525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102605118612e7f57600061044051816104a001610460518152508082019150506102c051816104a0018181836102e060045afa50508082019150508061048052610480505060006000610480516104a0610280516102a0515af1612efb573d600060003e3d6000fd612efb565b610260516040526102a05160605261028051608052612e9c61166f565b600061044051816104a001610460518152508082019150506102c051816104a0018181836102e060045afa50508082019150508061048052610480505060006000610480516104a060006102a0515af1612efb573d600060003e3d6000fd5b565b60006102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102605118612fb25773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26102405118612fa857632e1a7d4d610300526102a0516103205273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b1561386c5760006000602461031c600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1612f9c573d600060003e3d6000fd5b6102a0518152506133fb565b476102e05261309b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102405118612fef5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26102605114612ff2565b60005b613038576370a082316103005230610320526020610300602461031c610260515afa613023573d600060003e3d6000fd5b60203d1061386c57610300516102e05261309b565b63d0e30db06103005273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b1561386c5760006000600461031c6102a05173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af161308f573d600060003e3d6000fd5b6102a0518152506133fb565b6102c0516131e75773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610240511861311857633df0212461030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c6102a0516101e0515af1613369573d600060003e3d6000fd613369565b610240516040526101e0516060526102a05160805261313561166f565b6102805161319257633df0212461030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b63a6417ed661030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610240511861327257635b41b9086103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c6102a0516101e0515af1613369573d600060003e3d6000fd613369565b610240516040526101e0516060526102a05160805261328f61166f565b6102805161330257635b41b9086103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b6365b2489b6103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61026051186133a357476102e05180821061386c57808203905090506102e0526133f3565b6370a082316103005230610320526020610300602461031c610260515afa6133d0573d600060003e3d6000fd5b60203d1061386c57610300516102e05180821061386c57808203905090506102e0525b6102e0518152505b565b600d54610280526370a082316102c052306102e05260206102c060246102dc610220515afa613431573d600060003e3d6000fd5b60203d1061386c576102c0516102a052600c5461361e57600161028051186134c3576101e051604052610200516060526102605160805261347061166f565b63517a55a36102c052610260516102e0526102405161030052600161032052600161034052610200513b1561386c576000600060846102dc6000610200515af161381c573d600060003e3d6000fd61381c565b61028051156135b457601154610280511861354a576101e05160405261028051606052610260516080526134f561166f565b6329ed28626102c052610200516102e05261026051610300526102405161032052600161034052610280513b1561386c576000600060846102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e051604052610280516060526102605160805261356761166f565b631a4d01d26102c052610260516102e0526102405161030052600161032052610280513b1561386c576000600060646102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e05160405261020051606052610260516080526135d161166f565b631a4d01d26102c052610260516102e0526102405161030052600161032052610200513b1561386c576000600060646102dc6000610200515af161381c573d600060003e3d6000fd61381c565b600161028051186136a4576101e051604052610200516060526102605160805261364661166f565b638f15b6b56102c052610260516102e05261024051806000811261386c57905061030052600161032052600161034052610200513b1561386c576000600060846102dc6000610200515af161381c573d600060003e3d6000fd61381c565b61028051156137ab576011546102805118613736576101e05160405261028051606052610260516080526136d661166f565b63c5bdcd096102c052610200516102e052610260516103005261024051806000811261386c57905061032052600161034052610280513b1561386c576000600060846102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e051604052610280516060526102605160805261375361166f565b63f1dc3cc96102c052610260516102e05261024051806000811261386c57905061030052600161032052610280513b1561386c576000600060646102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e05160405261020051606052610260516080526137c861166f565b63f1dc3cc96102c052610260516102e05261024051806000811261386c57905061030052600161032052610200513b1561386c576000600060646102dc6000610200515af161381c573d600060003e3d6000fd5b6370a082316102c052306102e05260206102c060246102dc610220515afa613849573d600060003e3d6000fd5b60203d1061386c576102c0516102a05180821061386c5780820390509050815250565b600080fd005b600080fd00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b000000000000000000000000a79828df1850e8a3a3064576f380d90aecdd335900000000000000000000000000000000000000000000000000000000000000040000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f437572766520415059205661756c74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034341560000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d57611575565b60003560e01c63d291525e81186104ac576004358060a01c61386c576107205260443580600f0b811861386c5761074052606435600401600481351161386c57803580610760526000816004811161386c5780156100ef57905b60c081026107800160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a08301525050600101818118610067575b5050505060005461386c5760016000556009541561016d576006610a80527f5061757365640000000000000000000000000000000000000000000000000000610aa052610a8050610a805180610aa00181600003601f1636823750506308c379a0610a40526020610a6052601f19601f610a80510116604401610a5cfd5b61072051604052336060523060805260243560a05261018a611829565b61072051610a8052602435610aa0526000610760516004811161386c57801561025d57905b60c08102610780018051610ac0526020810151610ae0526040810151610b00526060810151610b20526080810151610b405260a0810151610b6052506000610ac0511461025257610ac0516101e052610b005161020052610b205161022052610a805161024052610ae05161026052610b405161028052610aa0516102a052610b60516102c052610241610b80612efd565b610b8051610aa052610ae051610a80525b6001018181186101af575b5050600e54610ac0526370a08231610b005230610b20526020610b006024610b1c610ac0515afa610293573d600060003e3d6000fd5b60203d1061386c57610b0051610ae052600a546101e052600d5461020052600b54610220526107405161024052610a805161026052610aa051610280526102d8611917565b6370a08231610b205230610b40526020610b206024610b3c610ac0515afa610305573d600060003e3d6000fd5b60203d1061386c57610b2051610b0052610ae051610b00511161038857600e610b20527f4465706f736974206661696c6564000000000000000000000000000000000000610b4052610b2050610b205180610b400181600003601f1636823750506308c379a0610ae0526020610b0052601f19601f610b20510116604401610afcfd5b600854610b20526000610b205111156103df57610b0051610ae05180821061386c5780820390509050610b205180820282158284830414171561386c5790509050610ae05180801561386c57820490509050610b00525b608435610b0051101561045257600d610b40527f4869676820536c69707061676500000000000000000000000000000000000000610b6052610b4050610b405180610b600181600003601f1636823750506308c379a0610b00526020610b2052601f19601f610b40510116604401610b1cfd5b33604052610b0051606052610465611577565b33610720517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7602435610b4052610b0051610b60526040610b40a36020610b006000600055f35b63313ce56781186104c7573461386c57601260405260206040f35b63a9059cbb8118610576576004358060a01c61386c576040523461386c5760006040511461386c576006336020526000526040600020805460243580821061386c5780820390509050815550600660405160205260005260406000208054602435818183011061386c5780820190509050815550604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b6323b872dd811861066c576004358060a01c61386c576040526024358060a01c61386c576060523461386c5760006060511461386c5760066040516020526000526040600020805460443580821061386c5780820390509050815550600660605160205260005260406000208054604435818183011061386c578082019050905081555060076040516020526000526040600020803360205260005260406000209050805460443580821061386c57808203905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f35b63095ea7b3811861071e576004358060a01c61386c576040523461386c57602435156106b8576007336020526000526040600020806040516020526000526040600020905054156106bb565b60015b1561386c576024356007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b633950935181186107d6576004358060a01c61386c576040523461386c576007336020526000526040600020806040516020526000526040600020905054606052606051602435818183011061386c57808201905090506060526060516007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63a457c2d7811861088c576004358060a01c61386c576040523461386c57600733602052600052604060002080604051602052600052604060002090505460605260605160243580821061386c57808203905090506060526060516007336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63bfd930de8118610c16576004358060a01c61386c576103a05260443580600f0b811861386c576103c052606435600401600481351161386c578035806103e0526000816004811161386c57801561096857905b60c081026104000160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a083015250506001018181186108e0575b505050503461386c5760005461386c5760016000556103a05161070052600e54610720526024356370a082316107605230610780526020610760602461077c610720515afa6109bc573d600060003e3d6000fd5b60203d1061386c576107605180820282158284830414171561386c579050905060085480801561386c5782049050905061074052600a5461076052610720516101e052610760516102005261070051610220526103c051610240526107405161026052610a2a6107806133fd565b610780516107405233604052602435606052610a446115f5565b60006103e0516004811161386c578015610b0857905b60c081026104000180516107805260208101516107a05260408101516107c05260608101516107e05260808101516108005260a0810151610820525060006107805114610afd57610780516101e0526107c051610200526107e0516102205261070051610240526107a051610260526108005161028052610740516102a052610820516102c052610aec610840612efd565b61084051610740526107a051610700525b600101818118610a5a575b5050608435610740511015610b7d57600d610780527f4869676820536c697070616765000000000000000000000000000000000000006107a0526107805061078051806107a00181600003601f1636823750506308c379a061074052602061076052601f19601f61078051011660440161075cfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6107005118610bb557600060006000600061074051336000f11561386c57610bcf565b610700516040523360605261074051608052610bcf61174c565b33610700517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56761074051610780526024356107a0526040610780a360206107406000600055f35b63ebfff1638118611090576004358060a01c61386c576107205260243580600f0b811861386c5761074052604435600401600481351161386c57803580610760526000816004811161386c578015610cf257905b60c081026107800160c08202602086010180358060a01c61386c57825260208101358060a01c61386c576020830152604081013580600f0b811861386c576040830152606081013580600f0b811861386c57606083015260808101358060011c61386c57608083015260a08101358060011c61386c5760a08301525050600101818118610c6a575b505050506064358060a01c61386c57610a80526084358060a01c61386c57610aa05260a43580600f0b811861386c57610ac05260c4358060081c61386c57610ae05260e4358060a01c61386c57610b0052610104358060011c61386c57610b20523461386c5760005461386c576001600055600f33602052600052604060002054610ddd57600d610b40527f4e6f742056616c696461746f7200000000000000000000000000000000000000610b6052610b4050610b405180610b600181600003601f1636823750506308c379a0610b00526020610b2052601f19601f610b40510116604401610b1cfd5b61072051610b4052600e54610b60526370a08231610ba05230610bc0526020610ba06024610bbc610b60515afa610e19573d600060003e3d6000fd5b60203d1061386c57610ba051610b8052610b8051610ba052600a54610bc052610b60516101e052610bc05161020052610b4051610220526107405161024052610b805161026052610e6b610be06133fd565b610be051610b80526000610760516004811161386c578015610f3757905b60c08102610780018051610be0526020810151610c00526040810151610c20526060810151610c40526080810151610c605260a0810151610c8052506000610be05114610f2c57610be0516101e052610c205161020052610c405161022052610b405161024052610c005161026052610c605161028052610b80516102a052610c80516102c052610f1b610ca0612efd565b610ca051610b8052610c0051610b40525b600101818118610e89575b5050610a80516101e052610aa05161020052610ae05161022052610ac05161024052610b405161026052610b805161028052610f71611917565b6370a08231610c005230610c20526020610c006024610c1c610b00515afa610f9e573d600060003e3d6000fd5b60203d1061386c57610c0051610be05261012435610be051101561102257600d610c00527f4869676820536c69707061676500000000000000000000000000000000000000610c2052610c0050610c005180610c200181600003601f1636823750506308c379a0610bc0526020610be052601f19601f610c00510116604401610bdcfd5b610a8051600a55610aa051600d55610ae051600b55610b0051600e55610b2051600c55610a8051610bc0517fc7608c7cbf6d7ffd24200190c130acda0eed7076060d1e6ec0e8a71a16b9d62742610c0052610ba051610c2052610be051610c40526060610c00a36000600055005b636865a73781186110bd573461386c57601054331861386c57336040526004356060526110bb611577565b005b639ffaf1e9811861113d576004358060a01c61386c576040523461386c57601054606052606051331861110957600060405114156110fc57600061110c565b604051606051141561110c565b60005b1561386c576000600f6060516020526000526040600020556001600f33602052600052604060002055604051601055005b63b5de1ed68118611188576004358060a01c61386c576040526024358060011c61386c576060523461386c57601054331861386c57606051600f604051602052600052604060002055005b63949ab87d81186111b7576004358060a01c61386c576040523461386c57601054331861386c57604051600a55005b6373b265e981186111e6576004358060a01c61386c576040523461386c57601054331861386c57604051600d55005b63553a662b8118611215576004358060081c61386c576040523461386c57601054331861386c57604051600b55005b63820019bf8118611244576004358060011c61386c576040523461386c57601054331861386c57604051600c55005b63cf3e7aca8118611273576004358060a01c61386c576040523461386c57601054331861386c57604051600e55005b63eacbecb981186112a2576004358060a01c61386c576040523461386c57601054331861386c57604051601155005b6302329a2981186112d1576004358060011c61386c576040523461386c57601054331861386c57604051600955005b6306fdde038118611353573461386c5760208060405280604001600154808252602082016000602083601f01046002811161386c57801561132557905b80600201546020820284015260010181811861130e575b50505050805180602083010181600003601f163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186113a8573461386c57602080604052806040016004548082526020820160055481525050805180602083010181600003601f163682375050601f19601f825160200101169050810190506040f35b6370a0823181186113e0576004358060a01c61386c576040523461386c57600660405160205260005260406000205460605260206060f35b63dd62ed3e8118611437576004358060a01c61386c576040526024358060a01c61386c576060523461386c576007604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6318160ddd8118611453573461386c5760085460405260206040f35b635c975abb811861146f573461386c5760095460405260206040f35b631423fc81811861148b573461386c57600a5460405260206040f35b63b99476e581186114a7573461386c57600b5460405260206040f35b63ee71afd981186114c3573461386c57600c5460405260206040f35b6394c2dd1c81186114df573461386c57600d5460405260206040f35b638cac896181186114fb573461386c57600e5460405260206040f35b63fa52c7d88118611533576004358060a01c61386c576040523461386c57600f60405160205260005260406000205460605260206060f35b63f851a440811861154f573461386c5760105460405260206040f35b63530b33c5811861156b573461386c5760115460405260206040f35b5061157556611575565b005b60006040511461386c57600854606051818183011061386c5780820190509050600855600660405160205260005260406000208054606051818183011061386c578082019050905081555060405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b60006040511461386c5760085460605180821061386c578082039050905060085560066040516020526000526040600020805460605180821061386c578082039050905081555060006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b6000600460e0527f095ea7b3000000000000000000000000000000000000000000000000000000006101005260e08051602082018361014001815181525050808301925050506060518161014001526020810190506080518161014001526020810190508061012052610120505060206101c06101205161014060006040515af16116ff573d600060003e3d6000fd5b6101a060203d8082116117125781611714565b805b90509050815280518060a05260208201805160c052505050600060a051111561174a5760c05160a0516020036008021c1561386c575b565b6000600460e0527fa9059cbb000000000000000000000000000000000000000000000000000000006101005260e08051602082018361014001815181525050808301925050506060518161014001526020810190506080518161014001526020810190508061012052610120505060206101c06101205161014060006040515af16117dc573d600060003e3d6000fd5b6101a060203d8082116117ef57816117f1565b805b90509050815280518060a05260208201805160c052505050600060a05111156118275760c05160a0516020036008021c1561386c575b565b60006004610100527f23b872dd000000000000000000000000000000000000000000000000000000006101205261010080516020820183610160018151815250508083019250505060605181610160015260208101905060805181610160015260208101905060a0518161016001526020810190508061014052610140505060206102006101405161016060006040515af16118ca573d600060003e3d6000fd5b6101e060203d8082116118dd57816118df565b805b90509050815280518060c05260208201805160e052505050600060c05111156119155760e05160c0516020036008021c1561386c575b565b6101e0516102a05260006102c0526102c051610420526102405115611e2c57600161024051186119ed5760006000816104600152602081019050610280518161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60026102405118611aa45760006000816104600152602081019050600081610460015260208101905061028051816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60036102405118611b5b5760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506102805181610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60046102405118611c125760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050610280518161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60056102405118611cc95760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905061028051816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60066102405118611d805760006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506102805181610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60006000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050610280518161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa905090505050611ed4565b60006102805181610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050600081610460015260208101905060008161046001526020810190506000816104600152602081019050806104405261044090508051806102c05260208201816102e0838360045afa9050905050505b6000610440526001610200511861245a5760026102205118611fad576004610480527fee22be23000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160601161386c5760606104a060606102e060045afa5060606104805261048080516020820183610520018281848460045afa90505050808301925050506001816105200152602081019050806105005261050090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60036102205118612075576004610480527f2b6e993a000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160801161386c5760806104a060806102e060045afa5060806104805261048080516020820183610540018281848460045afa90505050808301925050506001816105400152602081019050806105205261052090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610220511861213d576004610480527fdc3a2d81000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160a01161386c5760a06104a060a06102e060045afa5060a06104805261048080516020820183610560018281848460045afa90505050808301925050506001816105600152602081019050806105405261054090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60056102205118612205576004610480527fc25fd565000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160c01161386c5760c06104a060c06102e060045afa5060c06104805261048080516020820183610580018281848460045afa90505050808301925050506001816105800152602081019050806105605261056090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600661022051186122cd576004610480527f12b7ef1e000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c05160e01161386c5760e06104a060e06102e060045afa5060e061048052610480805160208201836105a0018281848460045afa90505050808301925050506001816105a00152602081019050806105805261058090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612399576004610480527fd3c347e8000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c0516101001161386c576101006104a06101006102e060045afa5061010061048052610480805160208201836105c0018281848460045afa90505050808301925050506001816105c00152602081019050806105a0526105a090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527ffca08421000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102c0516101201161386c576101206104a06101206102e060045afa5061012061048052610480805160208201836105e0018281848460045afa90505050808301925050506001816105e00152602081019050806105c0526105c090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60115461020051186129e95760026102205118612530576004610480527fd2fb954c000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161052001526020810190506102c05160601161386c5760606104a060606102e060045afa5060606104805261048080516020820183610520018281848460045afa9050505080830192505050806105005261050090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600361022051186125fa576004610480527fa3185179000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161054001526020810190506102c05160801161386c5760806104a060806102e060045afa5060806104805261048080516020820183610540018281848460045afa9050505080830192505050806105205261052090508051806102c05260208201816102e0838360045afa905090505050612dd2565b600461022051186126c4576004610480527f384e03db000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161056001526020810190506102c05160a01161386c5760a06104a060a06102e060045afa5060a06104805261048080516020820183610560018281848460045afa9050505080830192505050806105405261054090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6005610220511861278e576004610480527f1b61222b000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a0518161058001526020810190506102c05160c01161386c5760c06104a060c06102e060045afa5060c06104805261048080516020820183610580018281848460045afa9050505080830192505050806105605261056090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60066102205118612858576004610480527f0dd95c5e000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105a001526020810190506102c05160e01161386c5760e06104a060e06102e060045afa5060e061048052610480805160208201836105a0018281848460045afa9050505080830192505050806105805261058090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612926576004610480527f4a028566000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105c001526020810190506102c0516101001161386c576101006104a06101006102e060045afa5061010061048052610480805160208201836105c0018281848460045afa9050505080830192505050806105a0526105a090508051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527fe2c87606000000000000000000000000000000000000000000000000000000006104a052610480805180610440526020820180516104605250505060006102a051816105e001526020810190506102c0516101201161386c576101206104a06101206102e060045afa5061012061048052610480805160208201836105e0018281848460045afa9050505080830192505050806105c0526105c090508051806102c05260208201816102e0838360045afa905090505050612dd2565b60026102205118612a79576004610480527f0b4c7e4d000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160601161386c5760606104a060606102e060045afa506060610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60036102205118612b09576004610480527f4515cef3000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160801161386c5760806104a060806102e060045afa506080610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60046102205118612b99576004610480527f029b2f34000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160a01161386c5760a06104a060a06102e060045afa5060a0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60056102205118612c29576004610480527f84738499000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160c01161386c5760c06104a060c06102e060045afa5060c0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60066102205118612cb9576004610480527f3f8a44f3000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c05160e01161386c5760e06104a060e06102e060045afa5060e0610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b60076102205118612d4d576004610480527fa5918ca1000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c0516101001161386c576101006104a06101006102e060045afa50610100610480526104808051806102c05260208201816102e0838360045afa905090505050612dd2565b6004610480527f52d7f317000000000000000000000000000000000000000000000000000000006104a05261048080518061044052602082018051610460525050506102c0516101201161386c576101206104a06101206102e060045afa50610120610480526104808051806102c05260208201816102e0838360045afa9050905050505b6000610200511415612de5576000612dee565b60016102005114155b15612dfc57610200516102a0525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102605118612e7f57600061044051816104a001610460518152508082019150506102c051816104a0018181836102e060045afa50508082019150508061048052610480505060006000610480516104a0610280516102a0515af1612efb573d600060003e3d6000fd612efb565b610260516040526102a05160605261028051608052612e9c61166f565b600061044051816104a001610460518152508082019150506102c051816104a0018181836102e060045afa50508082019150508061048052610480505060006000610480516104a060006102a0515af1612efb573d600060003e3d6000fd5b565b60006102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102605118612fb25773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26102405118612fa857632e1a7d4d610300526102a0516103205273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b1561386c5760006000602461031c600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1612f9c573d600060003e3d6000fd5b6102a0518152506133fb565b476102e05261309b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102405118612fef5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26102605114612ff2565b60005b613038576370a082316103005230610320526020610300602461031c610260515afa613023573d600060003e3d6000fd5b60203d1061386c57610300516102e05261309b565b63d0e30db06103005273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b1561386c5760006000600461031c6102a05173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af161308f573d600060003e3d6000fd5b6102a0518152506133fb565b6102c0516131e75773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610240511861311857633df0212461030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c6102a0516101e0515af1613369573d600060003e3d6000fd613369565b610240516040526101e0516060526102a05160805261313561166f565b6102805161319257633df0212461030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b63a6417ed661030052610200516103205261022051610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610240511861327257635b41b9086103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c6102a0516101e0515af1613369573d600060003e3d6000fd613369565b610240516040526101e0516060526102a05160805261328f61166f565b6102805161330257635b41b9086103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd613369565b6365b2489b6103005261020051806000811261386c5790506103205261022051806000811261386c579050610340526102a051610360526000610380526101e0513b1561386c5760006000608461031c60006101e0515af1613369573d600060003e3d6000fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61026051186133a357476102e05180821061386c57808203905090506102e0526133f3565b6370a082316103005230610320526020610300602461031c610260515afa6133d0573d600060003e3d6000fd5b60203d1061386c57610300516102e05180821061386c57808203905090506102e0525b6102e0518152505b565b600d54610280526370a082316102c052306102e05260206102c060246102dc610220515afa613431573d600060003e3d6000fd5b60203d1061386c576102c0516102a052600c5461361e57600161028051186134c3576101e051604052610200516060526102605160805261347061166f565b63517a55a36102c052610260516102e0526102405161030052600161032052600161034052610200513b1561386c576000600060846102dc6000610200515af161381c573d600060003e3d6000fd61381c565b61028051156135b457601154610280511861354a576101e05160405261028051606052610260516080526134f561166f565b6329ed28626102c052610200516102e05261026051610300526102405161032052600161034052610280513b1561386c576000600060846102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e051604052610280516060526102605160805261356761166f565b631a4d01d26102c052610260516102e0526102405161030052600161032052610280513b1561386c576000600060646102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e05160405261020051606052610260516080526135d161166f565b631a4d01d26102c052610260516102e0526102405161030052600161032052610200513b1561386c576000600060646102dc6000610200515af161381c573d600060003e3d6000fd61381c565b600161028051186136a4576101e051604052610200516060526102605160805261364661166f565b638f15b6b56102c052610260516102e05261024051806000811261386c57905061030052600161032052600161034052610200513b1561386c576000600060846102dc6000610200515af161381c573d600060003e3d6000fd61381c565b61028051156137ab576011546102805118613736576101e05160405261028051606052610260516080526136d661166f565b63c5bdcd096102c052610200516102e052610260516103005261024051806000811261386c57905061032052600161034052610280513b1561386c576000600060846102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e051604052610280516060526102605160805261375361166f565b63f1dc3cc96102c052610260516102e05261024051806000811261386c57905061030052600161032052610280513b1561386c576000600060646102dc6000610280515af161381c573d600060003e3d6000fd61381c565b6101e05160405261020051606052610260516080526137c861166f565b63f1dc3cc96102c052610260516102e05261024051806000811261386c57905061030052600161032052610200513b1561386c576000600060646102dc6000610200515af161381c573d600060003e3d6000fd5b6370a082316102c052306102e05260206102c060246102dc610220515afa613849573d600060003e3d6000fd5b60203d1061386c576102c0516102a05180821061386c5780820390509050815250565b600080fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b000000000000000000000000a79828df1850e8a3a3064576f380d90aecdd335900000000000000000000000000000000000000000000000000000000000000040000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f437572766520415059205661756c74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034341560000000000000000000000000000000000000000000000000000000000
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b
Arg [3] : 000000000000000000000000a79828df1850e8a3a3064576f380d90aecdd3359
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 0000000000000000000000005a6a4d54456819380173272a5e8e9b9904bdf41b
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [8] : 437572766520415059205661756c740000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 4341560000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.