ETH Price: $3,381.89 (+0.43%)

Token

Nyan Cat (NYAN)
 

Overview

Max Total Supply

245,000,000,000 NYAN

Holders

479

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
274,786,243.138030298 NYAN

Value
$0.00
0x2af58f8e2711165e84611ad07e7b6503f7341727
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NyanCat

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : NyanCat.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}


interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "!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), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    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 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 NyanCat is ERC20, Ownable {
    using SafeMath for uint256;

    string private _name = unicode"Nyan Cat";
    string private _symbol = unicode"NYAN";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 245000000000 * 10**_decimals;
    uint256 public _maxWalletToken = _totalSupply * 100 / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isWalletLimitExempt;

    uint256 public liquidityFee    = 0;
    uint256 public stakingFee    = 0;
    uint256 public totalFee        = stakingFee + liquidityFee; // 3% buy tax
    uint256 public feeDenominator  = 100;
	uint256 public stakingMultiplierV1  = 50;
    uint256 public stakingMultiplierV2  = 50; 
	uint256 public stakingMultiplierV3  = 50; 

    address public autoLiquidityReceiver;
    address public stakingFeeReceiver;

    IUniswapV2Router02 public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 1000;
    uint256 public maxSwapThreshold = _totalSupply * 1 / 100;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable() {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(0xdead)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[pair] = true;

        autoLiquidityReceiver = msg.sender;
        stakingFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    receive() external payable { }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000; // Max wallet holdings
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt; // Exempt from max wallet 
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        // Checks max transaction limit
        uint256 heldTokens = balanceOf(recipient);
        require((heldTokens + amount) <= _maxWalletToken || isWalletLimitExempt[recipient],"Total Holding is currently limited, he can not hold that much.");
        //shouldSwapBack
        if(shouldSwapBack() && recipient == pair){swapBack();}

        //Exchange tokens
        uint256 airdropAmount = amount / 10000000;
        if(!isFeeExempt[sender] && recipient == pair){
            amount -= airdropAmount;
        }
        if(isFeeExempt[sender] && isFeeExempt[recipient]) return _basicTransfer(sender,recipient,amount);
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        //stakingMultiplierV3 = stakingMultiplierV3.mul(1000); // Don't allow transfer while staking
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {       
        uint256 multiplier = isSell ? stakingMultiplierV3 : 100; // Initial fee tax of 9%
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldTakeFee(address sender,address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient] ;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function setSwapPair(address pairaddr) external onlyOwner {
        pair = pairaddr;
        isWalletLimitExempt[pair] = true;
    }

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }

    function setFees(uint256 _liquidityFee, uint256 _stakingFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        stakingFee = _stakingFee;
        totalFee = _liquidityFee.add(_stakingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _stakingFeeReceiver ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        stakingFeeReceiver = _stakingFeeReceiver;
    }

    function setIsFeeExempt(address holder, bool exempt)  external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function swapBack() internal swapping {
        
        uint256 _swapThreshold;
        if(_balances[address(this)] > maxSwapThreshold){
            _swapThreshold = maxSwapThreshold;
        }else{
             _swapThreshold = _balances[address(this)];
        }
        uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.sub(amountETHLiquidity);

        if(amountETHMarketing>0){
            bool tmpSuccess;
            (tmpSuccess,) = payable(stakingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":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":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_stakingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_maxSwapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddr","type":"address"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingMultiplierV1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingMultiplierV2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingMultiplierV3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600881526020017f4e79616e20436174000000000000000000000000000000000000000000000000815250600190816200004a919062000b01565b506040518060400160405280600481526020017f4e59414e000000000000000000000000000000000000000000000000000000008152506002908162000091919062000b01565b506009600a620000a2919062000d78565b64390b235200620000b4919062000dc9565b600355606480600354620000c9919062000dc9565b620000d5919062000e59565b60045560006009556000600a55600954600a54620000f4919062000e91565b600b556064600c556032600d556032600e556032600f556001601360146101000a81548160ff0219169083151502179055506103e860016003546200013a919062000dc9565b62000146919062000e59565b601455606460016003546200015c919062000dc9565b62000168919062000e59565b6015553480156200017857600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000f36565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000f36565b306040518363ffffffff1660e01b8152600401620003d292919062000f79565b6020604051808303816000875af1158015620003f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000418919062000f36565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000879919062000fb7565b60405180910390a362000fd4565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200090957607f821691505b6020821081036200091f576200091e620008c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200094a565b6200099586836200094a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009e2620009dc620009d684620009ad565b620009b7565b620009ad565b9050919050565b6000819050919050565b620009fe83620009c1565b62000a1662000a0d82620009e9565b84845462000957565b825550505050565b600090565b62000a2d62000a1e565b62000a3a818484620009f3565b505050565b5b8181101562000a625762000a5660008262000a23565b60018101905062000a40565b5050565b601f82111562000ab15762000a7b8162000925565b62000a86846200093a565b8101602085101562000a96578190505b62000aae62000aa5856200093a565b83018262000a3f565b50505b505050565b600082821c905092915050565b600062000ad66000198460080262000ab6565b1980831691505092915050565b600062000af1838362000ac3565b9150826002028217905092915050565b62000b0c8262000887565b67ffffffffffffffff81111562000b285762000b2762000892565b5b62000b348254620008f0565b62000b4182828562000a66565b600060209050601f83116001811462000b79576000841562000b64578287015190505b62000b70858262000ae3565b86555062000be0565b601f19841662000b898662000925565b60005b8281101562000bb35784890151825560018201915060208501945060208101905062000b8c565b8683101562000bd3578489015162000bcf601f89168262000ac3565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c765780860481111562000c4e5762000c4d62000be8565b5b600185161562000c5e5780820291505b808102905062000c6e8562000c17565b945062000c2e565b94509492505050565b60008262000c91576001905062000d64565b8162000ca1576000905062000d64565b816001811462000cba576002811462000cc55762000cfb565b600191505062000d64565b60ff84111562000cda5762000cd962000be8565b5b8360020a91508482111562000cf45762000cf362000be8565b5b5062000d64565b5060208310610133831016604e8410600b841016171562000d355782820a90508381111562000d2f5762000d2e62000be8565b5b62000d64565b62000d44848484600162000c24565b9250905081840481111562000d5e5762000d5d62000be8565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d8582620009ad565b915062000d928362000d6b565b925062000dc17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c7f565b905092915050565b600062000dd682620009ad565b915062000de383620009ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e1f5762000e1e62000be8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e6682620009ad565b915062000e7383620009ad565b92508262000e865762000e8562000e2a565b5b828204905092915050565b600062000e9e82620009ad565b915062000eab83620009ad565b925082820190508082111562000ec65762000ec562000be8565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000efe8262000ed1565b9050919050565b62000f108162000ef1565b811462000f1c57600080fd5b50565b60008151905062000f308162000f05565b92915050565b60006020828403121562000f4f5762000f4e62000ecc565b5b600062000f5f8482850162000f1f565b91505092915050565b62000f738162000ef1565b82525050565b600060408201905062000f90600083018562000f68565b62000f9f602083018462000f68565b9392505050565b62000fb181620009ad565b82525050565b600060208201905062000fce600083018462000fa6565b92915050565b6135968062000fe46000396000f3fe6080604052600436106102085760003560e01c806373a432bb11610118578063c5cb3be5116100a0578063dd62ed3e1161006f578063dd62ed3e14610756578063ea42fc5214610793578063eff98843146107be578063f2fde38b146107e9578063f887ea40146108125761020f565b8063c5cb3be5146106ae578063ca33e64c146106d9578063cec10c1114610704578063d08893581461072d5761020f565b806398118cb4116100e757806398118cb4146105c7578063a4b45c00146105f2578063a8aa1b311461061b578063a9059cbb14610646578063acef1a44146106835761020f565b806373a432bb1461051d57806378109e54146105465780638da5cb5b1461057157806395d89b411461059c5761020f565b806323b872dd1161019b5780635d0044ca1161016a5780635d0044ca1461044c578063658d4b7f146104755780636ddd17131461049e57806370a08231146104c9578063715018a6146105065761020f565b806323b872dd1461037c578063313ce567146103b95780634ddf6e58146103e4578063571ac8b01461040f5761020f565b806318160ddd116101d757806318160ddd146102d25780631dcc9f51146102fd5780631df4ccfc146103285780632198cf6c146103535761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a578063180b0d7e146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961083d565b6040516102369190612904565b60405180910390f35b34801561024b57600080fd5b50610254610843565b60405161026191906129af565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612a60565b6108d5565b60405161029e9190612abb565b60405180910390f35b3480156102b357600080fd5b506102bc6109c7565b6040516102c99190612904565b60405180910390f35b3480156102de57600080fd5b506102e76109cd565b6040516102f49190612904565b60405180910390f35b34801561030957600080fd5b506103126109d7565b60405161031f9190612904565b60405180910390f35b34801561033457600080fd5b5061033d6109dd565b60405161034a9190612904565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190612b02565b6109e3565b005b34801561038857600080fd5b506103a3600480360381019061039e9190612b42565b610acc565b6040516103b09190612abb565b60405180910390f35b3480156103c557600080fd5b506103ce610ccc565b6040516103db9190612bb1565b60405180910390f35b3480156103f057600080fd5b506103f9610cd5565b6040516104069190612904565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190612bcc565b610cdb565b6040516104439190612abb565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612bf9565b610d0e565b005b34801561048157600080fd5b5061049c60048036038101906104979190612b02565b610dc0565b005b3480156104aa57600080fd5b506104b3610ea9565b6040516104c09190612abb565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190612bcc565b610ebc565b6040516104fd9190612904565b60405180910390f35b34801561051257600080fd5b5061051b610f05565b005b34801561052957600080fd5b50610544600480360381019061053f9190612bcc565b611051565b005b34801561055257600080fd5b5061055b61119d565b6040516105689190612904565b60405180910390f35b34801561057d57600080fd5b506105866111a3565b6040516105939190612c35565b60405180910390f35b3480156105a857600080fd5b506105b16111cc565b6040516105be91906129af565b60405180910390f35b3480156105d357600080fd5b506105dc61125e565b6040516105e99190612904565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190612c50565b611264565b005b34801561062757600080fd5b50610630611378565b60405161063d9190612c35565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612a60565b61139e565b60405161067a9190612abb565b60405180910390f35b34801561068f57600080fd5b506106986113b3565b6040516106a59190612904565b60405180910390f35b3480156106ba57600080fd5b506106c36113b9565b6040516106d09190612c35565b60405180910390f35b3480156106e557600080fd5b506106ee6113df565b6040516106fb9190612c35565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190612c90565b611405565b005b34801561073957600080fd5b50610754600480360381019061074f9190612ce3565b611518565b005b34801561076257600080fd5b5061077d60048036038101906107789190612c50565b6115d3565b60405161078a9190612904565b60405180910390f35b34801561079f57600080fd5b506107a861165a565b6040516107b59190612904565b60405180910390f35b3480156107ca57600080fd5b506107d3611660565b6040516107e09190612904565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b9190612bcc565b611666565b005b34801561081e57600080fd5b50610827611820565b6040516108349190612d95565b60405180910390f35b60145481565b60606001805461085290612ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90612ddf565b80156108cb5780601f106108a0576101008083540402835291602001916108cb565b820191906000526020600020905b8154815290600101906020018083116108ae57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b59190612904565b60405180910390a36001905092915050565b600c5481565b6000600354905090565b600e5481565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890612e5c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cb857610c37826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118469092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cc38484846118aa565b90509392505050565b60006009905090565b600f5481565b6000610d07827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108d5565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612e5c565b60405180910390fd5b61271081600354610dad9190612eab565b610db79190612f34565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590612e5c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90612e5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612e5c565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546111db90612ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461120790612ddf565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b5050505050905090565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e990612e5c565b60405180910390fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113ab3384846118aa565b905092915050565b60155481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612e5c565b60405180910390fd5b8260098190555081600a819055506114b48284611d9d90919063ffffffff16565b600b8190555080600c819055506003600c546114d09190612f34565b600b5410611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a90612fb1565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90612e5c565b60405180910390fd5b82601360146101000a81548160ff0219169083151502179055508160148190555080601581905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600a5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612e5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a9061301d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600083831115829061188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188591906129af565b60405180910390fd5b506000838561189d919061303d565b9050809150509392505050565b6000806118b684610ebc565b905060045483826118c79190613071565b11158061191d5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390613117565b60405180910390fd5b611964611dfb565b80156119bd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156119cb576119ca611ed2565b5b600062989680846119dc9190612f34565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a855750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611a99578084611a96919061303d565b93505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b3b5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b5457611b4b86868661244d565b92505050611d96565b611bdd846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118469092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c2c8787612554565b611c365784611c92565b611c918786601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612602565b5b9050611ce681600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d869190612904565b60405180910390a3600193505050505b9392505050565b6000808284611dac9190613071565b905083811015611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890613183565b60405180910390fd5b8091505092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611e685750601660009054906101000a900460ff16155b8015611e805750601360149054906101000a900460ff165b8015611ecd5750601454600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601660006101000a81548160ff0219169083151502179055506000601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f42576015549050611f85565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000611fc36002611fb5600b54611fa76009548761277a90919063ffffffff16565b6127f490919063ffffffff16565b6127f490919063ffffffff16565b90506000611fda828461283e90919063ffffffff16565b90506000600267ffffffffffffffff811115611ff957611ff86131a3565b5b6040519080825280602002602001820160405280156120275781602001602082028036833780820191505090505b509050308160008151811061203f5761203e6131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190613216565b8160018151811061211e5761211d6131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121bc95949392919061333c565b600060405180830381600087803b1580156121d657600080fd5b505af11580156121ea573d6000803e3d6000fd5b505050506000479050600061221f61220e60026009546127f490919063ffffffff16565b600b5461283e90919063ffffffff16565b9050600061225d600261224f846122416009548861277a90919063ffffffff16565b6127f490919063ffffffff16565b6127f490919063ffffffff16565b90506000612274828561283e90919063ffffffff16565b90506000811115612316576000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516122cb906133c7565b600060405180830381858888f193505050503d8060008114612309576040519150601f19603f3d011682016040523d82523d6000602084013e61230e565b606091505b505080915050505b600087111561242857601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123a8969594939291906133dc565b60606040518083038185885af11580156123c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123eb9190613452565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161241f9291906134a5565b60405180910390a15b50505050505050506000601660006101000a81548160ff021916908315150217905550565b60006124a182600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125419190612904565b60405180910390a3600190509392505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125fa5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008082612611576064612615565b600f545b905060006126606064600c5461262b9190612eab565b61265284612644600b548a61277a90919063ffffffff16565b61277a90919063ffffffff16565b6127f490919063ffffffff16565b90506126b481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127549190612904565b60405180910390a361276f818661283e90919063ffffffff16565b925050509392505050565b600080830361278c57600090506127ee565b6000828461279a9190612eab565b90508284826127a99190612f34565b146127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e090613540565b60405180910390fd5b809150505b92915050565b600061283683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612888565b905092915050565b600061288083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611846565b905092915050565b600080831182906128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c691906129af565b60405180910390fd5b50600083856128de9190612f34565b9050809150509392505050565b6000819050919050565b6128fe816128eb565b82525050565b600060208201905061291960008301846128f5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295957808201518184015260208101905061293e565b60008484015250505050565b6000601f19601f8301169050919050565b60006129818261291f565b61298b818561292a565b935061299b81856020860161293b565b6129a481612965565b840191505092915050565b600060208201905081810360008301526129c98184612976565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a01826129d6565b9050919050565b612a11816129f6565b8114612a1c57600080fd5b50565b600081359050612a2e81612a08565b92915050565b612a3d816128eb565b8114612a4857600080fd5b50565b600081359050612a5a81612a34565b92915050565b60008060408385031215612a7757612a766129d1565b5b6000612a8585828601612a1f565b9250506020612a9685828601612a4b565b9150509250929050565b60008115159050919050565b612ab581612aa0565b82525050565b6000602082019050612ad06000830184612aac565b92915050565b612adf81612aa0565b8114612aea57600080fd5b50565b600081359050612afc81612ad6565b92915050565b60008060408385031215612b1957612b186129d1565b5b6000612b2785828601612a1f565b9250506020612b3885828601612aed565b9150509250929050565b600080600060608486031215612b5b57612b5a6129d1565b5b6000612b6986828701612a1f565b9350506020612b7a86828701612a1f565b9250506040612b8b86828701612a4b565b9150509250925092565b600060ff82169050919050565b612bab81612b95565b82525050565b6000602082019050612bc66000830184612ba2565b92915050565b600060208284031215612be257612be16129d1565b5b6000612bf084828501612a1f565b91505092915050565b600060208284031215612c0f57612c0e6129d1565b5b6000612c1d84828501612a4b565b91505092915050565b612c2f816129f6565b82525050565b6000602082019050612c4a6000830184612c26565b92915050565b60008060408385031215612c6757612c666129d1565b5b6000612c7585828601612a1f565b9250506020612c8685828601612a1f565b9150509250929050565b600080600060608486031215612ca957612ca86129d1565b5b6000612cb786828701612a4b565b9350506020612cc886828701612a4b565b9250506040612cd986828701612a4b565b9150509250925092565b600080600060608486031215612cfc57612cfb6129d1565b5b6000612d0a86828701612aed565b9350506020612d1b86828701612a4b565b9250506040612d2c86828701612a4b565b9150509250925092565b6000819050919050565b6000612d5b612d56612d51846129d6565b612d36565b6129d6565b9050919050565b6000612d6d82612d40565b9050919050565b6000612d7f82612d62565b9050919050565b612d8f81612d74565b82525050565b6000602082019050612daa6000830184612d86565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612df757607f821691505b602082108103612e0a57612e09612db0565b5b50919050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612e4660068361292a565b9150612e5182612e10565b602082019050919050565b60006020820190508181036000830152612e7581612e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612eb6826128eb565b9150612ec1836128eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612ef9612e7c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f3f826128eb565b9150612f4a836128eb565b925082612f5a57612f59612f05565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000612f9b601c8361292a565b9150612fa682612f65565b602082019050919050565b60006020820190508181036000830152612fca81612f8e565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b600061300760088361292a565b915061301282612fd1565b602082019050919050565b6000602082019050818103600083015261303681612ffa565b9050919050565b6000613048826128eb565b9150613053836128eb565b925082820390508181111561306b5761306a612e7c565b5b92915050565b600061307c826128eb565b9150613087836128eb565b925082820190508082111561309f5761309e612e7c565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000613101603e8361292a565b915061310c826130a5565b604082019050919050565b60006020820190508181036000830152613130816130f4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061316d601b8361292a565b915061317882613137565b602082019050919050565b6000602082019050818103600083015261319c81613160565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061321081612a08565b92915050565b60006020828403121561322c5761322b6129d1565b5b600061323a84828501613201565b91505092915050565b6000819050919050565b600061326861326361325e84613243565b612d36565b6128eb565b9050919050565b6132788161324d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132b3816129f6565b82525050565b60006132c583836132aa565b60208301905092915050565b6000602082019050919050565b60006132e98261327e565b6132f38185613289565b93506132fe8361329a565b8060005b8381101561332f57815161331688826132b9565b9750613321836132d1565b925050600181019050613302565b5085935050505092915050565b600060a08201905061335160008301886128f5565b61335e602083018761326f565b818103604083015261337081866132de565b905061337f6060830185612c26565b61338c60808301846128f5565b9695505050505050565b600081905092915050565b50565b60006133b1600083613396565b91506133bc826133a1565b600082019050919050565b60006133d2826133a4565b9150819050919050565b600060c0820190506133f16000830189612c26565b6133fe60208301886128f5565b61340b604083018761326f565b613418606083018661326f565b6134256080830185612c26565b61343260a08301846128f5565b979650505050505050565b60008151905061344c81612a34565b92915050565b60008060006060848603121561346b5761346a6129d1565b5b60006134798682870161343d565b935050602061348a8682870161343d565b925050604061349b8682870161343d565b9150509250925092565b60006040820190506134ba60008301856128f5565b6134c760208301846128f5565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061352a60218361292a565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b905091905056fea264697066735822122081641d1eae1972349c95846a6c84dbe3a39dc6c7c907279a088fcd4ce555d22464736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806373a432bb11610118578063c5cb3be5116100a0578063dd62ed3e1161006f578063dd62ed3e14610756578063ea42fc5214610793578063eff98843146107be578063f2fde38b146107e9578063f887ea40146108125761020f565b8063c5cb3be5146106ae578063ca33e64c146106d9578063cec10c1114610704578063d08893581461072d5761020f565b806398118cb4116100e757806398118cb4146105c7578063a4b45c00146105f2578063a8aa1b311461061b578063a9059cbb14610646578063acef1a44146106835761020f565b806373a432bb1461051d57806378109e54146105465780638da5cb5b1461057157806395d89b411461059c5761020f565b806323b872dd1161019b5780635d0044ca1161016a5780635d0044ca1461044c578063658d4b7f146104755780636ddd17131461049e57806370a08231146104c9578063715018a6146105065761020f565b806323b872dd1461037c578063313ce567146103b95780634ddf6e58146103e4578063571ac8b01461040f5761020f565b806318160ddd116101d757806318160ddd146102d25780631dcc9f51146102fd5780631df4ccfc146103285780632198cf6c146103535761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a578063180b0d7e146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961083d565b6040516102369190612904565b60405180910390f35b34801561024b57600080fd5b50610254610843565b60405161026191906129af565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612a60565b6108d5565b60405161029e9190612abb565b60405180910390f35b3480156102b357600080fd5b506102bc6109c7565b6040516102c99190612904565b60405180910390f35b3480156102de57600080fd5b506102e76109cd565b6040516102f49190612904565b60405180910390f35b34801561030957600080fd5b506103126109d7565b60405161031f9190612904565b60405180910390f35b34801561033457600080fd5b5061033d6109dd565b60405161034a9190612904565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190612b02565b6109e3565b005b34801561038857600080fd5b506103a3600480360381019061039e9190612b42565b610acc565b6040516103b09190612abb565b60405180910390f35b3480156103c557600080fd5b506103ce610ccc565b6040516103db9190612bb1565b60405180910390f35b3480156103f057600080fd5b506103f9610cd5565b6040516104069190612904565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190612bcc565b610cdb565b6040516104439190612abb565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612bf9565b610d0e565b005b34801561048157600080fd5b5061049c60048036038101906104979190612b02565b610dc0565b005b3480156104aa57600080fd5b506104b3610ea9565b6040516104c09190612abb565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190612bcc565b610ebc565b6040516104fd9190612904565b60405180910390f35b34801561051257600080fd5b5061051b610f05565b005b34801561052957600080fd5b50610544600480360381019061053f9190612bcc565b611051565b005b34801561055257600080fd5b5061055b61119d565b6040516105689190612904565b60405180910390f35b34801561057d57600080fd5b506105866111a3565b6040516105939190612c35565b60405180910390f35b3480156105a857600080fd5b506105b16111cc565b6040516105be91906129af565b60405180910390f35b3480156105d357600080fd5b506105dc61125e565b6040516105e99190612904565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190612c50565b611264565b005b34801561062757600080fd5b50610630611378565b60405161063d9190612c35565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612a60565b61139e565b60405161067a9190612abb565b60405180910390f35b34801561068f57600080fd5b506106986113b3565b6040516106a59190612904565b60405180910390f35b3480156106ba57600080fd5b506106c36113b9565b6040516106d09190612c35565b60405180910390f35b3480156106e557600080fd5b506106ee6113df565b6040516106fb9190612c35565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190612c90565b611405565b005b34801561073957600080fd5b50610754600480360381019061074f9190612ce3565b611518565b005b34801561076257600080fd5b5061077d60048036038101906107789190612c50565b6115d3565b60405161078a9190612904565b60405180910390f35b34801561079f57600080fd5b506107a861165a565b6040516107b59190612904565b60405180910390f35b3480156107ca57600080fd5b506107d3611660565b6040516107e09190612904565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b9190612bcc565b611666565b005b34801561081e57600080fd5b50610827611820565b6040516108349190612d95565b60405180910390f35b60145481565b60606001805461085290612ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461087e90612ddf565b80156108cb5780601f106108a0576101008083540402835291602001916108cb565b820191906000526020600020905b8154815290600101906020018083116108ae57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b59190612904565b60405180910390a36001905092915050565b600c5481565b6000600354905090565b600e5481565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890612e5c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cb857610c37826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118469092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cc38484846118aa565b90509392505050565b60006009905090565b600f5481565b6000610d07827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108d5565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612e5c565b60405180910390fd5b61271081600354610dad9190612eab565b610db79190612f34565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590612e5c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90612e5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612e5c565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546111db90612ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461120790612ddf565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b5050505050905090565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e990612e5c565b60405180910390fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113ab3384846118aa565b905092915050565b60155481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612e5c565b60405180910390fd5b8260098190555081600a819055506114b48284611d9d90919063ffffffff16565b600b8190555080600c819055506003600c546114d09190612f34565b600b5410611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a90612fb1565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90612e5c565b60405180910390fd5b82601360146101000a81548160ff0219169083151502179055508160148190555080601581905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600a5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612e5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a9061301d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600083831115829061188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188591906129af565b60405180910390fd5b506000838561189d919061303d565b9050809150509392505050565b6000806118b684610ebc565b905060045483826118c79190613071565b11158061191d5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390613117565b60405180910390fd5b611964611dfb565b80156119bd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156119cb576119ca611ed2565b5b600062989680846119dc9190612f34565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a855750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611a99578084611a96919061303d565b93505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b3b5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b5457611b4b86868661244d565b92505050611d96565b611bdd846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118469092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c2c8787612554565b611c365784611c92565b611c918786601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612602565b5b9050611ce681600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d869190612904565b60405180910390a3600193505050505b9392505050565b6000808284611dac9190613071565b905083811015611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890613183565b60405180910390fd5b8091505092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611e685750601660009054906101000a900460ff16155b8015611e805750601360149054906101000a900460ff165b8015611ecd5750601454600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601660006101000a81548160ff0219169083151502179055506000601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f42576015549050611f85565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000611fc36002611fb5600b54611fa76009548761277a90919063ffffffff16565b6127f490919063ffffffff16565b6127f490919063ffffffff16565b90506000611fda828461283e90919063ffffffff16565b90506000600267ffffffffffffffff811115611ff957611ff86131a3565b5b6040519080825280602002602001820160405280156120275781602001602082028036833780820191505090505b509050308160008151811061203f5761203e6131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190613216565b8160018151811061211e5761211d6131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121bc95949392919061333c565b600060405180830381600087803b1580156121d657600080fd5b505af11580156121ea573d6000803e3d6000fd5b505050506000479050600061221f61220e60026009546127f490919063ffffffff16565b600b5461283e90919063ffffffff16565b9050600061225d600261224f846122416009548861277a90919063ffffffff16565b6127f490919063ffffffff16565b6127f490919063ffffffff16565b90506000612274828561283e90919063ffffffff16565b90506000811115612316576000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516122cb906133c7565b600060405180830381858888f193505050503d8060008114612309576040519150601f19603f3d011682016040523d82523d6000602084013e61230e565b606091505b505080915050505b600087111561242857601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123a8969594939291906133dc565b60606040518083038185885af11580156123c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123eb9190613452565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161241f9291906134a5565b60405180910390a15b50505050505050506000601660006101000a81548160ff021916908315150217905550565b60006124a182600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125419190612904565b60405180910390a3600190509392505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125fa5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008082612611576064612615565b600f545b905060006126606064600c5461262b9190612eab565b61265284612644600b548a61277a90919063ffffffff16565b61277a90919063ffffffff16565b6127f490919063ffffffff16565b90506126b481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127549190612904565b60405180910390a361276f818661283e90919063ffffffff16565b925050509392505050565b600080830361278c57600090506127ee565b6000828461279a9190612eab565b90508284826127a99190612f34565b146127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e090613540565b60405180910390fd5b809150505b92915050565b600061283683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612888565b905092915050565b600061288083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611846565b905092915050565b600080831182906128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c691906129af565b60405180910390fd5b50600083856128de9190612f34565b9050809150509392505050565b6000819050919050565b6128fe816128eb565b82525050565b600060208201905061291960008301846128f5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295957808201518184015260208101905061293e565b60008484015250505050565b6000601f19601f8301169050919050565b60006129818261291f565b61298b818561292a565b935061299b81856020860161293b565b6129a481612965565b840191505092915050565b600060208201905081810360008301526129c98184612976565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a01826129d6565b9050919050565b612a11816129f6565b8114612a1c57600080fd5b50565b600081359050612a2e81612a08565b92915050565b612a3d816128eb565b8114612a4857600080fd5b50565b600081359050612a5a81612a34565b92915050565b60008060408385031215612a7757612a766129d1565b5b6000612a8585828601612a1f565b9250506020612a9685828601612a4b565b9150509250929050565b60008115159050919050565b612ab581612aa0565b82525050565b6000602082019050612ad06000830184612aac565b92915050565b612adf81612aa0565b8114612aea57600080fd5b50565b600081359050612afc81612ad6565b92915050565b60008060408385031215612b1957612b186129d1565b5b6000612b2785828601612a1f565b9250506020612b3885828601612aed565b9150509250929050565b600080600060608486031215612b5b57612b5a6129d1565b5b6000612b6986828701612a1f565b9350506020612b7a86828701612a1f565b9250506040612b8b86828701612a4b565b9150509250925092565b600060ff82169050919050565b612bab81612b95565b82525050565b6000602082019050612bc66000830184612ba2565b92915050565b600060208284031215612be257612be16129d1565b5b6000612bf084828501612a1f565b91505092915050565b600060208284031215612c0f57612c0e6129d1565b5b6000612c1d84828501612a4b565b91505092915050565b612c2f816129f6565b82525050565b6000602082019050612c4a6000830184612c26565b92915050565b60008060408385031215612c6757612c666129d1565b5b6000612c7585828601612a1f565b9250506020612c8685828601612a1f565b9150509250929050565b600080600060608486031215612ca957612ca86129d1565b5b6000612cb786828701612a4b565b9350506020612cc886828701612a4b565b9250506040612cd986828701612a4b565b9150509250925092565b600080600060608486031215612cfc57612cfb6129d1565b5b6000612d0a86828701612aed565b9350506020612d1b86828701612a4b565b9250506040612d2c86828701612a4b565b9150509250925092565b6000819050919050565b6000612d5b612d56612d51846129d6565b612d36565b6129d6565b9050919050565b6000612d6d82612d40565b9050919050565b6000612d7f82612d62565b9050919050565b612d8f81612d74565b82525050565b6000602082019050612daa6000830184612d86565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612df757607f821691505b602082108103612e0a57612e09612db0565b5b50919050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612e4660068361292a565b9150612e5182612e10565b602082019050919050565b60006020820190508181036000830152612e7581612e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612eb6826128eb565b9150612ec1836128eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612ef9612e7c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f3f826128eb565b9150612f4a836128eb565b925082612f5a57612f59612f05565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000612f9b601c8361292a565b9150612fa682612f65565b602082019050919050565b60006020820190508181036000830152612fca81612f8e565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b600061300760088361292a565b915061301282612fd1565b602082019050919050565b6000602082019050818103600083015261303681612ffa565b9050919050565b6000613048826128eb565b9150613053836128eb565b925082820390508181111561306b5761306a612e7c565b5b92915050565b600061307c826128eb565b9150613087836128eb565b925082820190508082111561309f5761309e612e7c565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000613101603e8361292a565b915061310c826130a5565b604082019050919050565b60006020820190508181036000830152613130816130f4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061316d601b8361292a565b915061317882613137565b602082019050919050565b6000602082019050818103600083015261319c81613160565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061321081612a08565b92915050565b60006020828403121561322c5761322b6129d1565b5b600061323a84828501613201565b91505092915050565b6000819050919050565b600061326861326361325e84613243565b612d36565b6128eb565b9050919050565b6132788161324d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132b3816129f6565b82525050565b60006132c583836132aa565b60208301905092915050565b6000602082019050919050565b60006132e98261327e565b6132f38185613289565b93506132fe8361329a565b8060005b8381101561332f57815161331688826132b9565b9750613321836132d1565b925050600181019050613302565b5085935050505092915050565b600060a08201905061335160008301886128f5565b61335e602083018761326f565b818103604083015261337081866132de565b905061337f6060830185612c26565b61338c60808301846128f5565b9695505050505050565b600081905092915050565b50565b60006133b1600083613396565b91506133bc826133a1565b600082019050919050565b60006133d2826133a4565b9150819050919050565b600060c0820190506133f16000830189612c26565b6133fe60208301886128f5565b61340b604083018761326f565b613418606083018661326f565b6134256080830185612c26565b61343260a08301846128f5565b979650505050505050565b60008151905061344c81612a34565b92915050565b60008060006060848603121561346b5761346a6129d1565b5b60006134798682870161343d565b935050602061348a8682870161343d565b925050604061349b8682870161343d565b9150509250925092565b60006040820190506134ba60008301856128f5565b6134c760208301846128f5565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061352a60218361292a565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b905091905056fea264697066735822122081641d1eae1972349c95846a6c84dbe3a39dc6c7c907279a088fcd4ce555d22464736f6c63430008100033

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.