ETH Price: $3,366.19 (-2.28%)
Gas: 2 Gwei

Token

Bettor (Bettor)
 

Overview

Max Total Supply

1,000,000,000 Bettor

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.951811077612796006 Bettor

Value
$0.00
0xbc6bc57eea6277729ff0eb18e169cb429a2a9d09
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:
Bettor

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-11
*/

/*

$Bettor

✨ Delivering enhanced betting experience!
🔮 Unlock Insights with our ERC-20 Token.
💰 Holders Get Exclusive Analyzed Tips.



Website: https://bettooor.bet/
Telegram: https://t.me/Bettooor
Twitter/X: https://twitter.com/BettorERC20

Refer to WhitePaper on Site or:
https://docdro.id/seiEC4T

*/
// SPDX-License-Identifier: MIT



pragma solidity ^0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }


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


    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract Bettor is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

    uint256 public tokensForMarketing;

       uint256 _buyMarketingFee = 5;
        uint256 _sellMarketingFee = 5;




    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Bettor", "Bettor") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1000000000 * 1e18;


        maxTransactionAmount = totalSupply * 1 / 100;
        maxWallet =totalSupply * 1 / 100;
        swapTokensAtAmount =100000 * 10**decimals();

        marketingWallet = address(0x1c22613EA4B179b3559aFd36825eE2e452D25D1d);
       
       

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
  
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
    
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
   
        maxWallet = newNum * (10**18);
    }


    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function manualswap(uint256 amount) external {
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    function manualsend() external {
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

        function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _marketingFee
    ) external onlyOwner {
        _buyMarketingFee = _marketingFee;
        buyTotalFees = _buyMarketingFee;
        
    }

    function updateSellFees(
        uint256 _marketingFee
    ) external onlyOwner {
        _sellMarketingFee = _marketingFee;
        sellTotalFees = _sellMarketingFee;
 
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {



              if
                ((launchedAt + deadBlocks) >= block.number)
              {
                buyMarketingFee = 40;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 40;
                sellTotalFees = sellMarketingFee;

              } else if(block.number > (launchedAt + deadBlocks) && block.number <= launchedAt + 10)
              {
                buyMarketingFee = 20;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 20;
                sellTotalFees = sellMarketingFee;
              }
              else if(block.number > (launchedAt + deadBlocks) && block.number <= launchedAt + 30)
              {
                buyMarketingFee = 5;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 20;
                sellTotalFees = sellMarketingFee;
              }
                    else if(block.number > (launchedAt + deadBlocks) && block.number <= launchedAt + 75)
              {
                buyMarketingFee = 5;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 5;
                sellTotalFees = sellMarketingFee;
              }
         
                    else
              {

                buyMarketingFee = _buyMarketingFee;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = _sellMarketingFee;
                sellTotalFees = sellMarketingFee;
              }

                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }



        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }


    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap =
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liq tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        tokensForMarketing = 0;


        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff021916908315150217905550600560135560056014553480156200006c57600080fd5b506040518060400160405280600681526020017f426574746f7200000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f426574746f7200000000000000000000000000000000000000000000000000008152508160039081620000ea919062000c91565b508060049081620000fc919062000c91565b5050506200011f62000113620004cf60201b60201c565b620004d760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200014b8160016200059d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000de2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000de2565b6040518363ffffffff1660e01b81526004016200029e92919062000e25565b6020604051808303816000875af1158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000de2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032c60a05160016200059d60201b60201c565b6200034160a05160016200068760201b60201c565b60006b033b2e3c9fd0803ce80000009050606460018262000363919062000e81565b6200036f919062000efb565b600781905550606460018262000386919062000e81565b62000392919062000efb565b600981905550620003a86200072860201b60201c565b600a620003b6919062001094565b620186a0620003c6919062000e81565b600881905550731c22613ea4b179b3559afd36825ee2e452d25d1d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000443620004356200073160201b60201c565b60016200075b60201b60201c565b620004563060016200075b60201b60201c565b6200046b61dead60016200075b60201b60201c565b6200048d6200047f6200073160201b60201c565b60016200059d60201b60201c565b620004a03060016200059d60201b60201c565b620004b561dead60016200059d60201b60201c565b620004c733826200089560201b60201c565b50506200127d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ad620004cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005d36200073160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200062c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006239062001146565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076b620004cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007916200073160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e19062001146565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000889919062001185565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000907576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fe90620011f2565b60405180910390fd5b6200091b6000838362000a0d60201b60201c565b80600260008282546200092f919062001214565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000986919062001214565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ed919062001260565b60405180910390a362000a096000838362000a1260201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9957607f821691505b60208210810362000aaf5762000aae62000a51565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ada565b62000b25868362000ada565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7262000b6c62000b668462000b3d565b62000b47565b62000b3d565b9050919050565b6000819050919050565b62000b8e8362000b51565b62000ba662000b9d8262000b79565b84845462000ae7565b825550505050565b600090565b62000bbd62000bae565b62000bca81848462000b83565b505050565b5b8181101562000bf25762000be660008262000bb3565b60018101905062000bd0565b5050565b601f82111562000c415762000c0b8162000ab5565b62000c168462000aca565b8101602085101562000c26578190505b62000c3e62000c358562000aca565b83018262000bcf565b50505b505050565b600082821c905092915050565b600062000c666000198460080262000c46565b1980831691505092915050565b600062000c81838362000c53565b9150826002028217905092915050565b62000c9c8262000a17565b67ffffffffffffffff81111562000cb85762000cb762000a22565b5b62000cc4825462000a80565b62000cd182828562000bf6565b600060209050601f83116001811462000d09576000841562000cf4578287015190505b62000d00858262000c73565b86555062000d70565b601f19841662000d198662000ab5565b60005b8281101562000d435784890151825560018201915060208501945060208101905062000d1c565b8683101562000d63578489015162000d5f601f89168262000c53565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000daa8262000d7d565b9050919050565b62000dbc8162000d9d565b811462000dc857600080fd5b50565b60008151905062000ddc8162000db1565b92915050565b60006020828403121562000dfb5762000dfa62000d78565b5b600062000e0b8482850162000dcb565b91505092915050565b62000e1f8162000d9d565b82525050565b600060408201905062000e3c600083018562000e14565b62000e4b602083018462000e14565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e8e8262000b3d565b915062000e9b8362000b3d565b925082820262000eab8162000b3d565b9150828204841483151762000ec55762000ec462000e52565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f088262000b3d565b915062000f158362000b3d565b92508262000f285762000f2762000ecc565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b600185111562000f925780860481111562000f6a5762000f6962000e52565b5b600185161562000f7a5780820291505b808102905062000f8a8562000f33565b945062000f4a565b94509492505050565b60008262000fad576001905062001080565b8162000fbd576000905062001080565b816001811462000fd6576002811462000fe15762001017565b600191505062001080565b60ff84111562000ff65762000ff562000e52565b5b8360020a91508482111562001010576200100f62000e52565b5b5062001080565b5060208310610133831016604e8410600b8410161715620010515782820a9050838111156200104b576200104a62000e52565b5b62001080565b62001060848484600162000f40565b925090508184048111156200107a576200107962000e52565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010a18262000b3d565b9150620010ae8362001087565b9250620010dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f9b565b905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200112e602083620010e5565b91506200113b82620010f6565b602082019050919050565b6000602082019050818103600083015262001161816200111f565b9050919050565b60008115159050919050565b6200117f8162001168565b82525050565b60006020820190506200119c600083018462001174565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011da601f83620010e5565b9150620011e782620011a2565b602082019050919050565b600060208201905081810360008301526200120d81620011cb565b9050919050565b6000620012218262000b3d565b91506200122e8362000b3d565b925082820190508082111562001249576200124862000e52565b5b92915050565b6200125a8162000b3d565b82525050565b60006020820190506200127760008301846200124f565b92915050565b60805160a05161412b620012bf60003960008181610dd701526114ba015260008181610b5701528181612ae901528181612bca0152612bf1015261412b6000f3fe6080604052600436106102765760003560e01c806382aa7c681161014f578063bbc0c742116100c1578063dd62ed3e1161007a578063dd62ed3e14610975578063e2f45605146109b2578063eba4c333146109dd578063f2fde38b14610a06578063f8b45b0514610a2f578063fabb0b4f14610a5a5761027d565b8063bbc0c74214610865578063c024666814610890578063c18bc195146108b9578063c8c8ebe4146108e2578063d257b34f1461090d578063d85ba0631461094a5761027d565b806395d89b411161011357806395d89b41146107315780639a7a23d61461075c578063a457c2d714610785578063a9059cbb146107c2578063aacebbe3146107ff578063b62496f5146108285761027d565b806382aa7c6814610660578063881dce60146106895780638da5cb5b146106b257806392136913146106dd578063924de9b7146107085761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610564578063715018a6146105a157806371fc4688146105b8578063751039fc146105e15780637571336a1461060c57806375f0a874146106355761027d565b806349bd5a5e146104a15780634a62bb65146104cc5780636a486a8e146104f75780636ddd1713146105225780636fc3eaec1461054d5761027d565b80631f3fed8f1161023a5780631f3fed8f1461037d578063203e727e146103a857806323b872dd146103d157806327c8f8351461040e578063313ce5671461043957806339509351146104645761027d565b806306fdde0314610282578063095ea7b3146102ad57806310d5de53146102ea5780631694505e1461032757806318160ddd146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a85565b6040516102a49190613171565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf919061322c565b610b17565b6040516102e19190613287565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906132a2565b610b35565b60405161031e9190613287565b60405180910390f35b34801561033357600080fd5b5061033c610b55565b604051610349919061332e565b60405180910390f35b34801561035e57600080fd5b50610367610b79565b6040516103749190613358565b60405180910390f35b34801561038957600080fd5b50610392610b83565b60405161039f9190613358565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190613373565b610b89565b005b3480156103dd57600080fd5b506103f860048036038101906103f391906133a0565b610c22565b6040516104059190613287565b60405180910390f35b34801561041a57600080fd5b50610423610d1a565b6040516104309190613402565b60405180910390f35b34801561044557600080fd5b5061044e610d20565b60405161045b9190613439565b60405180910390f35b34801561047057600080fd5b5061048b6004803603810190610486919061322c565b610d29565b6040516104989190613287565b60405180910390f35b3480156104ad57600080fd5b506104b6610dd5565b6040516104c39190613402565b60405180910390f35b3480156104d857600080fd5b506104e1610df9565b6040516104ee9190613287565b60405180910390f35b34801561050357600080fd5b5061050c610e0c565b6040516105199190613358565b60405180910390f35b34801561052e57600080fd5b50610537610e12565b6040516105449190613287565b60405180910390f35b34801561055957600080fd5b50610562610e25565b005b34801561057057600080fd5b5061058b600480360381019061058691906132a2565b610eb8565b6040516105989190613358565b60405180910390f35b3480156105ad57600080fd5b506105b6610f00565b005b3480156105c457600080fd5b506105df60048036038101906105da9190613373565b610f88565b005b3480156105ed57600080fd5b506105f6611017565b6040516106039190613287565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190613480565b6110b7565b005b34801561064157600080fd5b5061064a61118e565b6040516106579190613402565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190613373565b6111b4565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613373565b61127e565b005b3480156106be57600080fd5b506106c76112e1565b6040516106d49190613402565b60405180910390f35b3480156106e957600080fd5b506106f261130b565b6040516106ff9190613358565b60405180910390f35b34801561071457600080fd5b5061072f600480360381019061072a91906134c0565b611311565b005b34801561073d57600080fd5b506107466113aa565b6040516107539190613171565b60405180910390f35b34801561076857600080fd5b50610783600480360381019061077e9190613480565b61143c565b005b34801561079157600080fd5b506107ac60048036038101906107a7919061322c565b611554565b6040516107b99190613287565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e4919061322c565b61163f565b6040516107f69190613287565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906132a2565b61165d565b005b34801561083457600080fd5b5061084f600480360381019061084a91906132a2565b611799565b60405161085c9190613287565b60405180910390f35b34801561087157600080fd5b5061087a6117b9565b6040516108879190613287565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613480565b6117cc565b005b3480156108c557600080fd5b506108e060048036038101906108db9190613373565b6118f1565b005b3480156108ee57600080fd5b506108f761198a565b6040516109049190613358565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190613373565b611990565b6040516109419190613287565b60405180910390f35b34801561095657600080fd5b5061095f611a1e565b60405161096c9190613358565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906134ed565b611a24565b6040516109a99190613358565b60405180910390f35b3480156109be57600080fd5b506109c7611aab565b6040516109d49190613358565b60405180910390f35b3480156109e957600080fd5b50610a0460048036038101906109ff9190613373565b611ab1565b005b348015610a1257600080fd5b50610a2d6004803603810190610a2891906132a2565b611b40565b005b348015610a3b57600080fd5b50610a44611c37565b604051610a519190613358565b60405180910390f35b348015610a6657600080fd5b50610a6f611c3d565b604051610a7c9190613358565b60405180910390f35b606060038054610a949061355c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac09061355c565b8015610b0d5780601f10610ae257610100808354040283529160200191610b0d565b820191906000526020600020905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b6000610b2b610b24611c43565b8484611c4b565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60125481565b610b91611c43565b73ffffffffffffffffffffffffffffffffffffffff16610baf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906135d9565b60405180910390fd5b670de0b6b3a764000081610c199190613628565b60078190555050565b6000610c2f848484611e14565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c7a611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf1906136dc565b60405180910390fd5b610d0e85610d06611c43565b858403611c4b565b60019150509392505050565b61dead81565b60006012905090565b6000610dcb610d36611c43565b848460016000610d44611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc691906136fc565b611c4b565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b60105481565b600a60029054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610e6d90613761565b60006040518083038185875af1925050503d8060008114610eaa576040519150601f19603f3d011682016040523d82523d6000602084013e610eaf565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f08611c43565b73ffffffffffffffffffffffffffffffffffffffff16610f266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f73906135d9565b60405180910390fd5b610f866000612984565b565b610f90611c43565b73ffffffffffffffffffffffffffffffffffffffff16610fae6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906135d9565b60405180910390fd5b80601381905550601354600e8190555050565b6000611021611c43565b73ffffffffffffffffffffffffffffffffffffffff1661103f6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c906135d9565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b6110bf611c43565b73ffffffffffffffffffffffffffffffffffffffff166110dd6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906135d9565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111bc611c43565b73ffffffffffffffffffffffffffffffffffffffff166111da6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611227906135d9565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b61128730610eb8565b81111580156112965750600081115b6112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc906137c2565b60405180910390fd5b6112de81612a4a565b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611319611c43565b73ffffffffffffffffffffffffffffffffffffffff166113376112e1565b73ffffffffffffffffffffffffffffffffffffffff161461138d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611384906135d9565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b6060600480546113b99061355c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e59061355c565b80156114325780601f1061140757610100808354040283529160200191611432565b820191906000526020600020905b81548152906001019060200180831161141557829003601f168201915b5050505050905090565b611444611c43565b73ffffffffffffffffffffffffffffffffffffffff166114626112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af906135d9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613854565b60405180910390fd5b6115508282612c87565b5050565b60008060016000611563611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611617906138e6565b60405180910390fd5b61163461162b611c43565b85858403611c4b565b600191505092915050565b600061165361164c611c43565b8484611e14565b6001905092915050565b611665611c43565b73ffffffffffffffffffffffffffffffffffffffff166116836112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906135d9565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60176020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6117d4611c43565b73ffffffffffffffffffffffffffffffffffffffff166117f26112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f906135d9565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118e59190613287565b60405180910390a25050565b6118f9611c43565b73ffffffffffffffffffffffffffffffffffffffff166119176112e1565b73ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906135d9565b60405180910390fd5b670de0b6b3a7640000816119819190613628565b60098190555050565b60075481565b600061199a611c43565b73ffffffffffffffffffffffffffffffffffffffff166119b86112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906135d9565b60405180910390fd5b8160088190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611ab9611c43565b73ffffffffffffffffffffffffffffffffffffffff16611ad76112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906135d9565b60405180910390fd5b8060148190555060145460108190555050565b611b48611c43565b73ffffffffffffffffffffffffffffffffffffffff16611b666112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb3906135d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290613978565b60405180910390fd5b611c3481612984565b50565b60095481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb190613a0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090613a9c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e079190613358565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613b2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee990613bc0565b60405180910390fd5b60008103611f0b57611f0683836000612d28565b61297f565b600a60009054906101000a900460ff161561257357611f286112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f965750611f666112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612009575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120225750600560149054906101000a900460ff16155b156125725743600d54600b5461203891906136fc565b10612064576028600f81905550600f54600e819055506028601181905550601154601081905550612194565b600d54600b5461207491906136fc565b431180156120905750600a600b5461208c91906136fc565b4311155b156120bc576014600f81905550600f54600e819055506014601181905550601154601081905550612193565b600d54600b546120cc91906136fc565b431180156120e85750601e600b546120e491906136fc565b4311155b15612114576005600f81905550600f54600e819055506014601181905550601154601081905550612192565b600d54600b5461212491906136fc565b431180156121405750604b600b5461213c91906136fc565b4311155b1561216c576005600f81905550600f54600e819055506005601181905550601154601081905550612191565b601354600f81905550600f54600e819055506014546011819055506011546010819055505b5b5b5b600a60019054906101000a900460ff1661228957601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122495750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f90613c2c565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123d357600754811115612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d90613cbe565b60405180910390fd5b60095461238283610eb8565b8261238d91906136fc565b11156123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613d2a565b60405180910390fd5b612571565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124765750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124c5576007548111156124c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b790613dbc565b60405180910390fd5b612570565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661256f5760095461252283610eb8565b8261252d91906136fc565b111561256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613d2a565b60405180910390fd5b5b5b5b5b5b600061257e30610eb8565b9050600060085482101590508080156125a35750600a60029054906101000a900460ff165b80156125bc5750600560149054906101000a900460ff16155b80156126125750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126685750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126be5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612702576001600560146101000a81548160ff0219169083151502179055506126e6612fa7565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127b85750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127c257600090505b6000811561296f57601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561282557506000601054115b1561288c576128526064612844601054886130ab90919063ffffffff16565b6130c190919063ffffffff16565b9050601054601154826128659190613628565b61286f9190613e0b565b6012600082825461288091906136fc565b9250508190555061294b565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e757506000600e54115b1561294a576129146064612906600e54886130ab90919063ffffffff16565b6130c190919063ffffffff16565b9050600e54600f54826129279190613628565b6129319190613e0b565b6012600082825461294291906136fc565b925050819055505b5b60008111156129605761295f873083612d28565b5b808561296c9190613e3c565b94505b61297a878787612d28565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115612a6757612a66613e70565b5b604051908082528060200260200182016040528015612a955781602001602082028036833780820191505090505b5090503081600081518110612aad57612aac613e9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b769190613ee3565b81600181518110612b8a57612b89613e9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bef307f000000000000000000000000000000000000000000000000000000000000000084611c4b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c51959493929190614009565b600060405180830381600087803b158015612c6b57600080fd5b505af1158015612c7f573d6000803e3d6000fd5b505050505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e90613b2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd90613bc0565b60405180910390fd5b612e118383836130d7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8e906140d5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f2a91906136fc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f8e9190613358565b60405180910390a3612fa18484846130dc565b50505050565b6000612fb230610eb8565b905060006012549050600080831480612fcb5750600082145b15612fd8575050506130a9565b6014600854612fe79190613628565b831115613000576014600854612ffd9190613628565b92505b600083905061300e81612a4a565b6000601281905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161305c90613761565b60006040518083038185875af1925050503d8060008114613099576040519150601f19603f3d011682016040523d82523d6000602084013e61309e565b606091505b505080925050505050505b565b600081836130b99190613628565b905092915050565b600081836130cf9190613e0b565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561311b578082015181840152602081019050613100565b60008484015250505050565b6000601f19601f8301169050919050565b6000613143826130e1565b61314d81856130ec565b935061315d8185602086016130fd565b61316681613127565b840191505092915050565b6000602082019050818103600083015261318b8184613138565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c382613198565b9050919050565b6131d3816131b8565b81146131de57600080fd5b50565b6000813590506131f0816131ca565b92915050565b6000819050919050565b613209816131f6565b811461321457600080fd5b50565b60008135905061322681613200565b92915050565b6000806040838503121561324357613242613193565b5b6000613251858286016131e1565b925050602061326285828601613217565b9150509250929050565b60008115159050919050565b6132818161326c565b82525050565b600060208201905061329c6000830184613278565b92915050565b6000602082840312156132b8576132b7613193565b5b60006132c6848285016131e1565b91505092915050565b6000819050919050565b60006132f46132ef6132ea84613198565b6132cf565b613198565b9050919050565b6000613306826132d9565b9050919050565b6000613318826132fb565b9050919050565b6133288161330d565b82525050565b6000602082019050613343600083018461331f565b92915050565b613352816131f6565b82525050565b600060208201905061336d6000830184613349565b92915050565b60006020828403121561338957613388613193565b5b600061339784828501613217565b91505092915050565b6000806000606084860312156133b9576133b8613193565b5b60006133c7868287016131e1565b93505060206133d8868287016131e1565b92505060406133e986828701613217565b9150509250925092565b6133fc816131b8565b82525050565b600060208201905061341760008301846133f3565b92915050565b600060ff82169050919050565b6134338161341d565b82525050565b600060208201905061344e600083018461342a565b92915050565b61345d8161326c565b811461346857600080fd5b50565b60008135905061347a81613454565b92915050565b6000806040838503121561349757613496613193565b5b60006134a5858286016131e1565b92505060206134b68582860161346b565b9150509250929050565b6000602082840312156134d6576134d5613193565b5b60006134e48482850161346b565b91505092915050565b6000806040838503121561350457613503613193565b5b6000613512858286016131e1565b9250506020613523858286016131e1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357457607f821691505b6020821081036135875761358661352d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c36020836130ec565b91506135ce8261358d565b602082019050919050565b600060208201905081810360008301526135f2816135b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613633826131f6565b915061363e836131f6565b925082820261364c816131f6565b91508282048414831517613663576136626135f9565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136c66028836130ec565b91506136d18261366a565b604082019050919050565b600060208201905081810360008301526136f5816136b9565b9050919050565b6000613707826131f6565b9150613712836131f6565b925082820190508082111561372a576137296135f9565b5b92915050565b600081905092915050565b50565b600061374b600083613730565b91506137568261373b565b600082019050919050565b600061376c8261373e565b9150819050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b60006137ac600c836130ec565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061383e6039836130ec565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138d06025836130ec565b91506138db82613874565b604082019050919050565b600060208201905081810360008301526138ff816138c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139626026836130ec565b915061396d82613906565b604082019050919050565b6000602082019050818103600083015261399181613955565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139f46024836130ec565b91506139ff82613998565b604082019050919050565b60006020820190508181036000830152613a23816139e7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a866022836130ec565b9150613a9182613a2a565b604082019050919050565b60006020820190508181036000830152613ab581613a79565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b186025836130ec565b9150613b2382613abc565b604082019050919050565b60006020820190508181036000830152613b4781613b0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613baa6023836130ec565b9150613bb582613b4e565b604082019050919050565b60006020820190508181036000830152613bd981613b9d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c166016836130ec565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613ca86035836130ec565b9150613cb382613c4c565b604082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d146013836130ec565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613da66036836130ec565b9150613db182613d4a565b604082019050919050565b60006020820190508181036000830152613dd581613d99565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e16826131f6565b9150613e21836131f6565b925082613e3157613e30613ddc565b5b828204905092915050565b6000613e47826131f6565b9150613e52836131f6565b9250828203905081811115613e6a57613e696135f9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edd816131ca565b92915050565b600060208284031215613ef957613ef8613193565b5b6000613f0784828501613ece565b91505092915050565b6000819050919050565b6000613f35613f30613f2b84613f10565b6132cf565b6131f6565b9050919050565b613f4581613f1a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f80816131b8565b82525050565b6000613f928383613f77565b60208301905092915050565b6000602082019050919050565b6000613fb682613f4b565b613fc08185613f56565b9350613fcb83613f67565b8060005b83811015613ffc578151613fe38882613f86565b9750613fee83613f9e565b925050600181019050613fcf565b5085935050505092915050565b600060a08201905061401e6000830188613349565b61402b6020830187613f3c565b818103604083015261403d8186613fab565b905061404c60608301856133f3565b6140596080830184613349565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140bf6026836130ec565b91506140ca82614063565b604082019050919050565b600060208201905081810360008301526140ee816140b2565b905091905056fea2646970667358221220c063ef8c8c3ba9e3112051bcf67c8b73c358a72f0f5affbb8a7ed8b6eee9a3fe64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102765760003560e01c806382aa7c681161014f578063bbc0c742116100c1578063dd62ed3e1161007a578063dd62ed3e14610975578063e2f45605146109b2578063eba4c333146109dd578063f2fde38b14610a06578063f8b45b0514610a2f578063fabb0b4f14610a5a5761027d565b8063bbc0c74214610865578063c024666814610890578063c18bc195146108b9578063c8c8ebe4146108e2578063d257b34f1461090d578063d85ba0631461094a5761027d565b806395d89b411161011357806395d89b41146107315780639a7a23d61461075c578063a457c2d714610785578063a9059cbb146107c2578063aacebbe3146107ff578063b62496f5146108285761027d565b806382aa7c6814610660578063881dce60146106895780638da5cb5b146106b257806392136913146106dd578063924de9b7146107085761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610564578063715018a6146105a157806371fc4688146105b8578063751039fc146105e15780637571336a1461060c57806375f0a874146106355761027d565b806349bd5a5e146104a15780634a62bb65146104cc5780636a486a8e146104f75780636ddd1713146105225780636fc3eaec1461054d5761027d565b80631f3fed8f1161023a5780631f3fed8f1461037d578063203e727e146103a857806323b872dd146103d157806327c8f8351461040e578063313ce5671461043957806339509351146104645761027d565b806306fdde0314610282578063095ea7b3146102ad57806310d5de53146102ea5780631694505e1461032757806318160ddd146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a85565b6040516102a49190613171565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf919061322c565b610b17565b6040516102e19190613287565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906132a2565b610b35565b60405161031e9190613287565b60405180910390f35b34801561033357600080fd5b5061033c610b55565b604051610349919061332e565b60405180910390f35b34801561035e57600080fd5b50610367610b79565b6040516103749190613358565b60405180910390f35b34801561038957600080fd5b50610392610b83565b60405161039f9190613358565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190613373565b610b89565b005b3480156103dd57600080fd5b506103f860048036038101906103f391906133a0565b610c22565b6040516104059190613287565b60405180910390f35b34801561041a57600080fd5b50610423610d1a565b6040516104309190613402565b60405180910390f35b34801561044557600080fd5b5061044e610d20565b60405161045b9190613439565b60405180910390f35b34801561047057600080fd5b5061048b6004803603810190610486919061322c565b610d29565b6040516104989190613287565b60405180910390f35b3480156104ad57600080fd5b506104b6610dd5565b6040516104c39190613402565b60405180910390f35b3480156104d857600080fd5b506104e1610df9565b6040516104ee9190613287565b60405180910390f35b34801561050357600080fd5b5061050c610e0c565b6040516105199190613358565b60405180910390f35b34801561052e57600080fd5b50610537610e12565b6040516105449190613287565b60405180910390f35b34801561055957600080fd5b50610562610e25565b005b34801561057057600080fd5b5061058b600480360381019061058691906132a2565b610eb8565b6040516105989190613358565b60405180910390f35b3480156105ad57600080fd5b506105b6610f00565b005b3480156105c457600080fd5b506105df60048036038101906105da9190613373565b610f88565b005b3480156105ed57600080fd5b506105f6611017565b6040516106039190613287565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190613480565b6110b7565b005b34801561064157600080fd5b5061064a61118e565b6040516106579190613402565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190613373565b6111b4565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613373565b61127e565b005b3480156106be57600080fd5b506106c76112e1565b6040516106d49190613402565b60405180910390f35b3480156106e957600080fd5b506106f261130b565b6040516106ff9190613358565b60405180910390f35b34801561071457600080fd5b5061072f600480360381019061072a91906134c0565b611311565b005b34801561073d57600080fd5b506107466113aa565b6040516107539190613171565b60405180910390f35b34801561076857600080fd5b50610783600480360381019061077e9190613480565b61143c565b005b34801561079157600080fd5b506107ac60048036038101906107a7919061322c565b611554565b6040516107b99190613287565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e4919061322c565b61163f565b6040516107f69190613287565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906132a2565b61165d565b005b34801561083457600080fd5b5061084f600480360381019061084a91906132a2565b611799565b60405161085c9190613287565b60405180910390f35b34801561087157600080fd5b5061087a6117b9565b6040516108879190613287565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613480565b6117cc565b005b3480156108c557600080fd5b506108e060048036038101906108db9190613373565b6118f1565b005b3480156108ee57600080fd5b506108f761198a565b6040516109049190613358565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190613373565b611990565b6040516109419190613287565b60405180910390f35b34801561095657600080fd5b5061095f611a1e565b60405161096c9190613358565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906134ed565b611a24565b6040516109a99190613358565b60405180910390f35b3480156109be57600080fd5b506109c7611aab565b6040516109d49190613358565b60405180910390f35b3480156109e957600080fd5b50610a0460048036038101906109ff9190613373565b611ab1565b005b348015610a1257600080fd5b50610a2d6004803603810190610a2891906132a2565b611b40565b005b348015610a3b57600080fd5b50610a44611c37565b604051610a519190613358565b60405180910390f35b348015610a6657600080fd5b50610a6f611c3d565b604051610a7c9190613358565b60405180910390f35b606060038054610a949061355c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac09061355c565b8015610b0d5780601f10610ae257610100808354040283529160200191610b0d565b820191906000526020600020905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b6000610b2b610b24611c43565b8484611c4b565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60125481565b610b91611c43565b73ffffffffffffffffffffffffffffffffffffffff16610baf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906135d9565b60405180910390fd5b670de0b6b3a764000081610c199190613628565b60078190555050565b6000610c2f848484611e14565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c7a611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf1906136dc565b60405180910390fd5b610d0e85610d06611c43565b858403611c4b565b60019150509392505050565b61dead81565b60006012905090565b6000610dcb610d36611c43565b848460016000610d44611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc691906136fc565b611c4b565b6001905092915050565b7f000000000000000000000000909c44bbc1e0239f575bbf7cf4a7302fb6cc93c481565b600a60009054906101000a900460ff1681565b60105481565b600a60029054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610e6d90613761565b60006040518083038185875af1925050503d8060008114610eaa576040519150601f19603f3d011682016040523d82523d6000602084013e610eaf565b606091505b50508091505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f08611c43565b73ffffffffffffffffffffffffffffffffffffffff16610f266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f73906135d9565b60405180910390fd5b610f866000612984565b565b610f90611c43565b73ffffffffffffffffffffffffffffffffffffffff16610fae6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906135d9565b60405180910390fd5b80601381905550601354600e8190555050565b6000611021611c43565b73ffffffffffffffffffffffffffffffffffffffff1661103f6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c906135d9565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b6110bf611c43565b73ffffffffffffffffffffffffffffffffffffffff166110dd6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906135d9565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111bc611c43565b73ffffffffffffffffffffffffffffffffffffffff166111da6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611227906135d9565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b61128730610eb8565b81111580156112965750600081115b6112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc906137c2565b60405180910390fd5b6112de81612a4a565b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611319611c43565b73ffffffffffffffffffffffffffffffffffffffff166113376112e1565b73ffffffffffffffffffffffffffffffffffffffff161461138d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611384906135d9565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b6060600480546113b99061355c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e59061355c565b80156114325780601f1061140757610100808354040283529160200191611432565b820191906000526020600020905b81548152906001019060200180831161141557829003601f168201915b5050505050905090565b611444611c43565b73ffffffffffffffffffffffffffffffffffffffff166114626112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af906135d9565b60405180910390fd5b7f000000000000000000000000909c44bbc1e0239f575bbf7cf4a7302fb6cc93c473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613854565b60405180910390fd5b6115508282612c87565b5050565b60008060016000611563611c43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611617906138e6565b60405180910390fd5b61163461162b611c43565b85858403611c4b565b600191505092915050565b600061165361164c611c43565b8484611e14565b6001905092915050565b611665611c43565b73ffffffffffffffffffffffffffffffffffffffff166116836112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906135d9565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60176020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b6117d4611c43565b73ffffffffffffffffffffffffffffffffffffffff166117f26112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f906135d9565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118e59190613287565b60405180910390a25050565b6118f9611c43565b73ffffffffffffffffffffffffffffffffffffffff166119176112e1565b73ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906135d9565b60405180910390fd5b670de0b6b3a7640000816119819190613628565b60098190555050565b60075481565b600061199a611c43565b73ffffffffffffffffffffffffffffffffffffffff166119b86112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906135d9565b60405180910390fd5b8160088190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611ab9611c43565b73ffffffffffffffffffffffffffffffffffffffff16611ad76112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906135d9565b60405180910390fd5b8060148190555060145460108190555050565b611b48611c43565b73ffffffffffffffffffffffffffffffffffffffff16611b666112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb3906135d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290613978565b60405180910390fd5b611c3481612984565b50565b60095481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb190613a0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090613a9c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e079190613358565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613b2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee990613bc0565b60405180910390fd5b60008103611f0b57611f0683836000612d28565b61297f565b600a60009054906101000a900460ff161561257357611f286112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f965750611f666112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612009575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120225750600560149054906101000a900460ff16155b156125725743600d54600b5461203891906136fc565b10612064576028600f81905550600f54600e819055506028601181905550601154601081905550612194565b600d54600b5461207491906136fc565b431180156120905750600a600b5461208c91906136fc565b4311155b156120bc576014600f81905550600f54600e819055506014601181905550601154601081905550612193565b600d54600b546120cc91906136fc565b431180156120e85750601e600b546120e491906136fc565b4311155b15612114576005600f81905550600f54600e819055506014601181905550601154601081905550612192565b600d54600b5461212491906136fc565b431180156121405750604b600b5461213c91906136fc565b4311155b1561216c576005600f81905550600f54600e819055506005601181905550601154601081905550612191565b601354600f81905550600f54600e819055506014546011819055506011546010819055505b5b5b5b600a60019054906101000a900460ff1661228957601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122495750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f90613c2c565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123d357600754811115612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d90613cbe565b60405180910390fd5b60095461238283610eb8565b8261238d91906136fc565b11156123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613d2a565b60405180910390fd5b612571565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124765750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124c5576007548111156124c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b790613dbc565b60405180910390fd5b612570565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661256f5760095461252283610eb8565b8261252d91906136fc565b111561256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613d2a565b60405180910390fd5b5b5b5b5b5b600061257e30610eb8565b9050600060085482101590508080156125a35750600a60029054906101000a900460ff165b80156125bc5750600560149054906101000a900460ff16155b80156126125750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126685750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126be5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612702576001600560146101000a81548160ff0219169083151502179055506126e6612fa7565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127b85750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127c257600090505b6000811561296f57601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561282557506000601054115b1561288c576128526064612844601054886130ab90919063ffffffff16565b6130c190919063ffffffff16565b9050601054601154826128659190613628565b61286f9190613e0b565b6012600082825461288091906136fc565b9250508190555061294b565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e757506000600e54115b1561294a576129146064612906600e54886130ab90919063ffffffff16565b6130c190919063ffffffff16565b9050600e54600f54826129279190613628565b6129319190613e0b565b6012600082825461294291906136fc565b925050819055505b5b60008111156129605761295f873083612d28565b5b808561296c9190613e3c565b94505b61297a878787612d28565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115612a6757612a66613e70565b5b604051908082528060200260200182016040528015612a955781602001602082028036833780820191505090505b5090503081600081518110612aad57612aac613e9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b769190613ee3565b81600181518110612b8a57612b89613e9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bef307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c4b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c51959493929190614009565b600060405180830381600087803b158015612c6b57600080fd5b505af1158015612c7f573d6000803e3d6000fd5b505050505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e90613b2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd90613bc0565b60405180910390fd5b612e118383836130d7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8e906140d5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f2a91906136fc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f8e9190613358565b60405180910390a3612fa18484846130dc565b50505050565b6000612fb230610eb8565b905060006012549050600080831480612fcb5750600082145b15612fd8575050506130a9565b6014600854612fe79190613628565b831115613000576014600854612ffd9190613628565b92505b600083905061300e81612a4a565b6000601281905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161305c90613761565b60006040518083038185875af1925050503d8060008114613099576040519150601f19603f3d011682016040523d82523d6000602084013e61309e565b606091505b505080925050505050505b565b600081836130b99190613628565b905092915050565b600081836130cf9190613e0b565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561311b578082015181840152602081019050613100565b60008484015250505050565b6000601f19601f8301169050919050565b6000613143826130e1565b61314d81856130ec565b935061315d8185602086016130fd565b61316681613127565b840191505092915050565b6000602082019050818103600083015261318b8184613138565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c382613198565b9050919050565b6131d3816131b8565b81146131de57600080fd5b50565b6000813590506131f0816131ca565b92915050565b6000819050919050565b613209816131f6565b811461321457600080fd5b50565b60008135905061322681613200565b92915050565b6000806040838503121561324357613242613193565b5b6000613251858286016131e1565b925050602061326285828601613217565b9150509250929050565b60008115159050919050565b6132818161326c565b82525050565b600060208201905061329c6000830184613278565b92915050565b6000602082840312156132b8576132b7613193565b5b60006132c6848285016131e1565b91505092915050565b6000819050919050565b60006132f46132ef6132ea84613198565b6132cf565b613198565b9050919050565b6000613306826132d9565b9050919050565b6000613318826132fb565b9050919050565b6133288161330d565b82525050565b6000602082019050613343600083018461331f565b92915050565b613352816131f6565b82525050565b600060208201905061336d6000830184613349565b92915050565b60006020828403121561338957613388613193565b5b600061339784828501613217565b91505092915050565b6000806000606084860312156133b9576133b8613193565b5b60006133c7868287016131e1565b93505060206133d8868287016131e1565b92505060406133e986828701613217565b9150509250925092565b6133fc816131b8565b82525050565b600060208201905061341760008301846133f3565b92915050565b600060ff82169050919050565b6134338161341d565b82525050565b600060208201905061344e600083018461342a565b92915050565b61345d8161326c565b811461346857600080fd5b50565b60008135905061347a81613454565b92915050565b6000806040838503121561349757613496613193565b5b60006134a5858286016131e1565b92505060206134b68582860161346b565b9150509250929050565b6000602082840312156134d6576134d5613193565b5b60006134e48482850161346b565b91505092915050565b6000806040838503121561350457613503613193565b5b6000613512858286016131e1565b9250506020613523858286016131e1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357457607f821691505b6020821081036135875761358661352d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c36020836130ec565b91506135ce8261358d565b602082019050919050565b600060208201905081810360008301526135f2816135b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613633826131f6565b915061363e836131f6565b925082820261364c816131f6565b91508282048414831517613663576136626135f9565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136c66028836130ec565b91506136d18261366a565b604082019050919050565b600060208201905081810360008301526136f5816136b9565b9050919050565b6000613707826131f6565b9150613712836131f6565b925082820190508082111561372a576137296135f9565b5b92915050565b600081905092915050565b50565b600061374b600083613730565b91506137568261373b565b600082019050919050565b600061376c8261373e565b9150819050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b60006137ac600c836130ec565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061383e6039836130ec565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138d06025836130ec565b91506138db82613874565b604082019050919050565b600060208201905081810360008301526138ff816138c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139626026836130ec565b915061396d82613906565b604082019050919050565b6000602082019050818103600083015261399181613955565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139f46024836130ec565b91506139ff82613998565b604082019050919050565b60006020820190508181036000830152613a23816139e7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a866022836130ec565b9150613a9182613a2a565b604082019050919050565b60006020820190508181036000830152613ab581613a79565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b186025836130ec565b9150613b2382613abc565b604082019050919050565b60006020820190508181036000830152613b4781613b0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613baa6023836130ec565b9150613bb582613b4e565b604082019050919050565b60006020820190508181036000830152613bd981613b9d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c166016836130ec565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613ca86035836130ec565b9150613cb382613c4c565b604082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d146013836130ec565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613da66036836130ec565b9150613db182613d4a565b604082019050919050565b60006020820190508181036000830152613dd581613d99565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e16826131f6565b9150613e21836131f6565b925082613e3157613e30613ddc565b5b828204905092915050565b6000613e47826131f6565b9150613e52836131f6565b9250828203905081811115613e6a57613e696135f9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edd816131ca565b92915050565b600060208284031215613ef957613ef8613193565b5b6000613f0784828501613ece565b91505092915050565b6000819050919050565b6000613f35613f30613f2b84613f10565b6132cf565b6131f6565b9050919050565b613f4581613f1a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f80816131b8565b82525050565b6000613f928383613f77565b60208301905092915050565b6000602082019050919050565b6000613fb682613f4b565b613fc08185613f56565b9350613fcb83613f67565b8060005b83811015613ffc578151613fe38882613f86565b9750613fee83613f9e565b925050600181019050613fcf565b5085935050505092915050565b600060a08201905061401e6000830188613349565b61402b6020830187613f3c565b818103604083015261403d8186613fab565b905061404c60608301856133f3565b6140596080830184613349565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140bf6026836130ec565b91506140ca82614063565b604082019050919050565b600060208201905081810360008301526140ee816140b2565b905091905056fea2646970667358221220c063ef8c8c3ba9e3112051bcf67c8b73c358a72f0f5affbb8a7ed8b6eee9a3fe64736f6c63430008130033

Deployed Bytecode Sourcemap

15303:12277:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3000:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3914:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16286:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15379:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3321:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18784:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4091:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15482:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3220:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4591:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15437:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15728:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16024:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15808:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19790:174;;;;;;;;;;;;;:::i;:::-;;3437:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1118:103;;;;;;;;;;;;;:::i;:::-;;20484:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18453:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19049:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15574:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18202:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19610:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;893:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16059:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3108:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19976:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4814:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3572:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20865:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16358:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15768:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19420:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18920:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15613:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18582:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15950:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3755:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15655:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20676:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1231:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15695:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3000:100;3054:13;3087:5;3080:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3000:100;:::o;3914:169::-;3997:4;4014:39;4023:12;:10;:12::i;:::-;4037:7;4046:6;4014:8;:39::i;:::-;4071:4;4064:11;;3914:169;;;;:::o;16286:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15379:51::-;;;:::o;3321:108::-;3382:7;3409:12;;3402:19;;3321:108;:::o;16099:33::-;;;;:::o;18784:128::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18897:6:::1;18887;:17;;;;:::i;:::-;18864:20;:40;;;;18784:128:::0;:::o;4091:492::-;4231:4;4248:36;4258:6;4266:9;4277:6;4248:9;:36::i;:::-;4297:24;4324:11;:19;4336:6;4324:19;;;;;;;;;;;;;;;:33;4344:12;:10;:12::i;:::-;4324:33;;;;;;;;;;;;;;;;4297:60;;4396:6;4376:16;:26;;4368:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4483:57;4492:6;4500:12;:10;:12::i;:::-;4533:6;4514:16;:25;4483:8;:57::i;:::-;4571:4;4564:11;;;4091:492;;;;;:::o;15482:53::-;15528:6;15482:53;:::o;3220:93::-;3278:5;3303:2;3296:9;;3220:93;:::o;4591:215::-;4679:4;4696:80;4705:12;:10;:12::i;:::-;4719:7;4765:10;4728:11;:25;4740:12;:10;:12::i;:::-;4728:25;;;;;;;;;;;;;;;:34;4754:7;4728:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4696:8;:80::i;:::-;4794:4;4787:11;;4591:215;;;;:::o;15437:38::-;;;:::o;15728:33::-;;;;;;;;;;;;;:::o;16024:28::-;;;;:::o;15808:31::-;;;;;;;;;;;;;:::o;19790:174::-;19832:12;19877:15;;;;;;;;;;;19869:29;;19920:21;19869:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19855:101;;;;;19821:143;19790:174::o;3437:127::-;3511:7;3538:9;:18;3548:7;3538:18;;;;;;;;;;;;;;;;3531:25;;3437:127;;;:::o;1118:103::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1183:30:::1;1210:1;1183:18;:30::i;:::-;1118:103::o:0;20484:184::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:13:::1;20576:16;:32;;;;20634:16;;20619:12;:31;;;;20484:184:::0;:::o;18453:121::-;18505:4;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18539:5:::1;18522:14;;:22;;;;;;;;;;;;;;;;;;18562:4;18555:11;;18453:121:::0;:::o;19049:167::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19204:4:::1;19162:31;:39;19194:6;19162:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19049:167:::0;;:::o;15574:30::-;;;;;;;;;;;;;:::o;18202:243::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18289:11:::1;18276:10;:24;;;;18327:4;18311:13;;:20;;;;;;;;;;;;;;;;;;18356:4;18342:11;;:18;;;;;;;;;;;;;;;;;;18384:12;18371:10;:25;;;;18422:15;18407:12;:30;;;;18202:243:::0;:::o;19610:172::-;19684:24;19702:4;19684:9;:24::i;:::-;19674:6;:34;;:48;;;;;19721:1;19712:6;:10;19674:48;19666:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19750:24;19767:6;19750:16;:24::i;:::-;19610:172;:::o;893:87::-;939:7;966:6;;;;;;;;;;;959:13;;893:87;:::o;16059:31::-;;;;:::o;19312:100::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19397:7:::1;19383:11;;:21;;;;;;;;;;;;;;;;;;19312:100:::0;:::o;3108:104::-;3164:13;3197:7;3190:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3108:104;:::o;19976:304::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20120:13:::1;20112:21;;:4;:21;;::::0;20090:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20231:41;20260:4;20266:5;20231:28;:41::i;:::-;19976:304:::0;;:::o;4814:413::-;4907:4;4924:24;4951:11;:25;4963:12;:10;:12::i;:::-;4951:25;;;;;;;;;;;;;;;:34;4977:7;4951:34;;;;;;;;;;;;;;;;4924:61;;5024:15;5004:16;:35;;4996:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5117:67;5126:12;:10;:12::i;:::-;5140:7;5168:15;5149:16;:34;5117:8;:67::i;:::-;5215:4;5208:11;;;4814:413;;;;:::o;3572:175::-;3658:4;3675:42;3685:12;:10;:12::i;:::-;3699:9;3710:6;3675:9;:42::i;:::-;3735:4;3728:11;;3572:175;;;;:::o;20865:231::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21025:15:::1;;;;;;;;;;;20982:59;;21005:18;20982:59;;;;;;;;;;;;21070:18;21052:15;;:36;;;;;;;;;;;;;;;;;;20865:231:::0;:::o;16358:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15768:33::-;;;;;;;;;;;;;:::o;19420:182::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19536:8:::1;19505:19;:28;19525:7;19505:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19576:7;19560:34;;;19585:8;19560:34;;;;;;:::i;:::-;;;;;;;;19420:182:::0;;:::o;18920:119::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19024:6:::1;19014;:17;;;;:::i;:::-;19002:9;:29;;;;18920:119:::0;:::o;15613:35::-;;;;:::o;18582:194::-;18690:4;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18737:9:::1;18716:18;:30;;;;18764:4;18757:11;;18582:194:::0;;;:::o;15950:27::-;;;;:::o;3755:151::-;3844:7;3871:11;:18;3883:5;3871:18;;;;;;;;;;;;;;;:27;3890:7;3871:27;;;;;;;;;;;;;;;;3864:34;;3755:151;;;;:::o;15655:33::-;;;;:::o;20676:181::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20789:13:::1;20769:17;:33;;;;20829:17;;20813:13;:33;;;;20676:181:::0;:::o;1231:201::-;1041:12;:10;:12::i;:::-;1030:23;;:7;:5;:7::i;:::-;:23;;;1022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1340:1:::1;1320:22;;:8;:22;;::::0;1312:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1396:28;1415:8;1396:18;:28::i;:::-;1231:201:::0;:::o;15695:24::-;;;;:::o;15916:25::-;;;;:::o;433:98::-;486:7;513:10;506:17;;433:98;:::o;6982:380::-;7135:1;7118:19;;:5;:19;;;7110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7216:1;7197:21;;:7;:21;;;7189:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7300:6;7270:11;:18;7282:5;7270:18;;;;;;;;;;;;;;;:27;7289:7;7270:27;;;;;;;;;;;;;;;:36;;;;7338:7;7322:32;;7331:5;7322:32;;;7347:6;7322:32;;;;;;:::i;:::-;;;;;;;;6982:380;;;:::o;21104:5148::-;21252:1;21236:18;;:4;:18;;;21228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21329:1;21315:16;;:2;:16;;;21307:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21398:1;21388:6;:11;21384:93;;21416:28;21432:4;21438:2;21442:1;21416:15;:28::i;:::-;21459:7;;21384:93;21493:14;;;;;;;;;;;21489:3214;;;21554:7;:5;:7::i;:::-;21546:15;;:4;:15;;;;:49;;;;;21588:7;:5;:7::i;:::-;21582:13;;:2;:13;;;;21546:49;:86;;;;;21630:1;21616:16;;:2;:16;;;;21546:86;:128;;;;;21667:6;21653:21;;:2;:21;;;;21546:128;:158;;;;;21696:8;;;;;;;;;;;21695:9;21546:158;21524:3168;;;21793:12;21778:10;;21765;;:23;;;;:::i;:::-;21764:41;21743:1496;;21859:2;21841:15;:20;;;;21895:15;;21880:12;:30;;;;21950:2;21931:16;:21;;;;21987:16;;21971:13;:32;;;;21743:1496;;;22061:10;;22048;;:23;;;;:::i;:::-;22032:12;:40;:75;;;;;22105:2;22092:10;;:15;;;;:::i;:::-;22076:12;:31;;22032:75;22029:1210;;;22161:2;22143:15;:20;;;;22197:15;;22182:12;:30;;;;22252:2;22233:16;:21;;;;22289:16;;22273:13;:32;;;;22029:1210;;;22376:10;;22363;;:23;;;;:::i;:::-;22347:12;:40;:75;;;;;22420:2;22407:10;;:15;;;;:::i;:::-;22391:12;:31;;22347:75;22344:895;;;22476:1;22458:15;:19;;;;22511:15;;22496:12;:30;;;;22566:2;22547:16;:21;;;;22603:16;;22587:13;:32;;;;22344:895;;;22696:10;;22683;;:23;;;;:::i;:::-;22667:12;:40;:75;;;;;22740:2;22727:10;;:15;;;;:::i;:::-;22711:12;:31;;22667:75;22664:575;;;22796:1;22778:15;:19;;;;22831:15;;22816:12;:30;;;;22886:1;22867:16;:20;;;;22922:16;;22906:13;:32;;;;22664:575;;;23048:16;;23030:15;:34;;;;23098:15;;23083:12;:30;;;;23153:17;;23134:16;:36;;;;23205:16;;23189:13;:32;;;;22664:575;22344:895;22029:1210;21743:1496;23264:13;;;;;;;;;;;23259:223;;23336:19;:25;23356:4;23336:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23365:19;:23;23385:2;23365:23;;;;;;;;;;;;;;;;;;;;;;;;;23336:52;23302:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;23259:223;23556:25;:31;23582:4;23556:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23613:31;:35;23645:2;23613:35;;;;;;;;;;;;;;;;;;;;;;;;;23612:36;23556:92;23530:1147;;;23735:20;;23725:6;:30;;23691:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;23943:9;;23926:13;23936:2;23926:9;:13::i;:::-;23917:6;:22;;;;:::i;:::-;:35;;23883:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23530:1147;;;24121:25;:29;24147:2;24121:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;24176:31;:37;24208:4;24176:37;;;;;;;;;;;;;;;;;;;;;;;;;24175:38;24121:92;24095:582;;;24300:20;;24290:6;:30;;24256:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;24095:582;;;24457:31;:35;24489:2;24457:35;;;;;;;;;;;;;;;;;;;;;;;;;24452:225;;24577:9;;24560:13;24570:2;24560:9;:13::i;:::-;24551:6;:22;;;;:::i;:::-;:35;;24517:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24452:225;24095:582;23530:1147;21524:3168;21489:3214;24719:28;24750:24;24768:4;24750:9;:24::i;:::-;24719:55;;24787:12;24826:18;;24802:20;:42;;24787:57;;24875:7;:35;;;;;24899:11;;;;;;;;;;;24875:35;:61;;;;;24928:8;;;;;;;;;;;24927:9;24875:61;:110;;;;;24954:25;:31;24980:4;24954:31;;;;;;;;;;;;;;;;;;;;;;;;;24953:32;24875:110;:153;;;;;25003:19;:25;25023:4;25003:25;;;;;;;;;;;;;;;;;;;;;;;;;25002:26;24875:153;:194;;;;;25046:19;:23;25066:2;25046:23;;;;;;;;;;;;;;;;;;;;;;;;;25045:24;24875:194;24857:326;;;25107:4;25096:8;;:15;;;;;;;;;;;;;;;;;;25128:10;:8;:10::i;:::-;25166:5;25155:8;;:16;;;;;;;;;;;;;;;;;;24857:326;25195:12;25211:8;;;;;;;;;;;25210:9;25195:24;;25321:19;:25;25341:4;25321:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25350:19;:23;25370:2;25350:23;;;;;;;;;;;;;;;;;;;;;;;;;25321:52;25317:100;;;25400:5;25390:15;;25317:100;25429:12;25534:7;25530:669;;;25586:25;:29;25612:2;25586:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25635:1;25619:13;;:17;25586:50;25582:468;;;25664:34;25694:3;25664:25;25675:13;;25664:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25657:41;;25767:13;;25747:16;;25740:4;:23;;;;:::i;:::-;25739:41;;;;:::i;:::-;25717:18;;:63;;;;;;;:::i;:::-;;;;;;;;25582:468;;;25842:25;:31;25868:4;25842:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25892:1;25877:12;;:16;25842:51;25838:212;;;25921:33;25950:3;25921:24;25932:12;;25921:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25914:40;;26022:12;;26003:15;;25996:4;:22;;;;:::i;:::-;25995:39;;;;:::i;:::-;25973:18;;:61;;;;;;;:::i;:::-;;;;;;;;25838:212;25582:468;26077:1;26070:4;:8;26066:91;;;26099:42;26115:4;26129;26136;26099:15;:42::i;:::-;26066:91;26183:4;26173:14;;;;;:::i;:::-;;;25530:669;26211:33;26227:4;26233:2;26237:6;26211:15;:33::i;:::-;21217:5035;;;;21104:5148;;;;:::o;1440:191::-;1514:16;1533:6;;;;;;;;;;;1514:25;;1559:8;1550:6;;:17;;;;;;;;;;;;;;;;;;1614:8;1583:40;;1604:8;1583:40;;;;;;;;;;;;1503:128;1440:191;:::o;26260:589::-;26386:21;26424:1;26410:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26386:40;;26455:4;26437;26442:1;26437:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26481:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26471:4;26476:1;26471:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26516:62;26533:4;26548:15;26566:11;26516:8;:62::i;:::-;26617:15;:66;;;26698:11;26724:1;26768:4;26795;26815:15;26617:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26315:534;26260:589;:::o;20288:188::-;20405:5;20371:25;:31;20397:4;20371:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20462:5;20428:40;;20456:4;20428:40;;;;;;;;;;;;20288:188;;:::o;5235:733::-;5393:1;5375:20;;:6;:20;;;5367:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5477:1;5456:23;;:9;:23;;;5448:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5532:47;5553:6;5561:9;5572:6;5532:20;:47::i;:::-;5592:21;5616:9;:17;5626:6;5616:17;;;;;;;;;;;;;;;;5592:41;;5669:6;5652:13;:23;;5644:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5790:6;5774:13;:22;5754:9;:17;5764:6;5754:17;;;;;;;;;;;;;;;:42;;;;5842:6;5818:9;:20;5828:9;5818:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5883:9;5866:35;;5875:6;5866:35;;;5894:6;5866:35;;;;;;:::i;:::-;;;;;;;;5914:46;5934:6;5942:9;5953:6;5914:19;:46::i;:::-;5356:612;5235:733;;;:::o;26859:716::-;26898:23;26924:24;26942:4;26924:9;:24::i;:::-;26898:50;;26959:25;27000:18;;26959:59;;27029:12;27077:1;27058:15;:20;:46;;;;27103:1;27082:17;:22;27058:46;27054:85;;;27121:7;;;;;27054:85;27194:2;27173:18;;:23;;;;:::i;:::-;27155:15;:41;27151:115;;;27252:2;27231:18;;:23;;;;:::i;:::-;27213:41;;27151:115;27323:26;27352:15;27323:44;;27380:36;27397:18;27380:16;:36::i;:::-;27450:1;27429:18;:22;;;;27488:15;;;;;;;;;;;27480:29;;27531:21;27480:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27466:101;;;;;26887:688;;;;26859:716;:::o;8988:98::-;9046:7;9077:1;9073;:5;;;;:::i;:::-;9066:12;;8988:98;;;;:::o;9094:::-;9152:7;9183:1;9179;:5;;;;:::i;:::-;9172:12;;9094:98;;;;:::o;7370:125::-;;;;:::o;7503:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:323::-;7644:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:119;;;7699:79;;:::i;:::-;7661:119;7819:1;7844:50;7886:7;7877:6;7866:9;7862:22;7844:50;:::i;:::-;7834:60;;7790:114;7588:323;;;;:::o;7917:474::-;7985:6;7993;8042:2;8030:9;8021:7;8017:23;8013:32;8010:119;;;8048:79;;:::i;:::-;8010:119;8168:1;8193:53;8238:7;8229:6;8218:9;8214:22;8193:53;:::i;:::-;8183:63;;8139:117;8295:2;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8266:118;7917:474;;;;;:::o;8397:180::-;8445:77;8442:1;8435:88;8542:4;8539:1;8532:15;8566:4;8563:1;8556:15;8583:320;8627:6;8664:1;8658:4;8654:12;8644:22;;8711:1;8705:4;8701:12;8732:18;8722:81;;8788:4;8780:6;8776:17;8766:27;;8722:81;8850:2;8842:6;8839:14;8819:18;8816:38;8813:84;;8869:18;;:::i;:::-;8813:84;8634:269;8583:320;;;:::o;8909:182::-;9049:34;9045:1;9037:6;9033:14;9026:58;8909:182;:::o;9097:366::-;9239:3;9260:67;9324:2;9319:3;9260:67;:::i;:::-;9253:74;;9336:93;9425:3;9336:93;:::i;:::-;9454:2;9449:3;9445:12;9438:19;;9097:366;;;:::o;9469:419::-;9635:4;9673:2;9662:9;9658:18;9650:26;;9722:9;9716:4;9712:20;9708:1;9697:9;9693:17;9686:47;9750:131;9876:4;9750:131;:::i;:::-;9742:139;;9469:419;;;:::o;9894:180::-;9942:77;9939:1;9932:88;10039:4;10036:1;10029:15;10063:4;10060:1;10053:15;10080:410;10120:7;10143:20;10161:1;10143:20;:::i;:::-;10138:25;;10177:20;10195:1;10177:20;:::i;:::-;10172:25;;10232:1;10229;10225:9;10254:30;10272:11;10254:30;:::i;:::-;10243:41;;10433:1;10424:7;10420:15;10417:1;10414:22;10394:1;10387:9;10367:83;10344:139;;10463:18;;:::i;:::-;10344:139;10128:362;10080:410;;;;:::o;10496:227::-;10636:34;10632:1;10624:6;10620:14;10613:58;10705:10;10700:2;10692:6;10688:15;10681:35;10496:227;:::o;10729:366::-;10871:3;10892:67;10956:2;10951:3;10892:67;:::i;:::-;10885:74;;10968:93;11057:3;10968:93;:::i;:::-;11086:2;11081:3;11077:12;11070:19;;10729:366;;;:::o;11101:419::-;11267:4;11305:2;11294:9;11290:18;11282:26;;11354:9;11348:4;11344:20;11340:1;11329:9;11325:17;11318:47;11382:131;11508:4;11382:131;:::i;:::-;11374:139;;11101:419;;;:::o;11526:191::-;11566:3;11585:20;11603:1;11585:20;:::i;:::-;11580:25;;11619:20;11637:1;11619:20;:::i;:::-;11614:25;;11662:1;11659;11655:9;11648:16;;11683:3;11680:1;11677:10;11674:36;;;11690:18;;:::i;:::-;11674:36;11526:191;;;;:::o;11723:147::-;11824:11;11861:3;11846:18;;11723:147;;;;:::o;11876:114::-;;:::o;11996:398::-;12155:3;12176:83;12257:1;12252:3;12176:83;:::i;:::-;12169:90;;12268:93;12357:3;12268:93;:::i;:::-;12386:1;12381:3;12377:11;12370:18;;11996:398;;;:::o;12400:379::-;12584:3;12606:147;12749:3;12606:147;:::i;:::-;12599:154;;12770:3;12763:10;;12400:379;;;:::o;12785:162::-;12925:14;12921:1;12913:6;12909:14;12902:38;12785:162;:::o;12953:366::-;13095:3;13116:67;13180:2;13175:3;13116:67;:::i;:::-;13109:74;;13192:93;13281:3;13192:93;:::i;:::-;13310:2;13305:3;13301:12;13294:19;;12953:366;;;:::o;13325:419::-;13491:4;13529:2;13518:9;13514:18;13506:26;;13578:9;13572:4;13568:20;13564:1;13553:9;13549:17;13542:47;13606:131;13732:4;13606:131;:::i;:::-;13598:139;;13325:419;;;:::o;13750:244::-;13890:34;13886:1;13878:6;13874:14;13867:58;13959:27;13954:2;13946:6;13942:15;13935:52;13750:244;:::o;14000:366::-;14142:3;14163:67;14227:2;14222:3;14163:67;:::i;:::-;14156:74;;14239:93;14328:3;14239:93;:::i;:::-;14357:2;14352:3;14348:12;14341:19;;14000:366;;;:::o;14372:419::-;14538:4;14576:2;14565:9;14561:18;14553:26;;14625:9;14619:4;14615:20;14611:1;14600:9;14596:17;14589:47;14653:131;14779:4;14653:131;:::i;:::-;14645:139;;14372:419;;;:::o;14797:224::-;14937:34;14933:1;14925:6;14921:14;14914:58;15006:7;15001:2;14993:6;14989:15;14982:32;14797:224;:::o;15027:366::-;15169:3;15190:67;15254:2;15249:3;15190:67;:::i;:::-;15183:74;;15266:93;15355:3;15266:93;:::i;:::-;15384:2;15379:3;15375:12;15368:19;;15027:366;;;:::o;15399:419::-;15565:4;15603:2;15592:9;15588:18;15580:26;;15652:9;15646:4;15642:20;15638:1;15627:9;15623:17;15616:47;15680:131;15806:4;15680:131;:::i;:::-;15672:139;;15399:419;;;:::o;15824:225::-;15964:34;15960:1;15952:6;15948:14;15941:58;16033:8;16028:2;16020:6;16016:15;16009:33;15824:225;:::o;16055:366::-;16197:3;16218:67;16282:2;16277:3;16218:67;:::i;:::-;16211:74;;16294:93;16383:3;16294:93;:::i;:::-;16412:2;16407:3;16403:12;16396:19;;16055:366;;;:::o;16427:419::-;16593:4;16631:2;16620:9;16616:18;16608:26;;16680:9;16674:4;16670:20;16666:1;16655:9;16651:17;16644:47;16708:131;16834:4;16708:131;:::i;:::-;16700:139;;16427:419;;;:::o;16852:223::-;16992:34;16988:1;16980:6;16976:14;16969:58;17061:6;17056:2;17048:6;17044:15;17037:31;16852:223;:::o;17081:366::-;17223:3;17244:67;17308:2;17303:3;17244:67;:::i;:::-;17237:74;;17320:93;17409:3;17320:93;:::i;:::-;17438:2;17433:3;17429:12;17422:19;;17081:366;;;:::o;17453:419::-;17619:4;17657:2;17646:9;17642:18;17634:26;;17706:9;17700:4;17696:20;17692:1;17681:9;17677:17;17670:47;17734:131;17860:4;17734:131;:::i;:::-;17726:139;;17453:419;;;:::o;17878:221::-;18018:34;18014:1;18006:6;18002:14;17995:58;18087:4;18082:2;18074:6;18070:15;18063:29;17878:221;:::o;18105:366::-;18247:3;18268:67;18332:2;18327:3;18268:67;:::i;:::-;18261:74;;18344:93;18433:3;18344:93;:::i;:::-;18462:2;18457:3;18453:12;18446:19;;18105:366;;;:::o;18477:419::-;18643:4;18681:2;18670:9;18666:18;18658:26;;18730:9;18724:4;18720:20;18716:1;18705:9;18701:17;18694:47;18758:131;18884:4;18758:131;:::i;:::-;18750:139;;18477:419;;;:::o;18902:224::-;19042:34;19038:1;19030:6;19026:14;19019:58;19111:7;19106:2;19098:6;19094:15;19087:32;18902:224;:::o;19132:366::-;19274:3;19295:67;19359:2;19354:3;19295:67;:::i;:::-;19288:74;;19371:93;19460:3;19371:93;:::i;:::-;19489:2;19484:3;19480:12;19473:19;;19132:366;;;:::o;19504:419::-;19670:4;19708:2;19697:9;19693:18;19685:26;;19757:9;19751:4;19747:20;19743:1;19732:9;19728:17;19721:47;19785:131;19911:4;19785:131;:::i;:::-;19777:139;;19504:419;;;:::o;19929:222::-;20069:34;20065:1;20057:6;20053:14;20046:58;20138:5;20133:2;20125:6;20121:15;20114:30;19929:222;:::o;20157:366::-;20299:3;20320:67;20384:2;20379:3;20320:67;:::i;:::-;20313:74;;20396:93;20485:3;20396:93;:::i;:::-;20514:2;20509:3;20505:12;20498:19;;20157:366;;;:::o;20529:419::-;20695:4;20733:2;20722:9;20718:18;20710:26;;20782:9;20776:4;20772:20;20768:1;20757:9;20753:17;20746:47;20810:131;20936:4;20810:131;:::i;:::-;20802:139;;20529:419;;;:::o;20954:172::-;21094:24;21090:1;21082:6;21078:14;21071:48;20954:172;:::o;21132:366::-;21274:3;21295:67;21359:2;21354:3;21295:67;:::i;:::-;21288:74;;21371:93;21460:3;21371:93;:::i;:::-;21489:2;21484:3;21480:12;21473:19;;21132:366;;;:::o;21504:419::-;21670:4;21708:2;21697:9;21693:18;21685:26;;21757:9;21751:4;21747:20;21743:1;21732:9;21728:17;21721:47;21785:131;21911:4;21785:131;:::i;:::-;21777:139;;21504:419;;;:::o;21929:240::-;22069:34;22065:1;22057:6;22053:14;22046:58;22138:23;22133:2;22125:6;22121:15;22114:48;21929:240;:::o;22175:366::-;22317:3;22338:67;22402:2;22397:3;22338:67;:::i;:::-;22331:74;;22414:93;22503:3;22414:93;:::i;:::-;22532:2;22527:3;22523:12;22516:19;;22175:366;;;:::o;22547:419::-;22713:4;22751:2;22740:9;22736:18;22728:26;;22800:9;22794:4;22790:20;22786:1;22775:9;22771:17;22764:47;22828:131;22954:4;22828:131;:::i;:::-;22820:139;;22547:419;;;:::o;22972:169::-;23112:21;23108:1;23100:6;23096:14;23089:45;22972:169;:::o;23147:366::-;23289:3;23310:67;23374:2;23369:3;23310:67;:::i;:::-;23303:74;;23386:93;23475:3;23386:93;:::i;:::-;23504:2;23499:3;23495:12;23488:19;;23147:366;;;:::o;23519:419::-;23685:4;23723:2;23712:9;23708:18;23700:26;;23772:9;23766:4;23762:20;23758:1;23747:9;23743:17;23736:47;23800:131;23926:4;23800:131;:::i;:::-;23792:139;;23519:419;;;:::o;23944:241::-;24084:34;24080:1;24072:6;24068:14;24061:58;24153:24;24148:2;24140:6;24136:15;24129:49;23944:241;:::o;24191:366::-;24333:3;24354:67;24418:2;24413:3;24354:67;:::i;:::-;24347:74;;24430:93;24519:3;24430:93;:::i;:::-;24548:2;24543:3;24539:12;24532:19;;24191:366;;;:::o;24563:419::-;24729:4;24767:2;24756:9;24752:18;24744:26;;24816:9;24810:4;24806:20;24802:1;24791:9;24787:17;24780:47;24844:131;24970:4;24844:131;:::i;:::-;24836:139;;24563:419;;;:::o;24988:180::-;25036:77;25033:1;25026:88;25133:4;25130:1;25123:15;25157:4;25154:1;25147:15;25174:185;25214:1;25231:20;25249:1;25231:20;:::i;:::-;25226:25;;25265:20;25283:1;25265:20;:::i;:::-;25260:25;;25304:1;25294:35;;25309:18;;:::i;:::-;25294:35;25351:1;25348;25344:9;25339:14;;25174:185;;;;:::o;25365:194::-;25405:4;25425:20;25443:1;25425:20;:::i;:::-;25420:25;;25459:20;25477:1;25459:20;:::i;:::-;25454:25;;25503:1;25500;25496:9;25488:17;;25527:1;25521:4;25518:11;25515:37;;;25532:18;;:::i;:::-;25515:37;25365:194;;;;:::o;25565:180::-;25613:77;25610:1;25603:88;25710:4;25707:1;25700:15;25734:4;25731:1;25724:15;25751:180;25799:77;25796:1;25789:88;25896:4;25893:1;25886:15;25920:4;25917:1;25910:15;25937:143;25994:5;26025:6;26019:13;26010:22;;26041:33;26068:5;26041:33;:::i;:::-;25937:143;;;;:::o;26086:351::-;26156:6;26205:2;26193:9;26184:7;26180:23;26176:32;26173:119;;;26211:79;;:::i;:::-;26173:119;26331:1;26356:64;26412:7;26403:6;26392:9;26388:22;26356:64;:::i;:::-;26346:74;;26302:128;26086:351;;;;:::o;26443:85::-;26488:7;26517:5;26506:16;;26443:85;;;:::o;26534:158::-;26592:9;26625:61;26643:42;26652:32;26678:5;26652:32;:::i;:::-;26643:42;:::i;:::-;26625:61;:::i;:::-;26612:74;;26534:158;;;:::o;26698:147::-;26793:45;26832:5;26793:45;:::i;:::-;26788:3;26781:58;26698:147;;:::o;26851:114::-;26918:6;26952:5;26946:12;26936:22;;26851:114;;;:::o;26971:184::-;27070:11;27104:6;27099:3;27092:19;27144:4;27139:3;27135:14;27120:29;;26971:184;;;;:::o;27161:132::-;27228:4;27251:3;27243:11;;27281:4;27276:3;27272:14;27264:22;;27161:132;;;:::o;27299:108::-;27376:24;27394:5;27376:24;:::i;:::-;27371:3;27364:37;27299:108;;:::o;27413:179::-;27482:10;27503:46;27545:3;27537:6;27503:46;:::i;:::-;27581:4;27576:3;27572:14;27558:28;;27413:179;;;;:::o;27598:113::-;27668:4;27700;27695:3;27691:14;27683:22;;27598:113;;;:::o;27747:732::-;27866:3;27895:54;27943:5;27895:54;:::i;:::-;27965:86;28044:6;28039:3;27965:86;:::i;:::-;27958:93;;28075:56;28125:5;28075:56;:::i;:::-;28154:7;28185:1;28170:284;28195:6;28192:1;28189:13;28170:284;;;28271:6;28265:13;28298:63;28357:3;28342:13;28298:63;:::i;:::-;28291:70;;28384:60;28437:6;28384:60;:::i;:::-;28374:70;;28230:224;28217:1;28214;28210:9;28205:14;;28170:284;;;28174:14;28470:3;28463:10;;27871:608;;;27747:732;;;;:::o;28485:831::-;28748:4;28786:3;28775:9;28771:19;28763:27;;28800:71;28868:1;28857:9;28853:17;28844:6;28800:71;:::i;:::-;28881:80;28957:2;28946:9;28942:18;28933:6;28881:80;:::i;:::-;29008:9;29002:4;28998:20;28993:2;28982:9;28978:18;28971:48;29036:108;29139:4;29130:6;29036:108;:::i;:::-;29028:116;;29154:72;29222:2;29211:9;29207:18;29198:6;29154:72;:::i;:::-;29236:73;29304:3;29293:9;29289:19;29280:6;29236:73;:::i;:::-;28485:831;;;;;;;;:::o;29322:225::-;29462:34;29458:1;29450:6;29446:14;29439:58;29531:8;29526:2;29518:6;29514:15;29507:33;29322:225;:::o;29553:366::-;29695:3;29716:67;29780:2;29775:3;29716:67;:::i;:::-;29709:74;;29792:93;29881:3;29792:93;:::i;:::-;29910:2;29905:3;29901:12;29894:19;;29553:366;;;:::o;29925:419::-;30091:4;30129:2;30118:9;30114:18;30106:26;;30178:9;30172:4;30168:20;30164:1;30153:9;30149:17;30142:47;30206:131;30332:4;30206:131;:::i;:::-;30198:139;;29925:419;;;:::o

Swarm Source

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