ETH Price: $2,384.27 (-1.05%)

Token

TheFatFinger (TFF)
 

Overview

Max Total Supply

100,000,000,000 TFF

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
882,000,000 TFF

Value
$0.00
0x58a3c4a10f1cfdccfdcb15f8aaae87def38bc2c0
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:
TheFatFinger

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-20
*/

/**

    That's The Fat Finger. Deal with it!
    ....................../´¯/) 
    ....................,/¯../ 
    .................../..../ 
    ............./´¯/'...'/´¯¯`·¸ 
    ........../'/.../..../......./¨¯\ 
    ........('(...´...´.... ¯~/'...') 
    .........\.................'...../ 
    ..........''...\.......... _.·´ 
    ............\..............( 
    ..............\.............\...
    Website: https://thefatfinger.io/
    Twitter: https://twitter.com/tff_erc20
    Telegram: https://t.me/thefatfinger

*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;


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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold


        return c;
    }
}


interface IERC20 {
    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 getOwner() external view returns (address);
    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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;


    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }


    /**
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }


    /**
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }


    /**
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }


    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }


    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }


    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }


    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized 
       authorization allows only to change Token Amount to be sold for ETH for marketing & operations
       and to withdraw any ETH that someone mistakenly sent to the contract address.
       Rest of the functions can only be called by owner.  
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }


    event OwnershipTransferred(address owner);
}


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


interface IDEXRouter {
    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 TheFatFinger is IERC20, Auth {
    using SafeMath for uint256;


    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;


    string constant _name = "TheFatFinger";
    string constant _symbol = "TFF";
    uint8 constant _decimals = 18;


    uint256 _totalSupply = 100000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100; 
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100; 


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;


    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;


    uint256 liquidityFee = 1;
    uint256 MarketingFee = 2;
    uint256 DevFee = 2;
    uint256 totalFee = 5;
    uint256 feeDenominator = 100;
    
    address private DevFeeReceiver = 0x833e012b39E3D20274DE4011af9475C8C80d8a26;
    address private MarketingFeeReceiver = 0x833e012b39E3D20274DE4011af9475C8C80d8a26;


    IDEXRouter public router;
    address public pair;


    uint256 public launchedAt;


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000000 * 1; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;


        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;


        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }


    receive() external payable { }


    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    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]; }


    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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }


        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }


        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");


        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : 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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }




    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);


        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);


        return amount.sub(feeAmount);
    }


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


    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);


        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;


        uint256 balanceBefore = address(this).balance;


        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(MarketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH - amountETHLiquidity - amountETHMarketing;


        (bool DevSuccess, /* bytes memory data */) = payable(DevFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        require(DevSuccess, "receiver rejected ETH transfer");
        (bool MarketingSuccess, /* bytes memory data */) = payable(MarketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        addLiquidity(amountToLiquify, amountETHLiquidity);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityETH{value: ETHAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(ETHAmount, tokenAmount);
        }
    }


    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(this);


        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }


    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }


    function launch() internal {
        launchedAt = block.number;
    }


    function setTxLimit(uint256 amount) external onlyOwner () {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }


   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    


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


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


    function setFees(uint256 _liquidityFee, uint256 _MarketingFee, uint256 _DevFee, uint256 _feeDenominator) external onlyOwner () {
        liquidityFee = _liquidityFee;
        MarketingFee = _MarketingFee;
        DevFee = _DevFee;
        totalFee = _liquidityFee.add(_MarketingFee).add(_DevFee);
        feeDenominator = _feeDenominator;
    }


    function setFeeReceiver(address _DevFeeReceiver, address _MarketingFeeReceiver) external onlyOwner () {
        DevFeeReceiver = _DevFeeReceiver;
        MarketingFeeReceiver = _MarketingFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }


    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(DevFeeReceiver).transfer(contractETHBalance);
    }


    function transferForeignToken(address _token) public onlyOwner () {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        payable(DevFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_DevFeeReceiver","type":"address"},{"internalType":"address","name":"_MarketingFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","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":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","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":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000875565b64174876e800620001009190620009b2565b60055560646002600554620001169190620009b2565b620001229190620007e2565b60065560646002600554620001389190620009b2565b620001449190620007e2565b6007556001600c556002600d556002600e556005600f55606460105573833e012b39e3d20274de4011af9475c8c80d8a26601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073833e012b39e3d20274de4011af9475c8c80d8a26601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff0219169083151502179055506001620f42406005546200023a9190620007e2565b620002469190620009b2565b6017553480156200025657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000744565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044792919062000798565b602060405180830381600087803b1580156200046257600080fd5b505af115801562000477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049d919062000744565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071e9190620007c5565b60405180910390a35062000ae8565b6000815190506200073e8162000ace565b92915050565b6000602082840312156200075d576200075c62000abc565b5b60006200076d848285016200072d565b91505092915050565b620007818162000a13565b82525050565b620007928162000a47565b82525050565b6000604082019050620007af600083018562000776565b620007be602083018462000776565b9392505050565b6000602082019050620007dc600083018462000787565b92915050565b6000620007ef8262000a47565b9150620007fc8362000a47565b9250826200080f576200080e62000a8d565b5b828204905092915050565b6000808291508390505b60018511156200086c5780860481111562000844576200084362000a5e565b5b6001851615620008545780820291505b8081029050620008648562000ac1565b945062000824565b94509492505050565b6000620008828262000a47565b91506200088f8362000a51565b9250620008be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c6565b905092915050565b600082620008d85760019050620009ab565b81620008e85760009050620009ab565b81600181146200090157600281146200090c5762000942565b6001915050620009ab565b60ff84111562000921576200092062000a5e565b5b8360020a9150848211156200093b576200093a62000a5e565b5b50620009ab565b5060208310610133831016604e8410600b84101617156200097c5782820a90508381111562000976576200097562000a5e565b5b620009ab565b6200098b84848460016200081a565b92509050818404811115620009a557620009a462000a5e565b5b81810290505b9392505050565b6000620009bf8262000a47565b9150620009cc8362000a47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a085762000a0762000a5e565b5b828202905092915050565b600062000a208262000a27565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad98162000a13565b811462000ae557600080fd5b50565b6137d58062000af86000396000f3fe6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f54686546617446696e6765720000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf333610c55565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613140565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf33610c55565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613140565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e8533610c55565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613140565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600381526020017f5446460000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a33610c55565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613140565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf33610c55565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613140565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b61171233610c55565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613140565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a613541565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613743565b92915050565b6000813590506129d48161375a565b92915050565b6000813590506129e981613771565b92915050565b6000813590506129fe81613788565b92915050565b600081519050612a1381613788565b92915050565b600060208284031215612a2f57612a2e613570565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b613570565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a89613570565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb613570565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c613570565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c613570565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c613570565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb613570565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c08613570565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c36613570565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c78613570565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc613570565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de48161344b565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f818560208601613481565b612e1881613575565b840191505092915050565b6000612e30602583613288565b9150612e3b82613586565b604082019050919050565b6000612e53601183613288565b9150612e5e826135d5565b602082019050919050565b6000612e76602383613288565b9150612e81826135fe565b604082019050919050565b6000612e99601b83613288565b9150612ea48261364d565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613676565b602082019050919050565b6000612edf602183613288565b9150612eea8261369f565b604082019050919050565b6000612f02600683613288565b9150612f0d826136ee565b602082019050919050565b6000612f2560008361327d565b9150612f3082613717565b600082019050919050565b6000612f48600b83613288565b9150612f538261371a565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134b4565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134e3565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134b4565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134b4565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261345d565b9050919050565b600061343282613439565b9050919050565b6000613444826133de565b9050919050565b6000613456826133fe565b9050919050565b60006134688261346f565b9050919050565b600061347a826133de565b9050919050565b60005b8381101561349f578082015181840152602081019050613484565b838111156134ae576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61374c816133ae565b811461375757600080fd5b50565b613763816133c0565b811461376e57600080fd5b50565b61377a816133d2565b811461378557600080fd5b50565b613791816133fe565b811461379c57600080fd5b5056fea2646970667358221220469fcfb6bae2b742574196a2a375b06a17cee13777c1391911dbe585823d6e3764736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f54686546617446696e6765720000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf333610c55565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613140565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf33610c55565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613140565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e8533610c55565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613140565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600381526020017f5446460000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a33610c55565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613140565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf33610c55565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613140565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b61171233610c55565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613140565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a613541565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613512565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613743565b92915050565b6000813590506129d48161375a565b92915050565b6000813590506129e981613771565b92915050565b6000813590506129fe81613788565b92915050565b600081519050612a1381613788565b92915050565b600060208284031215612a2f57612a2e613570565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b613570565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a89613570565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb613570565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c613570565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c613570565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c613570565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb613570565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c08613570565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c36613570565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c78613570565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc613570565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de48161344b565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f818560208601613481565b612e1881613575565b840191505092915050565b6000612e30602583613288565b9150612e3b82613586565b604082019050919050565b6000612e53601183613288565b9150612e5e826135d5565b602082019050919050565b6000612e76602383613288565b9150612e81826135fe565b604082019050919050565b6000612e99601b83613288565b9150612ea48261364d565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613676565b602082019050919050565b6000612edf602183613288565b9150612eea8261369f565b604082019050919050565b6000612f02600683613288565b9150612f0d826136ee565b602082019050919050565b6000612f2560008361327d565b9150612f3082613717565b600082019050919050565b6000612f48600b83613288565b9150612f538261371a565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134b4565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134e3565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134b4565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134b4565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261345d565b9050919050565b600061343282613439565b9050919050565b6000613444826133de565b9050919050565b6000613456826133fe565b9050919050565b60006134688261346f565b9050919050565b600061347a826133de565b9050919050565b60005b8381101561349f578082015181840152602081019050613484565b838111156134ae576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61374c816133ae565b811461375757600080fd5b50565b613763816133c0565b811461376e57600080fd5b50565b61377a816133d2565b811461378557600080fd5b50565b613791816133fe565b811461379c57600080fd5b5056fea2646970667358221220469fcfb6bae2b742574196a2a375b06a17cee13777c1391911dbe585823d6e3764736f6c63430008050033

Deployed Bytecode Sourcemap

6037:10592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7306:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8270:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8694:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16408:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8000:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9218:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16079:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3659:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8094:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8920:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14248:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14404:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14569:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7269:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14841:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8440:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6500:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6562:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8180:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7203:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9052:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3328:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7233:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16231:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15769:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8551:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15419:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15201:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3500:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4314:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15585:174;;;;;;;;;;;;;:::i;:::-;;14701:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7172:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3835:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7306:57;;;;:::o;8270:80::-;8318:13;8342:5;;;;;;;;;;;;;;;;;8335:12;;8270:80;:::o;8694:216::-;8769:4;8821:6;8786:11;:23;8798:10;8786:23;;;;;;;;;;;;;;;:32;8810:7;8786:32;;;;;;;;;;;;;;;:41;;;;8864:7;8843:37;;8852:10;8843:37;;;8873:6;8843:37;;;;;;:::i;:::-;;;;;;;;8898:4;8891:11;;8694:216;;;;:::o;16408:150::-;16488:4;16544:6;16512:29;16532:8;16512:19;:29::i;:::-;:38;16505:45;;16408:150;;;;:::o;8000:88::-;8055:7;8073:12;;8066:19;;8000:88;:::o;9218:372::-;9318:4;9373:17;9338:11;:19;9350:6;9338:19;;;;;;;;;;;;;;;:31;9358:10;9338:31;;;;;;;;;;;;;;;;:52;9335:186;;9440:69;9476:6;9440:69;;;;;;;;;;;;;;;;;:11;:19;9452:6;9440:19;;;;;;;;;;;;;;;:31;9460:10;9440:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9406:11;:19;9418:6;9406:19;;;;;;;;;;;;;;;:31;9426:10;9406:31;;;;;;;;;;;;;;;:103;;;;9335:186;9542:40;9556:6;9564:9;9575:6;9542:13;:40::i;:::-;9535:47;;9218:372;;;;;:::o;16079:142::-;16132:7;16159:54;16197:15;16207:4;;;;;;;;;;;16197:9;:15::i;:::-;16159:33;16176:15;16186:4;;;;;;;;;;;16176:9;:15::i;:::-;16159:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16152:61;;16079:142;:::o;3659:103::-;3714:4;3749:5;;;;;;;;;;;3738:16;;:7;:16;;;3731:23;;3659:103;;;:::o;8094:80::-;8146:5;6425:2;8155:16;;8094:80;:::o;8920:122::-;8975:4;8999:35;9007:7;9016:17;8999:7;:35::i;:::-;8992:42;;8920:122;;;:::o;14248:147::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14350:4:::1;14335:12;;:19;;;;:::i;:::-;14325:6;:29;;14317:38;;;::::0;::::1;;14381:6;14366:12;:21;;;;14248:147:::0;:::o;14404:151::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14507:4:::1;14492:12;;:19;;;;:::i;:::-;14482:6;:29;;14474:39;;;::::0;::::1;;14541:6;14524:14;:23;;;;14404:151:::0;:::o;14569:122::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14677:6:::1;14655:11;:19;14667:6;14655:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14569:122:::0;;:::o;7269:30::-;;;;;;;;;;;;;:::o;14841:350::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14994:13:::1;14979:12;:28;;;;15033:13;15018:12;:28;;;;15066:7;15057:6;:16;;;;15095:45;15132:7;15095:32;15113:13;15095;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;15084:8;:56;;;;15168:15;15151:14;:32;;;;14841:350:::0;;;;:::o;8440:105::-;8506:7;8524:9;:18;8534:7;8524:18;;;;;;;;;;;;;;;;8517:25;;8440:105;;;:::o;6500:54::-;;;;:::o;8356:78::-;8408:7;8426:5;;;;;;;;;;;8419:12;;8356:78;:::o;6562:56::-;;;;:::o;8180:84::-;8230:13;8254:7;;;;;;;;;;;;;;;;;8247:14;;8180:84;:::o;7203:19::-;;;;;;;;;;;;;:::o;9052:156::-;9132:4;9156:44;9170:10;9182:9;9193:6;9156:13;:44::i;:::-;9149:51;;9052:156;;;;:::o;3328:94::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3410:4:::1;3388:14:::0;:19:::1;3403:3;3388:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3328:94:::0;:::o;7233:25::-;;;;:::o;16231:167::-;16299:7;16326:64;16367:22;:20;:22::i;:::-;16326:36;16339:22;16359:1;16339:15;16349:4;;;;;;;;;;;16339:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16326:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16319:71;;16231:167;;;:::o;15769:294::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15872:4:::1;15854:23;;:6;:23;;;;15846:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15928:24;15962:6;15955:24;;;15988:4;15955:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15928:66;;16013:14;;;;;;;;;;;16005:32;;:50;16038:16;16005:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15835:228;15769:294:::0;:::o;8551:133::-;8635:7;8653:11;:19;8665:6;8653:19;;;;;;;;;;;;;;;:28;8673:7;8653:28;;;;;;;;;;;;;;;;8646:35;;8551:133;;;;:::o;15419:156::-;3249:24;3262:10;3249:12;:24::i;:::-;3241:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:8:::1;15511:11;;:22;;;;;;;;;;;;;;;;;;15560:7;15544:13;:23;;;;15419:156:::0;;:::o;15201:208::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15331:15:::1;15314:14;;:32;;;;;;;;;;;;;;;;;;15380:21;15357:20;;:44;;;;;;;;;;;;;;;;;;15201:208:::0;;:::o;3500:97::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3584:5:::1;3562:14;:19;3577:3;3562:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3500:97:::0;:::o;4314:173::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4398:3:::1;4390:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4434:4;4412:14:::0;:19:::1;4427:3;4412:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4454:25;4475:3;4454:25;;;;;;:::i;:::-;;;;;;;;4314:173:::0;:::o;15585:174::-;3249:24;3262:10;3249:12;:24::i;:::-;3241:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15638:26:::1;15667:21;15638:50;;15707:14;;;;;;;;;;;15699:32;;:52;15732:18;15699:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15627:132;15585:174::o:0;14701:130::-;3139:19;3147:10;3139:7;:19::i;:::-;3131:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14817:6:::1;14791:15;:23;14807:6;14791:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14701:130:::0;;:::o;7172:24::-;;;;;;;;;;;;;:::o;3835:107::-;3891:4;3915:14;:19;3930:3;3915:19;;;;;;;;;;;;;;;;;;;;;;;;;3908:26;;3835:107;;;:::o;981:194::-;1067:7;1100:1;1095;:6;;1103:12;1087:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1127:9;1143:1;1139;:5;;;;:::i;:::-;1127:17;;1166:1;1159:8;;;981:194;;;;;:::o;9600:939::-;9692:4;9712:6;;;;;;;;;;;9709:63;;;9728:41;9743:6;9751:9;9762:6;9728:14;:41::i;:::-;9721:48;;;;9709:63;9792:28;9805:6;9813;9792:12;:28::i;:::-;9858:4;;;;;;;;;;;9845:17;;:9;:17;;;;:38;;;;;9879:4;;;;;;;;;;;9866:17;;:9;:17;;;;9845:38;9841:198;;;9908:15;:26;9924:9;9908:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9971:14;;9961:6;9938:9;:20;9948:9;9938:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9908:77;9900:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:198;10062:16;:14;:16::i;:::-;10059:35;;;10081:10;:8;:10::i;:::-;10059:35;10112:10;:8;:10::i;:::-;10111:11;:32;;;;;10139:4;;;;;;;;;;;10126:17;;:9;:17;;;10111:32;10108:81;;;10174:1;10154:9;:17;10164:6;10154:17;;;;;;;;;;;;;;;;:21;10146:30;;;;;;10178:8;:6;:8::i;:::-;10108:81;10223:53;10245:6;10223:53;;;;;;;;;;;;;;;;;:9;:17;10233:6;10223:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10203:9;:17;10213:6;10203:17;;;;;;;;;;;;;;;:73;;;;10291:22;10316:21;10330:6;10316:13;:21::i;:::-;:56;;10366:6;10316:56;;;10340:23;10348:6;10356;10340:7;:23::i;:::-;10316:56;10291:81;;10406:40;10431:14;10406:9;:20;10416:9;10406:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10383:9;:20;10393:9;10383:20;;;;;;;;;;;;;;;:63;;;;10483:9;10466:43;;10475:6;10466:43;;;10494:14;10466:43;;;;;;:::i;:::-;;;;;;;;10527:4;10520:11;;;9600:939;;;;;;:::o;839:136::-;897:7;924:43;928:1;931;924:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;917:50;;839:136;;;;:::o;650:183::-;708:7;728:9;744:1;740;:5;;;;:::i;:::-;728:17;;769:1;764;:6;;756:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;824:1;817:8;;;650:183;;;;:::o;1181:254::-;1239:7;1268:1;1263;:6;1259:47;;;1293:1;1286:8;;;;1259:47;1320:9;1336:1;1332;:5;;;;:::i;:::-;1320:17;;1365:1;1360;1356;:5;;;;:::i;:::-;:10;1348:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1426:1;1419:8;;;1181:254;;;;;:::o;1441:132::-;1499:7;1526:39;1530:1;1533;1526:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1519:46;;1441:132;;;;:::o;10551:330::-;10644:4;10681:53;10703:6;10681:53;;;;;;;;;;;;;;;;;:9;:17;10691:6;10681:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10661:9;:17;10671:6;10661:17;;;;;;;;;;;;;;;:73;;;;10768:32;10793:6;10768:9;:20;10778:9;10768:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10745:9;:20;10755:9;10745:20;;;;;;;;;;;;;;;:55;;;;10833:9;10816:35;;10825:6;10816:35;;;10844:6;10816:35;;;;;;:::i;:::-;;;;;;;;10869:4;10862:11;;10551:330;;;;;:::o;10891:166::-;10988:12;;10978:6;:22;;:49;;;;11004:15;:23;11020:6;11004:23;;;;;;;;;;;;;;;;;;;;;;;;;10978:49;10970:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10891:166;;:::o;11544:197::-;11593:4;11631;;;;;;;;;;;11617:18;;:10;:18;;;;:38;;;;;11649:6;;;;;;;;;;;11648:7;11617:38;:62;;;;;11668:11;;;;;;;;;;;11617:62;:116;;;;;11720:13;;11692:9;:24;11710:4;11692:24;;;;;;;;;;;;;;;;:41;;11617:116;11610:123;;11544:197;:::o;11751:1515::-;7427:4;7418:6;;:13;;;;;;;;;;;;;;;;;;11800:28:::1;11831:24;11849:4;11831:9;:24::i;:::-;11800:55;;11866:23;11892:59;11949:1;11892:52;11935:8;;11892:38;11917:12;;11892:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11866:85;;11962:20;11985:41;12010:15;11985:20;:24;;:41;;;;:::i;:::-;11962:64;;12041:21;12079:1;12065:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12041:40;;12110:4;12092;12097:1;12092:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12136:4;;;;;;;;;;;12126;12131:1;12126:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12155:21;12179;12155:45;;12215:6;;;;;;;;;;;:57;;;12287:12;12314:1;12330:4;12357;12377:15;12215:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12414:17;12434:40;12460:13;12434:21;:25;;:40;;;;:::i;:::-;12414:60;;12485:19;12507:33;12520:19;12537:1;12520:12;;:16;;:19;;;;:::i;:::-;12507:8;;:12;;:33;;;;:::i;:::-;12485:55;;12551:26;12580:51;12629:1;12580:44;12612:11;12580:27;12594:12;;12580:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12551:80;;12642:26;12671:44;12703:11;12671:27;12685:12;;12671:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12642:73;;12726:20;12782:18;12761;12749:9;:30;;;;:::i;:::-;:51;;;;:::i;:::-;12726:74;;12816:15;12868:14;;;;;;;;;;;12860:28;;12896:12;12915:5;12860:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12815:110;;;12944:10;12936:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13001:21;13059:20;;;;;;;;;;;13051:34;;13093:18;13118:5;13051:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13000:128;;;13147:16;13139:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13209:49;13222:15;13239:18;13209:12;:49::i;:::-;11789:1477;;;;;;;;;;;;7445:5:::0;7436:6;;:14;;;;;;;;;;;;;;;;;;11751:1515::o;14067:90::-;14110:4;14148:1;14134:10;;:15;;14127:22;;14067:90;:::o;14167:71::-;14218:12;14205:10;:25;;;;14167:71::o;11069:114::-;11131:4;11156:11;:19;11168:6;11156:19;;;;;;;;;;;;;;;;;;;;;;;;;11155:20;11148:27;;11069:114;;;:::o;11197:337::-;11264:7;11284:17;11304:40;11329:14;;11304:20;11315:8;;11304:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;11284:60;;11386:39;11415:9;11386;:24;11404:4;11386:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11359:9;:24;11377:4;11359:24;;;;;;;;;;;;;;;:66;;;;11466:4;11441:42;;11450:6;11441:42;;;11473:9;11441:42;;;;;;:::i;:::-;;;;;;;;11505:21;11516:9;11505:6;:10;;:21;;;;:::i;:::-;11498:28;;;11197:337;;;;:::o;1579:347::-;1665:7;1764:1;1760;:5;1767:12;1752:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1791:9;1807:1;1803;:5;;;;:::i;:::-;1791:17;;1917:1;1910:8;;;1579:347;;;;;:::o;13276:408::-;13370:1;13356:11;:15;13353:324;;;13387:6;;;;;;;;;;;:22;;;13417:9;13454:4;13478:11;13508:1;13528;13556:4;13580:15;13387:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13630:35;13642:9;13653:11;13630:35;;;;;;;:::i;:::-;;;;;;;;13353:324;13276:408;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;860:79;;:::i;:::-;822:2;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;812:263;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:2;;;1203:79;;:::i;:::-;1165:2;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1155:271;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1563:79;;:::i;:::-;1525:2;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1515:391;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2060:79;;:::i;:::-;2022:2;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2012:519;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2665:79;;:::i;:::-;2627:2;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2617:388;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:2;;;3142:79;;:::i;:::-;3104:2;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3094:391;;;;;:::o;3491:468::-;3556:6;3564;3613:2;3601:9;3592:7;3588:23;3584:32;3581:2;;;3619:79;;:::i;:::-;3581:2;3739:1;3764:50;3806:7;3797:6;3786:9;3782:22;3764:50;:::i;:::-;3754:60;;3710:114;3863:2;3889:53;3934:7;3925:6;3914:9;3910:22;3889:53;:::i;:::-;3879:63;;3834:118;3571:388;;;;;:::o;3965:329::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:2;;;4079:79;;:::i;:::-;4041:2;4199:1;4224:53;4269:7;4260:6;4249:9;4245:22;4224:53;:::i;:::-;4214:63;;4170:117;4031:263;;;;:::o;4300:351::-;4370:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:2;;;4425:79;;:::i;:::-;4387:2;4545:1;4570:64;4626:7;4617:6;4606:9;4602:22;4570:64;:::i;:::-;4560:74;;4516:128;4377:274;;;;:::o;4657:474::-;4725:6;4733;4782:2;4770:9;4761:7;4757:23;4753:32;4750:2;;;4788:79;;:::i;:::-;4750:2;4908:1;4933:53;4978:7;4969:6;4958:9;4954:22;4933:53;:::i;:::-;4923:63;;4879:117;5035:2;5061:53;5106:7;5097:6;5086:9;5082:22;5061:53;:::i;:::-;5051:63;;5006:118;4740:391;;;;;:::o;5137:663::-;5225:6;5233;5241;5290:2;5278:9;5269:7;5265:23;5261:32;5258:2;;;5296:79;;:::i;:::-;5258:2;5416:1;5441:64;5497:7;5488:6;5477:9;5473:22;5441:64;:::i;:::-;5431:74;;5387:128;5554:2;5580:64;5636:7;5627:6;5616:9;5612:22;5580:64;:::i;:::-;5570:74;;5525:129;5693:2;5719:64;5775:7;5766:6;5755:9;5751:22;5719:64;:::i;:::-;5709:74;;5664:129;5248:552;;;;;:::o;5806:765::-;5892:6;5900;5908;5916;5965:3;5953:9;5944:7;5940:23;5936:33;5933:2;;;5972:79;;:::i;:::-;5933:2;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;6347:2;6373:53;6418:7;6409:6;6398:9;6394:22;6373:53;:::i;:::-;6363:63;;6318:118;6475:2;6501:53;6546:7;6537:6;6526:9;6522:22;6501:53;:::i;:::-;6491:63;;6446:118;5923:648;;;;;;;:::o;6577:179::-;6646:10;6667:46;6709:3;6701:6;6667:46;:::i;:::-;6745:4;6740:3;6736:14;6722:28;;6657:99;;;;:::o;6762:147::-;6857:45;6896:5;6857:45;:::i;:::-;6852:3;6845:58;6835:74;;:::o;6915:108::-;6992:24;7010:5;6992:24;:::i;:::-;6987:3;6980:37;6970:53;;:::o;7029:118::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7094:53;;:::o;7183:732::-;7302:3;7331:54;7379:5;7331:54;:::i;:::-;7401:86;7480:6;7475:3;7401:86;:::i;:::-;7394:93;;7511:56;7561:5;7511:56;:::i;:::-;7590:7;7621:1;7606:284;7631:6;7628:1;7625:13;7606:284;;;7707:6;7701:13;7734:63;7793:3;7778:13;7734:63;:::i;:::-;7727:70;;7820:60;7873:6;7820:60;:::i;:::-;7810:70;;7666:224;7653:1;7650;7646:9;7641:14;;7606:284;;;7610:14;7906:3;7899:10;;7307:608;;;;;;;:::o;7921:109::-;8002:21;8017:5;8002:21;:::i;:::-;7997:3;7990:34;7980:50;;:::o;8036:167::-;8141:55;8190:5;8141:55;:::i;:::-;8136:3;8129:68;8119:84;;:::o;8209:147::-;8304:45;8343:5;8304:45;:::i;:::-;8299:3;8292:58;8282:74;;:::o;8362:364::-;8450:3;8478:39;8511:5;8478:39;:::i;:::-;8533:71;8597:6;8592:3;8533:71;:::i;:::-;8526:78;;8613:52;8658:6;8653:3;8646:4;8639:5;8635:16;8613:52;:::i;:::-;8690:29;8712:6;8690:29;:::i;:::-;8685:3;8681:39;8674:46;;8454:272;;;;;:::o;8732:366::-;8874:3;8895:67;8959:2;8954:3;8895:67;:::i;:::-;8888:74;;8971:93;9060:3;8971:93;:::i;:::-;9089:2;9084:3;9080:12;9073:19;;8878:220;;;:::o;9104:366::-;9246:3;9267:67;9331:2;9326:3;9267:67;:::i;:::-;9260:74;;9343:93;9432:3;9343:93;:::i;:::-;9461:2;9456:3;9452:12;9445:19;;9250:220;;;:::o;9476:366::-;9618:3;9639:67;9703:2;9698:3;9639:67;:::i;:::-;9632:74;;9715:93;9804:3;9715:93;:::i;:::-;9833:2;9828:3;9824:12;9817:19;;9622:220;;;:::o;9848:366::-;9990:3;10011:67;10075:2;10070:3;10011:67;:::i;:::-;10004:74;;10087:93;10176:3;10087:93;:::i;:::-;10205:2;10200:3;10196:12;10189:19;;9994:220;;;:::o;10220:366::-;10362:3;10383:67;10447:2;10442:3;10383:67;:::i;:::-;10376:74;;10459:93;10548:3;10459:93;:::i;:::-;10577:2;10572:3;10568:12;10561:19;;10366:220;;;:::o;10592:366::-;10734:3;10755:67;10819:2;10814:3;10755:67;:::i;:::-;10748:74;;10831:93;10920:3;10831:93;:::i;:::-;10949:2;10944:3;10940:12;10933:19;;10738:220;;;:::o;10964:365::-;11106:3;11127:66;11191:1;11186:3;11127:66;:::i;:::-;11120:73;;11202:93;11291:3;11202:93;:::i;:::-;11320:2;11315:3;11311:12;11304:19;;11110:219;;;:::o;11335:398::-;11494:3;11515:83;11596:1;11591:3;11515:83;:::i;:::-;11508:90;;11607:93;11696:3;11607:93;:::i;:::-;11725:1;11720:3;11716:11;11709:18;;11498:235;;;:::o;11739:366::-;11881:3;11902:67;11966:2;11961:3;11902:67;:::i;:::-;11895:74;;11978:93;12067:3;11978:93;:::i;:::-;12096:2;12091:3;12087:12;12080:19;;11885:220;;;:::o;12111:118::-;12198:24;12216:5;12198:24;:::i;:::-;12193:3;12186:37;12176:53;;:::o;12235:112::-;12318:22;12334:5;12318:22;:::i;:::-;12313:3;12306:35;12296:51;;:::o;12353:379::-;12537:3;12559:147;12702:3;12559:147;:::i;:::-;12552:154;;12723:3;12716:10;;12541:191;;;:::o;12738:222::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12882:71;12950:1;12939:9;12935:17;12926:6;12882:71;:::i;:::-;12836:124;;;;:::o;12966:238::-;13067:4;13105:2;13094:9;13090:18;13082:26;;13118:79;13194:1;13183:9;13179:17;13170:6;13118:79;:::i;:::-;13072:132;;;;:::o;13210:807::-;13459:4;13497:3;13486:9;13482:19;13474:27;;13511:71;13579:1;13568:9;13564:17;13555:6;13511:71;:::i;:::-;13592:72;13660:2;13649:9;13645:18;13636:6;13592:72;:::i;:::-;13674:80;13750:2;13739:9;13735:18;13726:6;13674:80;:::i;:::-;13764;13840:2;13829:9;13825:18;13816:6;13764:80;:::i;:::-;13854:73;13922:3;13911:9;13907:19;13898:6;13854:73;:::i;:::-;13937;14005:3;13994:9;13990:19;13981:6;13937:73;:::i;:::-;13464:553;;;;;;;;;:::o;14023:210::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14161:65;14223:1;14212:9;14208:17;14199:6;14161:65;:::i;:::-;14115:118;;;;:::o;14239:258::-;14350:4;14388:2;14377:9;14373:18;14365:26;;14401:89;14487:1;14476:9;14472:17;14463:6;14401:89;:::i;:::-;14355:142;;;;:::o;14503:313::-;14616:4;14654:2;14643:9;14639:18;14631:26;;14703:9;14697:4;14693:20;14689:1;14678:9;14674:17;14667:47;14731:78;14804:4;14795:6;14731:78;:::i;:::-;14723:86;;14621:195;;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14993:248;;;:::o;15247:419::-;15413:4;15451:2;15440:9;15436:18;15428:26;;15500:9;15494:4;15490:20;15486:1;15475:9;15471:17;15464:47;15528:131;15654:4;15528:131;:::i;:::-;15520:139;;15418:248;;;:::o;15672:419::-;15838:4;15876:2;15865:9;15861:18;15853:26;;15925:9;15919:4;15915:20;15911:1;15900:9;15896:17;15889:47;15953:131;16079:4;15953:131;:::i;:::-;15945:139;;15843:248;;;:::o;16097:419::-;16263:4;16301:2;16290:9;16286:18;16278:26;;16350:9;16344:4;16340:20;16336:1;16325:9;16321:17;16314:47;16378:131;16504:4;16378:131;:::i;:::-;16370:139;;16268:248;;;:::o;16522:419::-;16688:4;16726:2;16715:9;16711:18;16703:26;;16775:9;16769:4;16765:20;16761:1;16750:9;16746:17;16739:47;16803:131;16929:4;16803:131;:::i;:::-;16795:139;;16693:248;;;:::o;16947:419::-;17113:4;17151:2;17140:9;17136:18;17128:26;;17200:9;17194:4;17190:20;17186:1;17175:9;17171:17;17164:47;17228:131;17354:4;17228:131;:::i;:::-;17220:139;;17118:248;;;:::o;17372:419::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17625:9;17619:4;17615:20;17611:1;17600:9;17596:17;17589:47;17653:131;17779:4;17653:131;:::i;:::-;17645:139;;17543:248;;;:::o;17797:419::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17968:248;;;:::o;18222:222::-;18315:4;18353:2;18342:9;18338:18;18330:26;;18366:71;18434:1;18423:9;18419:17;18410:6;18366:71;:::i;:::-;18320:124;;;;:::o;18450:831::-;18713:4;18751:3;18740:9;18736:19;18728:27;;18765:71;18833:1;18822:9;18818:17;18809:6;18765:71;:::i;:::-;18846:80;18922:2;18911:9;18907:18;18898:6;18846:80;:::i;:::-;18973:9;18967:4;18963:20;18958:2;18947:9;18943:18;18936:48;19001:108;19104:4;19095:6;19001:108;:::i;:::-;18993:116;;19119:72;19187:2;19176:9;19172:18;19163:6;19119:72;:::i;:::-;19201:73;19269:3;19258:9;19254:19;19245:6;19201:73;:::i;:::-;18718:563;;;;;;;;:::o;19287:332::-;19408:4;19446:2;19435:9;19431:18;19423:26;;19459:71;19527:1;19516:9;19512:17;19503:6;19459:71;:::i;:::-;19540:72;19608:2;19597:9;19593:18;19584:6;19540:72;:::i;:::-;19413:206;;;;;:::o;19625:214::-;19714:4;19752:2;19741:9;19737:18;19729:26;;19765:67;19829:1;19818:9;19814:17;19805:6;19765:67;:::i;:::-;19719:120;;;;:::o;19926:132::-;19993:4;20016:3;20008:11;;20046:4;20041:3;20037:14;20029:22;;19998:60;;;:::o;20064:114::-;20131:6;20165:5;20159:12;20149:22;;20138:40;;;:::o;20184:99::-;20236:6;20270:5;20264:12;20254:22;;20243:40;;;:::o;20289:113::-;20359:4;20391;20386:3;20382:14;20374:22;;20364:38;;;:::o;20408:184::-;20507:11;20541:6;20536:3;20529:19;20581:4;20576:3;20572:14;20557:29;;20519:73;;;;:::o;20598:147::-;20699:11;20736:3;20721:18;;20711:34;;;;:::o;20751:169::-;20835:11;20869:6;20864:3;20857:19;20909:4;20904:3;20900:14;20885:29;;20847:73;;;;:::o;20926:305::-;20966:3;20985:20;21003:1;20985:20;:::i;:::-;20980:25;;21019:20;21037:1;21019:20;:::i;:::-;21014:25;;21173:1;21105:66;21101:74;21098:1;21095:81;21092:2;;;21179:18;;:::i;:::-;21092:2;21223:1;21220;21216:9;21209:16;;20970:261;;;;:::o;21237:185::-;21277:1;21294:20;21312:1;21294:20;:::i;:::-;21289:25;;21328:20;21346:1;21328:20;:::i;:::-;21323:25;;21367:1;21357:2;;21372:18;;:::i;:::-;21357:2;21414:1;21411;21407:9;21402:14;;21279:143;;;;:::o;21428:348::-;21468:7;21491:20;21509:1;21491:20;:::i;:::-;21486:25;;21525:20;21543:1;21525:20;:::i;:::-;21520:25;;21713:1;21645:66;21641:74;21638:1;21635:81;21630:1;21623:9;21616:17;21612:105;21609:2;;;21720:18;;:::i;:::-;21609:2;21768:1;21765;21761:9;21750:20;;21476:300;;;;:::o;21782:191::-;21822:4;21842:20;21860:1;21842:20;:::i;:::-;21837:25;;21876:20;21894:1;21876:20;:::i;:::-;21871:25;;21915:1;21912;21909:8;21906:2;;;21920:18;;:::i;:::-;21906:2;21965:1;21962;21958:9;21950:17;;21827:146;;;;:::o;21979:96::-;22016:7;22045:24;22063:5;22045:24;:::i;:::-;22034:35;;22024:51;;;:::o;22081:104::-;22126:7;22155:24;22173:5;22155:24;:::i;:::-;22144:35;;22134:51;;;:::o;22191:90::-;22225:7;22268:5;22261:13;22254:21;22243:32;;22233:48;;;:::o;22287:126::-;22324:7;22364:42;22357:5;22353:54;22342:65;;22332:81;;;:::o;22419:77::-;22456:7;22485:5;22474:16;;22464:32;;;:::o;22502:86::-;22537:7;22577:4;22570:5;22566:16;22555:27;;22545:43;;;:::o;22594:134::-;22652:9;22685:37;22716:5;22685:37;:::i;:::-;22672:50;;22662:66;;;:::o;22734:162::-;22802:9;22835:55;22884:5;22835:55;:::i;:::-;22822:68;;22812:84;;;:::o;22902:131::-;22970:9;23003:24;23021:5;23003:24;:::i;:::-;22990:37;;22980:53;;;:::o;23039:121::-;23097:9;23130:24;23148:5;23130:24;:::i;:::-;23117:37;;23107:53;;;:::o;23166:126::-;23216:9;23249:37;23280:5;23249:37;:::i;:::-;23236:50;;23226:66;;;:::o;23298:113::-;23348:9;23381:24;23399:5;23381:24;:::i;:::-;23368:37;;23358:53;;;:::o;23417:307::-;23485:1;23495:113;23509:6;23506:1;23503:13;23495:113;;;23594:1;23589:3;23585:11;23579:18;23575:1;23570:3;23566:11;23559:39;23531:2;23528:1;23524:10;23519:15;;23495:113;;;23626:6;23623:1;23620:13;23617:2;;;23706:1;23697:6;23692:3;23688:16;23681:27;23617:2;23466:258;;;;:::o;23730:180::-;23778:77;23775:1;23768:88;23875:4;23872:1;23865:15;23899:4;23896:1;23889:15;23916:180;23964:77;23961:1;23954:88;24061:4;24058:1;24051:15;24085:4;24082:1;24075:15;24102:180;24150:77;24147:1;24140:88;24247:4;24244:1;24237:15;24271:4;24268:1;24261:15;24288:180;24336:77;24333:1;24326:88;24433:4;24430:1;24423:15;24457:4;24454:1;24447:15;24597:117;24706:1;24703;24696:12;24720:102;24761:6;24812:2;24808:7;24803:2;24796:5;24792:14;24788:28;24778:38;;24768:54;;;:::o;24828:224::-;24968:34;24964:1;24956:6;24952:14;24945:58;25037:7;25032:2;25024:6;25020:15;25013:32;24934:118;:::o;25058:167::-;25198:19;25194:1;25186:6;25182:14;25175:43;25164:61;:::o;25231:222::-;25371:34;25367:1;25359:6;25355:14;25348:58;25440:5;25435:2;25427:6;25423:15;25416:30;25337:116;:::o;25459:177::-;25599:29;25595:1;25587:6;25583:14;25576:53;25565:71;:::o;25642:180::-;25782:32;25778:1;25770:6;25766:14;25759:56;25748:74;:::o;25828:220::-;25968:34;25964:1;25956:6;25952:14;25945:58;26037:3;26032:2;26024:6;26020:15;26013:28;25934:114;:::o;26054:156::-;26194:8;26190:1;26182:6;26178:14;26171:32;26160:50;:::o;26216:114::-;26322:8;:::o;26336:161::-;26476:13;26472:1;26464:6;26460:14;26453:37;26442:55;:::o;26503:122::-;26576:24;26594:5;26576:24;:::i;:::-;26569:5;26566:35;26556:2;;26615:1;26612;26605:12;26556:2;26546:79;:::o;26631:138::-;26712:32;26738:5;26712:32;:::i;:::-;26705:5;26702:43;26692:2;;26759:1;26756;26749:12;26692:2;26682:87;:::o;26775:116::-;26845:21;26860:5;26845:21;:::i;:::-;26838:5;26835:32;26825:2;;26881:1;26878;26871:12;26825:2;26815:76;:::o;26897:122::-;26970:24;26988:5;26970:24;:::i;:::-;26963:5;26960:35;26950:2;;27009:1;27006;26999:12;26950:2;26940:79;:::o

Swarm Source

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