ETH Price: $2,440.21 (-3.27%)

Token

RealtyAI (RTAI)
 

Overview

Max Total Supply

100,000,000 RTAI

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
850,000 RTAI

Value
$0.00
0x44a9e09778b606e73d649fb696081b0690d5d2a9
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:
RealtyAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-26
*/

/**
Channel     : https://t.me/realtyaiETH
Website     : http://realty-ai.org/
Twitter/x   : https://twitter.com/realtyaiETH
Whitepaper 	: https://docs.realty-ai.org/
Youtube     : www.youtube.com/@Realty_AI

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(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 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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 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 IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 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 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;
}

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

    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 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;

    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;
}

contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public bExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private bSwapping;

    struct StartTradingRequest {
        uint256 deadline;
    }

    mapping(address => bool) private blackList;
    
    constructor(address _devWallet, address _marketingWallet, address _swapRouter) ERC20("RealtyAI", "RTAI"){
        devWallet = address(_devWallet);
        marketingWallet = address(_marketingWallet);


        swapRouter = IUniswapV2Router02(_swapRouter);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        bExcludedMaxTokenAmountPerTxn[owner()] = true;
        bExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet
        maxTokenAmountPerTxn = (totalSupply * 2) / 200; // 1% from total supply max transaction amount
        maxTokenAmountPerWallet = (totalSupply * 2) / 200;  // 1% from total supply max wallet amount
        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        bExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 10;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 10;
        buyDevTax = 10;
        buyTotalTax = buyMarketingTax + buyDevTax;


        _mint(msg.sender, totalSupply);
    }

    function updateDevWallet(address _devWallet) external onlyOwner {
        devWallet = _devWallet;
    }

    function updateMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function enableTrading() external {
        require(tx.origin == owner(), "Only owner can enable trading");
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
    	external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 40, "Must keep tax at 40% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 40, "Must keep tax at 40% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 20)
            tokenBalance = minSwapTokenAmount * 20;

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

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

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

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

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !automatedMarketMakerPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    receive() external payable {}

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

        _approve(address(this), address(swapRouter), amount);

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

    function withdrawEthPool() external onlyOwner() {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function emergencyWithdrawToken(address tokenAddress) external onlyOwner() {
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        token.transfer(msg.sender, balance);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_swapRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEthPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff02191690831515021790555034801561005c575f80fd5b50604051615cc5380380615cc5833981810160405281019061007e9190610aef565b6040518060400160405280600881526020017f5265616c747941490000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5254414900000000000000000000000000000000000000000000000000000000815250815f90816100f89190610d79565b5080600190816101089190610d79565b50505061012761011c61082960201b60201c565b61083060201b60201c565b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102769190610e48565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103209190610e48565b6040518363ffffffff1660e01b815260040161033d929190610e82565b6020604051808303815f875af1158015610359573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d9190610e48565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f6103cf6108f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f61048261091b60201b60201c565b600a61048e9190611011565b6305f5e10061049d919061105b565b9050619c406005826104af919061105b565b6104b991906110c9565b60088190555060c86002826104ce919061105b565b6104d891906110c9565b600a8190555060c86002826104ed919061105b565b6104f791906110c9565b600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6105656108f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a601481905550600a6015819055506015546014546107e491906110f9565b601381905550600a601781905550600a60188190555060185460175461080a91906110f9565b601681905550610820338261092360201b60201c565b505050506111cc565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098890611186565b60405180910390fd5b6109a25f8383610a8760201b60201c565b8060025f8282546109b391906110f9565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a0691906110f9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a6a91906111b3565b60405180910390a3610a835f8383610a8c60201b60201c565b5050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610abe82610a95565b9050919050565b610ace81610ab4565b8114610ad8575f80fd5b50565b5f81519050610ae981610ac5565b92915050565b5f805f60608486031215610b0657610b05610a91565b5b5f610b1386828701610adb565b9350506020610b2486828701610adb565b9250506040610b3586828701610adb565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610bba57607f821691505b602082108103610bcd57610bcc610b76565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610c2f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610bf4565b610c398683610bf4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c7d610c78610c7384610c51565b610c5a565b610c51565b9050919050565b5f819050919050565b610c9683610c63565b610caa610ca282610c84565b848454610c00565b825550505050565b5f90565b610cbe610cb2565b610cc9818484610c8d565b505050565b5b81811015610cec57610ce15f82610cb6565b600181019050610ccf565b5050565b601f821115610d3157610d0281610bd3565b610d0b84610be5565b81016020851015610d1a578190505b610d2e610d2685610be5565b830182610cce565b50505b505050565b5f82821c905092915050565b5f610d515f1984600802610d36565b1980831691505092915050565b5f610d698383610d42565b9150826002028217905092915050565b610d8282610b3f565b67ffffffffffffffff811115610d9b57610d9a610b49565b5b610da58254610ba3565b610db0828285610cf0565b5f60209050601f831160018114610de1575f8415610dcf578287015190505b610dd98582610d5e565b865550610e40565b601f198416610def86610bd3565b5f5b82811015610e1657848901518255600182019150602085019450602081019050610df1565b86831015610e335784890151610e2f601f891682610d42565b8355505b6001600288020188555050505b505050505050565b5f60208284031215610e5d57610e5c610a91565b5b5f610e6a84828501610adb565b91505092915050565b610e7c81610ab4565b82525050565b5f604082019050610e955f830185610e73565b610ea26020830184610e73565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610f2b57808604811115610f0757610f06610ea9565b5b6001851615610f165780820291505b8081029050610f2485610ed6565b9450610eeb565b94509492505050565b5f82610f435760019050610ffe565b81610f50575f9050610ffe565b8160018114610f665760028114610f7057610f9f565b6001915050610ffe565b60ff841115610f8257610f81610ea9565b5b8360020a915084821115610f9957610f98610ea9565b5b50610ffe565b5060208310610133831016604e8410600b8410161715610fd45782820a905083811115610fcf57610fce610ea9565b5b610ffe565b610fe18484846001610ee2565b92509050818404811115610ff857610ff7610ea9565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61101b82610c51565b915061102683611005565b92506110537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610f34565b905092915050565b5f61106582610c51565b915061107083610c51565b925082820261107e81610c51565b9150828204841483151761109557611094610ea9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6110d382610c51565b91506110de83610c51565b9250826110ee576110ed61109c565b5b828204905092915050565b5f61110382610c51565b915061110e83610c51565b925082820190508082111561112657611125610ea9565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f61117060208361112c565b915061117b8261113c565b602082019050919050565b5f6020820190508181035f83015261119d81611164565b9050919050565b6111ad81610c51565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b614aec806111d95f395ff3fe6080604052600436106102cc575f3560e01c8063715018a611610174578063af8f26e7116100db578063c42c3f8811610094578063dd62ed3e1161006e578063dd62ed3e14610a9d578063e27a55fe14610ad9578063e96db1ef14610b03578063f2fde38b14610b2d576102d3565b8063c42c3f8814610a21578063c6a3064714610a4b578063d929a08314610a73576102d3565b8063af8f26e714610917578063b38d5ef414610941578063b62496f514610969578063b79c1886146109a5578063be691883146109cd578063c31c9c07146109f7576102d3565b80638ea5220f1161012d5780638ea5220f146107fb578063924de9b71461082557806395d89b411461084d578063a457c2d714610877578063a9059cbb146108b3578063aacebbe3146108ef576102d3565b8063715018a61461073b578063751039fc1461075157806375f0a874146107675780637d673170146107915780638a8c523c146107bb5780638da5cb5b146107d1576102d3565b8063313ce56711610233578063544d1ec9116101ec578063685fbc6b116101c6578063685fbc6b146106715780636f498e211461069b5780637070678b146106d757806370a08231146106ff576102d3565b8063544d1ec9146105f75780635df6e68e1461061f57806367b740e914610649576102d3565b8063313ce567146104eb5780633301241114610515578063372b44b81461053f578063395093511461056957806345167f26146105a55780634a62bb65146105cd576102d3565b806318c34be11161028557806318c34be1146103cf5780631af03203146103f957806322f598351461042157806323b872dd1461045d57806326991cc8146104995780632c81355e146104c3576102d3565b806306fdde03146102d7578063095ea7b3146103015780630e3d57eb1461033d578063151d80391461035357806318160ddd1461037d5780631816467f146103a7576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b55565b6040516102f8919061364f565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190613700565b610be4565b6040516103349190613758565b60405180910390f35b348015610348575f80fd5b50610351610c01565b005b34801561035e575f80fd5b50610367610cea565b6040516103749190613758565b60405180910390f35b348015610388575f80fd5b50610391610cfd565b60405161039e9190613780565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190613799565b610d06565b005b3480156103da575f80fd5b506103e3610dc5565b6040516103f09190613780565b60405180910390f35b348015610404575f80fd5b5061041f600480360381019061041a9190613799565b610dcb565b005b34801561042c575f80fd5b5061044760048036038101906104429190613799565b610f47565b6040516104549190613758565b60405180910390f35b348015610468575f80fd5b50610483600480360381019061047e91906137c4565b610f64565b6040516104909190613758565b60405180910390f35b3480156104a4575f80fd5b506104ad611056565b6040516104ba9190613823565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e4919061383c565b61107b565b005b3480156104f6575f80fd5b506104ff6111c8565b60405161050c9190613882565b60405180910390f35b348015610520575f80fd5b506105296111d0565b6040516105369190613780565b60405180910390f35b34801561054a575f80fd5b506105536111d6565b6040516105609190613780565b60405180910390f35b348015610574575f80fd5b5061058f600480360381019061058a9190613700565b6111dc565b60405161059c9190613758565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c691906138c5565b611283565b005b3480156105d8575f80fd5b506105e16113e6565b6040516105ee9190613758565b60405180910390f35b348015610602575f80fd5b5061061d6004803603810190610618919061383c565b6113f8565b005b34801561062a575f80fd5b5061063361151d565b6040516106409190613780565b60405180910390f35b348015610654575f80fd5b5061066f600480360381019061066a919061383c565b611523565b005b34801561067c575f80fd5b50610685611648565b6040516106929190613780565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190613799565b61164e565b6040516106ce9190613758565b60405180910390f35b3480156106e2575f80fd5b506106fd60048036038101906106f891906138c5565b61166b565b005b34801561070a575f80fd5b5061072560048036038101906107209190613799565b61173f565b6040516107329190613780565b60405180910390f35b348015610746575f80fd5b5061074f611785565b005b34801561075c575f80fd5b5061076561180c565b005b348015610772575f80fd5b5061077b6118a3565b6040516107889190613823565b60405180910390f35b34801561079c575f80fd5b506107a56118c9565b6040516107b29190613780565b60405180910390f35b3480156107c6575f80fd5b506107cf6118cf565b005b3480156107dc575f80fd5b506107e561197b565b6040516107f29190613823565b60405180910390f35b348015610806575f80fd5b5061080f6119a3565b60405161081c9190613823565b60405180910390f35b348015610830575f80fd5b5061084b60048036038101906108469190613903565b6119c8565b005b348015610858575f80fd5b50610861611a61565b60405161086e919061364f565b60405180910390f35b348015610882575f80fd5b5061089d60048036038101906108989190613700565b611af1565b6040516108aa9190613758565b60405180910390f35b3480156108be575f80fd5b506108d960048036038101906108d49190613700565b611bd7565b6040516108e69190613758565b60405180910390f35b3480156108fa575f80fd5b5061091560048036038101906109109190613799565b611bf4565b005b348015610922575f80fd5b5061092b611cb4565b6040516109389190613780565b60405180910390f35b34801561094c575f80fd5b506109676004803603810190610962919061392e565b611cba565b005b348015610974575f80fd5b5061098f600480360381019061098a9190613799565b611da4565b60405161099c9190613758565b60405180910390f35b3480156109b0575f80fd5b506109cb60048036038101906109c6919061392e565b611dc1565b005b3480156109d8575f80fd5b506109e1611eab565b6040516109ee9190613780565b60405180910390f35b348015610a02575f80fd5b50610a0b611eb1565b604051610a1891906139c7565b60405180910390f35b348015610a2c575f80fd5b50610a35611ed6565b604051610a429190613780565b60405180910390f35b348015610a56575f80fd5b50610a716004803603810190610a6c91906138c5565b611edc565b005b348015610a7e575f80fd5b50610a87611fb0565b604051610a949190613758565b60405180910390f35b348015610aa8575f80fd5b50610ac36004803603810190610abe91906139e0565b611fc2565b604051610ad09190613780565b60405180910390f35b348015610ae4575f80fd5b50610aed612044565b604051610afa9190613780565b60405180910390f35b348015610b0e575f80fd5b50610b1761204a565b604051610b249190613780565b60405180910390f35b348015610b38575f80fd5b50610b536004803603810190610b4e9190613799565b612050565b005b60605f8054610b6390613a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8f90613a4b565b8015610bda5780601f10610bb157610100808354040283529160200191610bda565b820191905f5260205f20905b815481529060010190602001808311610bbd57829003601f168201915b5050505050905090565b5f610bf7610bf0612146565b848461214d565b6001905092915050565b610c09612146565b73ffffffffffffffffffffffffffffffffffffffff16610c2761197b565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613ac5565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610ca290613b10565b5f6040518083038185875af1925050503d805f8114610cdc576040519150601f19603f3d011682016040523d82523d5f602084013e610ce1565b606091505b50508091505050565b600b60019054906101000a900460ff1681565b5f600254905090565b610d0e612146565b73ffffffffffffffffffffffffffffffffffffffff16610d2c61197b565b73ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990613ac5565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b610dd3612146565b73ffffffffffffffffffffffffffffffffffffffff16610df161197b565b73ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90613ac5565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e859190613823565b602060405180830381865afa158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190613b38565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f01929190613b63565b6020604051808303815f875af1158015610f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f419190613b9e565b50505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610f70848484612310565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fb7612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90613c13565b60405180910390fd5b61104a85611042612146565b85840361214d565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611083612146565b73ffffffffffffffffffffffffffffffffffffffff166110a161197b565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613ac5565b60405180910390fd5b620186a06001611105610cfd565b61110f9190613c5e565b6111199190613ccc565b81101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290613d6c565b60405180910390fd5b6103e86005611168610cfd565b6111729190613c5e565b61117c9190613ccc565b8111156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613dfa565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f6112796111e8612146565b848460045f6111f5612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112749190613e18565b61214d565b6001905092915050565b61128b612146565b73ffffffffffffffffffffffffffffffffffffffff166112a961197b565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613ac5565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613ebb565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b611400612146565b73ffffffffffffffffffffffffffffffffffffffff1661141e61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613ac5565b60405180910390fd5b61147c6111c8565b600a6114889190614008565b6103e86001611495610cfd565b61149f9190613c5e565b6114a99190613ccc565b6114b39190613ccc565b8110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906140c2565b60405180910390fd5b6114fd6111c8565b600a6115099190614008565b816115149190613c5e565b600a8190555050565b60165481565b61152b612146565b73ffffffffffffffffffffffffffffffffffffffff1661154961197b565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613ac5565b60405180910390fd5b6115a76111c8565b600a6115b39190614008565b6103e860056115c0610cfd565b6115ca9190613c5e565b6115d49190613ccc565b6115de9190613ccc565b811015611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161790614150565b60405180910390fd5b6116286111c8565b600a6116349190614008565b8161163f9190613c5e565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b611673612146565b73ffffffffffffffffffffffffffffffffffffffff1661169161197b565b73ffffffffffffffffffffffffffffffffffffffff16146116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90613ac5565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61178d612146565b73ffffffffffffffffffffffffffffffffffffffff166117ab61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f890613ac5565b60405180910390fd5b61180a5f612e4a565b565b611814612146565b73ffffffffffffffffffffffffffffffffffffffff1661183261197b565b73ffffffffffffffffffffffffffffffffffffffff1614611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f90613ac5565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6118d761197b565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b906141b8565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d0612146565b73ffffffffffffffffffffffffffffffffffffffff166119ee61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613ac5565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a7090613a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9c90613a4b565b8015611ae75780601f10611abe57610100808354040283529160200191611ae7565b820191905f5260205f20905b815481529060010190602001808311611aca57829003601f168201915b5050505050905090565b5f8060045f611afe612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614220565b60405180910390fd5b611bcc611bc3612146565b8585840361214d565b600191505092915050565b5f611bea611be3612146565b8484612310565b6001905092915050565b611bfc612146565b73ffffffffffffffffffffffffffffffffffffffff16611c1a61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613ac5565b60405180910390fd5b80600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611cc2612146565b73ffffffffffffffffffffffffffffffffffffffff16611ce061197b565b73ffffffffffffffffffffffffffffffffffffffff1614611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90613ac5565b60405180910390fd5b8160178190555080601881905550601854601754611d549190613e18565b60168190555060286016541115611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9790614288565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611dc9612146565b73ffffffffffffffffffffffffffffffffffffffff16611de761197b565b73ffffffffffffffffffffffffffffffffffffffff1614611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3490613ac5565b60405180910390fd5b8160148190555080601581905550601554601454611e5b9190613e18565b60138190555060286013541115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90614288565b60405180910390fd5b5050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611ee4612146565b73ffffffffffffffffffffffffffffffffffffffff16611f0261197b565b73ffffffffffffffffffffffffffffffffffffffff1614611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613ac5565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b612058612146565b73ffffffffffffffffffffffffffffffffffffffff1661207661197b565b73ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c390613ac5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906142f0565b60405180910390fd5b61214381612e4a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614358565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906143c0565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123039190613780565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237590614428565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e390614490565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d906144f8565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614560565b60405180910390fd5b5f81036125175761251283835f612f0d565b612e45565b60125f9054906101000a900460ff16156129f95761253361197b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125a1575061257161197b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612613575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561262b575060195f9054906101000a900460ff16155b156129f857600b5f9054906101000a900460ff1661271e5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126de575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61271d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612714906145c8565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127bb5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561286257600a54811115612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614656565b60405180910390fd5b6009546128118361173f565b8261281c9190613e18565b111561285d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612854906146be565b60405180910390fd5b6129f7565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128ff5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561294e57600a54811115612949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129409061474c565b60405180910390fd5b6129f6565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129f5576009546129a88361173f565b826129b39190613e18565b11156129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129eb906146be565b60405180910390fd5b5b5b5b5b5b5f612a033061173f565b90505f6008548210159050600b60019054906101000a900460ff168015612a275750805b8015612a3f575060195f9054906101000a900460ff16155b8015612a92575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ae5575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b38575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b7957600160195f6101000a81548160ff021916908315150217905550612b5f613185565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c27575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c30575f90505b5f8115612e355760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8e57505f601354115b15612d2657612cbb6064612cad6013548861336090919063ffffffff16565b61337590919063ffffffff16565b905060135460155482612cce9190613c5e565b612cd89190613ccc565b600e5f828254612ce89190613e18565b9250508190555060135460145482612d009190613c5e565b612d0a9190613ccc565b600d5f828254612d1a9190613e18565b92505081905550612e12565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d7d57505f601654115b15612e1157612daa6064612d9c6016548861336090919063ffffffff16565b61337590919063ffffffff16565b905060165460185482612dbd9190613c5e565b612dc79190613ccc565b600e5f828254612dd79190613e18565b9250508190555060165460175482612def9190613c5e565b612df99190613ccc565b600d5f828254612e099190613e18565b925050819055505b5b5f811115612e2657612e25873083612f0d565b5b8085612e32919061476a565b94505b612e40878787612f0d565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906147e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe09061484f565b60405180910390fd5b612ff483838361338a565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f906148b7565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131089190613e18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161316c9190613780565b60405180910390a361317f84848461338f565b50505050565b5f80600e54600d546131979190613e18565b90505f6131a33061173f565b90505f8214806131b257505f81145b156131bf5750505061335e565b60146008546131ce9190613c5e565b8111156131e75760146008546131e49190613c5e565b90505b5f4790506131f482613394565b5f61320882476135ca90919063ffffffff16565b90505f61323285613224600e548561336090919063ffffffff16565b61337590919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161327990613b10565b5f6040518083038185875af1925050503d805f81146132b3576040519150601f19603f3d011682016040523d82523d5f602084013e6132b8565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330490613b10565b5f6040518083038185875af1925050503d805f811461333e576040519150601f19603f3d011682016040523d82523d5f602084013e613343565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f818361336d9190613c5e565b905092915050565b5f81836133829190613ccc565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156133b0576133af6148d5565b5b6040519080825280602002602001820160405280156133de5781602001602082028036833780820191505090505b50905030815f815181106133f5576133f4614902565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613499573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134bd9190614943565b816001815181106134d1576134d0614902565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135373060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461214d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613599959493929190614a5e565b5f604051808303815f87803b1580156135b0575f80fd5b505af11580156135c2573d5f803e3d5ffd5b505050505050565b5f81836135d7919061476a565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613621826135df565b61362b81856135e9565b935061363b8185602086016135f9565b61364481613607565b840191505092915050565b5f6020820190508181035f8301526136678184613617565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61369c82613673565b9050919050565b6136ac81613692565b81146136b6575f80fd5b50565b5f813590506136c7816136a3565b92915050565b5f819050919050565b6136df816136cd565b81146136e9575f80fd5b50565b5f813590506136fa816136d6565b92915050565b5f80604083850312156137165761371561366f565b5b5f613723858286016136b9565b9250506020613734858286016136ec565b9150509250929050565b5f8115159050919050565b6137528161373e565b82525050565b5f60208201905061376b5f830184613749565b92915050565b61377a816136cd565b82525050565b5f6020820190506137935f830184613771565b92915050565b5f602082840312156137ae576137ad61366f565b5b5f6137bb848285016136b9565b91505092915050565b5f805f606084860312156137db576137da61366f565b5b5f6137e8868287016136b9565b93505060206137f9868287016136b9565b925050604061380a868287016136ec565b9150509250925092565b61381d81613692565b82525050565b5f6020820190506138365f830184613814565b92915050565b5f602082840312156138515761385061366f565b5b5f61385e848285016136ec565b91505092915050565b5f60ff82169050919050565b61387c81613867565b82525050565b5f6020820190506138955f830184613873565b92915050565b6138a48161373e565b81146138ae575f80fd5b50565b5f813590506138bf8161389b565b92915050565b5f80604083850312156138db576138da61366f565b5b5f6138e8858286016136b9565b92505060206138f9858286016138b1565b9150509250929050565b5f602082840312156139185761391761366f565b5b5f613925848285016138b1565b91505092915050565b5f80604083850312156139445761394361366f565b5b5f613951858286016136ec565b9250506020613962858286016136ec565b9150509250929050565b5f819050919050565b5f61398f61398a61398584613673565b61396c565b613673565b9050919050565b5f6139a082613975565b9050919050565b5f6139b182613996565b9050919050565b6139c1816139a7565b82525050565b5f6020820190506139da5f8301846139b8565b92915050565b5f80604083850312156139f6576139f561366f565b5b5f613a03858286016136b9565b9250506020613a14858286016136b9565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a6257607f821691505b602082108103613a7557613a74613a1e565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613aaf600d836135e9565b9150613aba82613a7b565b602082019050919050565b5f6020820190508181035f830152613adc81613aa3565b9050919050565b5f81905092915050565b50565b5f613afb5f83613ae3565b9150613b0682613aed565b5f82019050919050565b5f613b1a82613af0565b9150819050919050565b5f81519050613b32816136d6565b92915050565b5f60208284031215613b4d57613b4c61366f565b5b5f613b5a84828501613b24565b91505092915050565b5f604082019050613b765f830185613814565b613b836020830184613771565b9392505050565b5f81519050613b988161389b565b92915050565b5f60208284031215613bb357613bb261366f565b5b5f613bc084828501613b8a565b91505092915050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613bfd601d836135e9565b9150613c0882613bc9565b602082019050919050565b5f6020820190508181035f830152613c2a81613bf1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c68826136cd565b9150613c73836136cd565b9250828202613c81816136cd565b91508282048414831517613c9857613c97613c31565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cd6826136cd565b9150613ce1836136cd565b925082613cf157613cf0613c9f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d566035836135e9565b9150613d6182613cfc565b604082019050919050565b5f6020820190508181035f830152613d8381613d4a565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613de46034836135e9565b9150613def82613d8a565b604082019050919050565b5f6020820190508181035f830152613e1181613dd8565b9050919050565b5f613e22826136cd565b9150613e2d836136cd565b9250828201905080821115613e4557613e44613c31565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ea56039836135e9565b9150613eb082613e4b565b604082019050919050565b5f6020820190508181035f830152613ed281613e99565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613f2e57808604811115613f0a57613f09613c31565b5b6001851615613f195780820291505b8081029050613f2785613ed9565b9450613eee565b94509492505050565b5f82613f465760019050614001565b81613f53575f9050614001565b8160018114613f695760028114613f7357613fa2565b6001915050614001565b60ff841115613f8557613f84613c31565b5b8360020a915084821115613f9c57613f9b613c31565b5b50614001565b5060208310610133831016604e8410600b8410161715613fd75782820a905083811115613fd257613fd1613c31565b5b614001565b613fe48484846001613ee5565b92509050818404811115613ffb57613ffa613c31565b5b81810290505b9392505050565b5f614012826136cd565b915061401d83613867565b925061404a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613f37565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6140ac602f836135e9565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f61413a6032836135e9565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f4f6e6c79206f776e65722063616e20656e61626c652074726164696e670000005f82015250565b5f6141a2601d836135e9565b91506141ad8261416e565b602082019050919050565b5f6020820190508181035f8301526141cf81614196565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61420a601f836135e9565b9150614215826141d6565b602082019050919050565b5f6020820190508181035f830152614237816141fe565b9050919050565b7f4d757374206b6565702074617820617420343025206f72206c657373000000005f82015250565b5f614272601c836135e9565b915061427d8261423e565b602082019050919050565b5f6020820190508181035f83015261429f81614266565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f6142da6011836135e9565b91506142e5826142a6565b602082019050919050565b5f6020820190508181035f830152614307816142ce565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614342601e836135e9565b915061434d8261430e565b602082019050919050565b5f6020820190508181035f83015261436f81614336565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6143aa6020836135e9565b91506143b582614376565b602082019050919050565b5f6020820190508181035f8301526143d78161439e565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614412601b836135e9565b915061441d826143de565b602082019050919050565b5f6020820190508181035f83015261443f81614406565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f61447a6019836135e9565b915061448582614446565b602082019050919050565b5f6020820190508181035f8301526144a78161446e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f6144e26019836135e9565b91506144ed826144ae565b602082019050919050565b5f6020820190508181035f83015261450f816144d6565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61454a6017836135e9565b915061455582614516565b602082019050919050565b5f6020820190508181035f8301526145778161453e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6145b26016836135e9565b91506145bd8261457e565b602082019050919050565b5f6020820190508181035f8301526145df816145a6565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f6146406035836135e9565b915061464b826145e6565b604082019050919050565b5f6020820190508181035f83015261466d81614634565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146a86013836135e9565b91506146b382614674565b602082019050919050565b5f6020820190508181035f8301526146d58161469c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f6147366036836135e9565b9150614741826146dc565b604082019050919050565b5f6020820190508181035f8301526147638161472a565b9050919050565b5f614774826136cd565b915061477f836136cd565b925082820390508181111561479757614796613c31565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f6147d1601d836135e9565b91506147dc8261479d565b602082019050919050565b5f6020820190508181035f8301526147fe816147c5565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614839601b836135e9565b915061484482614805565b602082019050919050565b5f6020820190508181035f8301526148668161482d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6148a16020836135e9565b91506148ac8261486d565b602082019050919050565b5f6020820190508181035f8301526148ce81614895565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061493d816136a3565b92915050565b5f602082840312156149585761495761366f565b5b5f6149658482850161492f565b91505092915050565b5f819050919050565b5f61499161498c6149878461496e565b61396c565b6136cd565b9050919050565b6149a181614977565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149d981613692565b82525050565b5f6149ea83836149d0565b60208301905092915050565b5f602082019050919050565b5f614a0c826149a7565b614a1681856149b1565b9350614a21836149c1565b805f5b83811015614a51578151614a3888826149df565b9750614a43836149f6565b925050600181019050614a24565b5085935050505092915050565b5f60a082019050614a715f830188613771565b614a7e6020830187614998565b8181036040830152614a908186614a02565b9050614a9f6060830185613814565b614aac6080830184613771565b969550505050505056fea2646970667358221220b772acdc6cabebdef02a56382dd6584fe5008877eaea2ec8da445cdd5b2df36064736f6c63430008190033000000000000000000000000be05650c5cad210a0ecb4e9189f047a94c54bb9000000000000000000000000080ea3362c07e16bc7d0cea8d9d8fa0f316802d5c0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102cc575f3560e01c8063715018a611610174578063af8f26e7116100db578063c42c3f8811610094578063dd62ed3e1161006e578063dd62ed3e14610a9d578063e27a55fe14610ad9578063e96db1ef14610b03578063f2fde38b14610b2d576102d3565b8063c42c3f8814610a21578063c6a3064714610a4b578063d929a08314610a73576102d3565b8063af8f26e714610917578063b38d5ef414610941578063b62496f514610969578063b79c1886146109a5578063be691883146109cd578063c31c9c07146109f7576102d3565b80638ea5220f1161012d5780638ea5220f146107fb578063924de9b71461082557806395d89b411461084d578063a457c2d714610877578063a9059cbb146108b3578063aacebbe3146108ef576102d3565b8063715018a61461073b578063751039fc1461075157806375f0a874146107675780637d673170146107915780638a8c523c146107bb5780638da5cb5b146107d1576102d3565b8063313ce56711610233578063544d1ec9116101ec578063685fbc6b116101c6578063685fbc6b146106715780636f498e211461069b5780637070678b146106d757806370a08231146106ff576102d3565b8063544d1ec9146105f75780635df6e68e1461061f57806367b740e914610649576102d3565b8063313ce567146104eb5780633301241114610515578063372b44b81461053f578063395093511461056957806345167f26146105a55780634a62bb65146105cd576102d3565b806318c34be11161028557806318c34be1146103cf5780631af03203146103f957806322f598351461042157806323b872dd1461045d57806326991cc8146104995780632c81355e146104c3576102d3565b806306fdde03146102d7578063095ea7b3146103015780630e3d57eb1461033d578063151d80391461035357806318160ddd1461037d5780631816467f146103a7576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b55565b6040516102f8919061364f565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190613700565b610be4565b6040516103349190613758565b60405180910390f35b348015610348575f80fd5b50610351610c01565b005b34801561035e575f80fd5b50610367610cea565b6040516103749190613758565b60405180910390f35b348015610388575f80fd5b50610391610cfd565b60405161039e9190613780565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190613799565b610d06565b005b3480156103da575f80fd5b506103e3610dc5565b6040516103f09190613780565b60405180910390f35b348015610404575f80fd5b5061041f600480360381019061041a9190613799565b610dcb565b005b34801561042c575f80fd5b5061044760048036038101906104429190613799565b610f47565b6040516104549190613758565b60405180910390f35b348015610468575f80fd5b50610483600480360381019061047e91906137c4565b610f64565b6040516104909190613758565b60405180910390f35b3480156104a4575f80fd5b506104ad611056565b6040516104ba9190613823565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e4919061383c565b61107b565b005b3480156104f6575f80fd5b506104ff6111c8565b60405161050c9190613882565b60405180910390f35b348015610520575f80fd5b506105296111d0565b6040516105369190613780565b60405180910390f35b34801561054a575f80fd5b506105536111d6565b6040516105609190613780565b60405180910390f35b348015610574575f80fd5b5061058f600480360381019061058a9190613700565b6111dc565b60405161059c9190613758565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c691906138c5565b611283565b005b3480156105d8575f80fd5b506105e16113e6565b6040516105ee9190613758565b60405180910390f35b348015610602575f80fd5b5061061d6004803603810190610618919061383c565b6113f8565b005b34801561062a575f80fd5b5061063361151d565b6040516106409190613780565b60405180910390f35b348015610654575f80fd5b5061066f600480360381019061066a919061383c565b611523565b005b34801561067c575f80fd5b50610685611648565b6040516106929190613780565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190613799565b61164e565b6040516106ce9190613758565b60405180910390f35b3480156106e2575f80fd5b506106fd60048036038101906106f891906138c5565b61166b565b005b34801561070a575f80fd5b5061072560048036038101906107209190613799565b61173f565b6040516107329190613780565b60405180910390f35b348015610746575f80fd5b5061074f611785565b005b34801561075c575f80fd5b5061076561180c565b005b348015610772575f80fd5b5061077b6118a3565b6040516107889190613823565b60405180910390f35b34801561079c575f80fd5b506107a56118c9565b6040516107b29190613780565b60405180910390f35b3480156107c6575f80fd5b506107cf6118cf565b005b3480156107dc575f80fd5b506107e561197b565b6040516107f29190613823565b60405180910390f35b348015610806575f80fd5b5061080f6119a3565b60405161081c9190613823565b60405180910390f35b348015610830575f80fd5b5061084b60048036038101906108469190613903565b6119c8565b005b348015610858575f80fd5b50610861611a61565b60405161086e919061364f565b60405180910390f35b348015610882575f80fd5b5061089d60048036038101906108989190613700565b611af1565b6040516108aa9190613758565b60405180910390f35b3480156108be575f80fd5b506108d960048036038101906108d49190613700565b611bd7565b6040516108e69190613758565b60405180910390f35b3480156108fa575f80fd5b5061091560048036038101906109109190613799565b611bf4565b005b348015610922575f80fd5b5061092b611cb4565b6040516109389190613780565b60405180910390f35b34801561094c575f80fd5b506109676004803603810190610962919061392e565b611cba565b005b348015610974575f80fd5b5061098f600480360381019061098a9190613799565b611da4565b60405161099c9190613758565b60405180910390f35b3480156109b0575f80fd5b506109cb60048036038101906109c6919061392e565b611dc1565b005b3480156109d8575f80fd5b506109e1611eab565b6040516109ee9190613780565b60405180910390f35b348015610a02575f80fd5b50610a0b611eb1565b604051610a1891906139c7565b60405180910390f35b348015610a2c575f80fd5b50610a35611ed6565b604051610a429190613780565b60405180910390f35b348015610a56575f80fd5b50610a716004803603810190610a6c91906138c5565b611edc565b005b348015610a7e575f80fd5b50610a87611fb0565b604051610a949190613758565b60405180910390f35b348015610aa8575f80fd5b50610ac36004803603810190610abe91906139e0565b611fc2565b604051610ad09190613780565b60405180910390f35b348015610ae4575f80fd5b50610aed612044565b604051610afa9190613780565b60405180910390f35b348015610b0e575f80fd5b50610b1761204a565b604051610b249190613780565b60405180910390f35b348015610b38575f80fd5b50610b536004803603810190610b4e9190613799565b612050565b005b60605f8054610b6390613a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8f90613a4b565b8015610bda5780601f10610bb157610100808354040283529160200191610bda565b820191905f5260205f20905b815481529060010190602001808311610bbd57829003601f168201915b5050505050905090565b5f610bf7610bf0612146565b848461214d565b6001905092915050565b610c09612146565b73ffffffffffffffffffffffffffffffffffffffff16610c2761197b565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613ac5565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610ca290613b10565b5f6040518083038185875af1925050503d805f8114610cdc576040519150601f19603f3d011682016040523d82523d5f602084013e610ce1565b606091505b50508091505050565b600b60019054906101000a900460ff1681565b5f600254905090565b610d0e612146565b73ffffffffffffffffffffffffffffffffffffffff16610d2c61197b565b73ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990613ac5565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b610dd3612146565b73ffffffffffffffffffffffffffffffffffffffff16610df161197b565b73ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90613ac5565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e859190613823565b602060405180830381865afa158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190613b38565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f01929190613b63565b6020604051808303815f875af1158015610f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f419190613b9e565b50505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610f70848484612310565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fb7612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90613c13565b60405180910390fd5b61104a85611042612146565b85840361214d565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611083612146565b73ffffffffffffffffffffffffffffffffffffffff166110a161197b565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613ac5565b60405180910390fd5b620186a06001611105610cfd565b61110f9190613c5e565b6111199190613ccc565b81101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290613d6c565b60405180910390fd5b6103e86005611168610cfd565b6111729190613c5e565b61117c9190613ccc565b8111156111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590613dfa565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f6112796111e8612146565b848460045f6111f5612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112749190613e18565b61214d565b6001905092915050565b61128b612146565b73ffffffffffffffffffffffffffffffffffffffff166112a961197b565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613ac5565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613ebb565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b611400612146565b73ffffffffffffffffffffffffffffffffffffffff1661141e61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613ac5565b60405180910390fd5b61147c6111c8565b600a6114889190614008565b6103e86001611495610cfd565b61149f9190613c5e565b6114a99190613ccc565b6114b39190613ccc565b8110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906140c2565b60405180910390fd5b6114fd6111c8565b600a6115099190614008565b816115149190613c5e565b600a8190555050565b60165481565b61152b612146565b73ffffffffffffffffffffffffffffffffffffffff1661154961197b565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613ac5565b60405180910390fd5b6115a76111c8565b600a6115b39190614008565b6103e860056115c0610cfd565b6115ca9190613c5e565b6115d49190613ccc565b6115de9190613ccc565b811015611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161790614150565b60405180910390fd5b6116286111c8565b600a6116349190614008565b8161163f9190613c5e565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b611673612146565b73ffffffffffffffffffffffffffffffffffffffff1661169161197b565b73ffffffffffffffffffffffffffffffffffffffff16146116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90613ac5565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61178d612146565b73ffffffffffffffffffffffffffffffffffffffff166117ab61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f890613ac5565b60405180910390fd5b61180a5f612e4a565b565b611814612146565b73ffffffffffffffffffffffffffffffffffffffff1661183261197b565b73ffffffffffffffffffffffffffffffffffffffff1614611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f90613ac5565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6118d761197b565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b906141b8565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119d0612146565b73ffffffffffffffffffffffffffffffffffffffff166119ee61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613ac5565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a7090613a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9c90613a4b565b8015611ae75780601f10611abe57610100808354040283529160200191611ae7565b820191905f5260205f20905b815481529060010190602001808311611aca57829003601f168201915b5050505050905090565b5f8060045f611afe612146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614220565b60405180910390fd5b611bcc611bc3612146565b8585840361214d565b600191505092915050565b5f611bea611be3612146565b8484612310565b6001905092915050565b611bfc612146565b73ffffffffffffffffffffffffffffffffffffffff16611c1a61197b565b73ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613ac5565b60405180910390fd5b80600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611cc2612146565b73ffffffffffffffffffffffffffffffffffffffff16611ce061197b565b73ffffffffffffffffffffffffffffffffffffffff1614611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90613ac5565b60405180910390fd5b8160178190555080601881905550601854601754611d549190613e18565b60168190555060286016541115611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9790614288565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611dc9612146565b73ffffffffffffffffffffffffffffffffffffffff16611de761197b565b73ffffffffffffffffffffffffffffffffffffffff1614611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3490613ac5565b60405180910390fd5b8160148190555080601581905550601554601454611e5b9190613e18565b60138190555060286013541115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90614288565b60405180910390fd5b5050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611ee4612146565b73ffffffffffffffffffffffffffffffffffffffff16611f0261197b565b73ffffffffffffffffffffffffffffffffffffffff1614611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613ac5565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b612058612146565b73ffffffffffffffffffffffffffffffffffffffff1661207661197b565b73ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c390613ac5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906142f0565b60405180910390fd5b61214381612e4a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614358565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906143c0565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123039190613780565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237590614428565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e390614490565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d906144f8565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614560565b60405180910390fd5b5f81036125175761251283835f612f0d565b612e45565b60125f9054906101000a900460ff16156129f95761253361197b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125a1575061257161197b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612613575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561262b575060195f9054906101000a900460ff16155b156129f857600b5f9054906101000a900460ff1661271e5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126de575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61271d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612714906145c8565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127bb5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561286257600a54811115612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614656565b60405180910390fd5b6009546128118361173f565b8261281c9190613e18565b111561285d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612854906146be565b60405180910390fd5b6129f7565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128ff5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561294e57600a54811115612949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129409061474c565b60405180910390fd5b6129f6565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129f5576009546129a88361173f565b826129b39190613e18565b11156129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129eb906146be565b60405180910390fd5b5b5b5b5b5b5f612a033061173f565b90505f6008548210159050600b60019054906101000a900460ff168015612a275750805b8015612a3f575060195f9054906101000a900460ff16155b8015612a92575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ae5575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b38575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b7957600160195f6101000a81548160ff021916908315150217905550612b5f613185565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c27575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c30575f90505b5f8115612e355760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8e57505f601354115b15612d2657612cbb6064612cad6013548861336090919063ffffffff16565b61337590919063ffffffff16565b905060135460155482612cce9190613c5e565b612cd89190613ccc565b600e5f828254612ce89190613e18565b9250508190555060135460145482612d009190613c5e565b612d0a9190613ccc565b600d5f828254612d1a9190613e18565b92505081905550612e12565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d7d57505f601654115b15612e1157612daa6064612d9c6016548861336090919063ffffffff16565b61337590919063ffffffff16565b905060165460185482612dbd9190613c5e565b612dc79190613ccc565b600e5f828254612dd79190613e18565b9250508190555060165460175482612def9190613c5e565b612df99190613ccc565b600d5f828254612e099190613e18565b925050819055505b5b5f811115612e2657612e25873083612f0d565b5b8085612e32919061476a565b94505b612e40878787612f0d565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906147e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe09061484f565b60405180910390fd5b612ff483838361338a565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306f906148b7565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131089190613e18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161316c9190613780565b60405180910390a361317f84848461338f565b50505050565b5f80600e54600d546131979190613e18565b90505f6131a33061173f565b90505f8214806131b257505f81145b156131bf5750505061335e565b60146008546131ce9190613c5e565b8111156131e75760146008546131e49190613c5e565b90505b5f4790506131f482613394565b5f61320882476135ca90919063ffffffff16565b90505f61323285613224600e548561336090919063ffffffff16565b61337590919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161327990613b10565b5f6040518083038185875af1925050503d805f81146132b3576040519150601f19603f3d011682016040523d82523d5f602084013e6132b8565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330490613b10565b5f6040518083038185875af1925050503d805f811461333e576040519150601f19603f3d011682016040523d82523d5f602084013e613343565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f818361336d9190613c5e565b905092915050565b5f81836133829190613ccc565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156133b0576133af6148d5565b5b6040519080825280602002602001820160405280156133de5781602001602082028036833780820191505090505b50905030815f815181106133f5576133f4614902565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613499573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134bd9190614943565b816001815181106134d1576134d0614902565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135373060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461214d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613599959493929190614a5e565b5f604051808303815f87803b1580156135b0575f80fd5b505af11580156135c2573d5f803e3d5ffd5b505050505050565b5f81836135d7919061476a565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613621826135df565b61362b81856135e9565b935061363b8185602086016135f9565b61364481613607565b840191505092915050565b5f6020820190508181035f8301526136678184613617565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61369c82613673565b9050919050565b6136ac81613692565b81146136b6575f80fd5b50565b5f813590506136c7816136a3565b92915050565b5f819050919050565b6136df816136cd565b81146136e9575f80fd5b50565b5f813590506136fa816136d6565b92915050565b5f80604083850312156137165761371561366f565b5b5f613723858286016136b9565b9250506020613734858286016136ec565b9150509250929050565b5f8115159050919050565b6137528161373e565b82525050565b5f60208201905061376b5f830184613749565b92915050565b61377a816136cd565b82525050565b5f6020820190506137935f830184613771565b92915050565b5f602082840312156137ae576137ad61366f565b5b5f6137bb848285016136b9565b91505092915050565b5f805f606084860312156137db576137da61366f565b5b5f6137e8868287016136b9565b93505060206137f9868287016136b9565b925050604061380a868287016136ec565b9150509250925092565b61381d81613692565b82525050565b5f6020820190506138365f830184613814565b92915050565b5f602082840312156138515761385061366f565b5b5f61385e848285016136ec565b91505092915050565b5f60ff82169050919050565b61387c81613867565b82525050565b5f6020820190506138955f830184613873565b92915050565b6138a48161373e565b81146138ae575f80fd5b50565b5f813590506138bf8161389b565b92915050565b5f80604083850312156138db576138da61366f565b5b5f6138e8858286016136b9565b92505060206138f9858286016138b1565b9150509250929050565b5f602082840312156139185761391761366f565b5b5f613925848285016138b1565b91505092915050565b5f80604083850312156139445761394361366f565b5b5f613951858286016136ec565b9250506020613962858286016136ec565b9150509250929050565b5f819050919050565b5f61398f61398a61398584613673565b61396c565b613673565b9050919050565b5f6139a082613975565b9050919050565b5f6139b182613996565b9050919050565b6139c1816139a7565b82525050565b5f6020820190506139da5f8301846139b8565b92915050565b5f80604083850312156139f6576139f561366f565b5b5f613a03858286016136b9565b9250506020613a14858286016136b9565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a6257607f821691505b602082108103613a7557613a74613a1e565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613aaf600d836135e9565b9150613aba82613a7b565b602082019050919050565b5f6020820190508181035f830152613adc81613aa3565b9050919050565b5f81905092915050565b50565b5f613afb5f83613ae3565b9150613b0682613aed565b5f82019050919050565b5f613b1a82613af0565b9150819050919050565b5f81519050613b32816136d6565b92915050565b5f60208284031215613b4d57613b4c61366f565b5b5f613b5a84828501613b24565b91505092915050565b5f604082019050613b765f830185613814565b613b836020830184613771565b9392505050565b5f81519050613b988161389b565b92915050565b5f60208284031215613bb357613bb261366f565b5b5f613bc084828501613b8a565b91505092915050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613bfd601d836135e9565b9150613c0882613bc9565b602082019050919050565b5f6020820190508181035f830152613c2a81613bf1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c68826136cd565b9150613c73836136cd565b9250828202613c81816136cd565b91508282048414831517613c9857613c97613c31565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cd6826136cd565b9150613ce1836136cd565b925082613cf157613cf0613c9f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d566035836135e9565b9150613d6182613cfc565b604082019050919050565b5f6020820190508181035f830152613d8381613d4a565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613de46034836135e9565b9150613def82613d8a565b604082019050919050565b5f6020820190508181035f830152613e1181613dd8565b9050919050565b5f613e22826136cd565b9150613e2d836136cd565b9250828201905080821115613e4557613e44613c31565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ea56039836135e9565b9150613eb082613e4b565b604082019050919050565b5f6020820190508181035f830152613ed281613e99565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613f2e57808604811115613f0a57613f09613c31565b5b6001851615613f195780820291505b8081029050613f2785613ed9565b9450613eee565b94509492505050565b5f82613f465760019050614001565b81613f53575f9050614001565b8160018114613f695760028114613f7357613fa2565b6001915050614001565b60ff841115613f8557613f84613c31565b5b8360020a915084821115613f9c57613f9b613c31565b5b50614001565b5060208310610133831016604e8410600b8410161715613fd75782820a905083811115613fd257613fd1613c31565b5b614001565b613fe48484846001613ee5565b92509050818404811115613ffb57613ffa613c31565b5b81810290505b9392505050565b5f614012826136cd565b915061401d83613867565b925061404a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613f37565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6140ac602f836135e9565b91506140b782614052565b604082019050919050565b5f6020820190508181035f8301526140d9816140a0565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f61413a6032836135e9565b9150614145826140e0565b604082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f4f6e6c79206f776e65722063616e20656e61626c652074726164696e670000005f82015250565b5f6141a2601d836135e9565b91506141ad8261416e565b602082019050919050565b5f6020820190508181035f8301526141cf81614196565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61420a601f836135e9565b9150614215826141d6565b602082019050919050565b5f6020820190508181035f830152614237816141fe565b9050919050565b7f4d757374206b6565702074617820617420343025206f72206c657373000000005f82015250565b5f614272601c836135e9565b915061427d8261423e565b602082019050919050565b5f6020820190508181035f83015261429f81614266565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f6142da6011836135e9565b91506142e5826142a6565b602082019050919050565b5f6020820190508181035f830152614307816142ce565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614342601e836135e9565b915061434d8261430e565b602082019050919050565b5f6020820190508181035f83015261436f81614336565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6143aa6020836135e9565b91506143b582614376565b602082019050919050565b5f6020820190508181035f8301526143d78161439e565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614412601b836135e9565b915061441d826143de565b602082019050919050565b5f6020820190508181035f83015261443f81614406565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f61447a6019836135e9565b915061448582614446565b602082019050919050565b5f6020820190508181035f8301526144a78161446e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f6144e26019836135e9565b91506144ed826144ae565b602082019050919050565b5f6020820190508181035f83015261450f816144d6565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61454a6017836135e9565b915061455582614516565b602082019050919050565b5f6020820190508181035f8301526145778161453e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6145b26016836135e9565b91506145bd8261457e565b602082019050919050565b5f6020820190508181035f8301526145df816145a6565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f6146406035836135e9565b915061464b826145e6565b604082019050919050565b5f6020820190508181035f83015261466d81614634565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146a86013836135e9565b91506146b382614674565b602082019050919050565b5f6020820190508181035f8301526146d58161469c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f6147366036836135e9565b9150614741826146dc565b604082019050919050565b5f6020820190508181035f8301526147638161472a565b9050919050565b5f614774826136cd565b915061477f836136cd565b925082820390508181111561479757614796613c31565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f6147d1601d836135e9565b91506147dc8261479d565b602082019050919050565b5f6020820190508181035f8301526147fe816147c5565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614839601b836135e9565b915061484482614805565b602082019050919050565b5f6020820190508181035f8301526148668161482d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6148a16020836135e9565b91506148ac8261486d565b602082019050919050565b5f6020820190508181035f8301526148ce81614895565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061493d816136a3565b92915050565b5f602082840312156149585761495761366f565b5b5f6149658482850161492f565b91505092915050565b5f819050919050565b5f61499161498c6149878461496e565b61396c565b6136cd565b9050919050565b6149a181614977565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149d981613692565b82525050565b5f6149ea83836149d0565b60208301905092915050565b5f602082019050919050565b5f614a0c826149a7565b614a1681856149b1565b9350614a21836149c1565b805f5b83811015614a51578151614a3888826149df565b9750614a43836149f6565b925050600181019050614a24565b5085935050505092915050565b5f60a082019050614a715f830188613771565b614a7e6020830187614998565b8181036040830152614a908186614a02565b9050614a9f6060830185613814565b614aac6080830184613771565b969550505050505056fea2646970667358221220b772acdc6cabebdef02a56382dd6584fe5008877eaea2ec8da445cdd5b2df36064736f6c63430008190033

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

000000000000000000000000be05650c5cad210a0ecb4e9189f047a94c54bb9000000000000000000000000080ea3362c07e16bc7d0cea8d9d8fa0f316802d5c0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _devWallet (address): 0xbe05650c5Cad210A0eCb4E9189F047a94C54bb90
Arg [1] : _marketingWallet (address): 0x80Ea3362c07e16BC7d0Cea8D9d8Fa0F316802D5C
Arg [2] : _swapRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000be05650c5cad210a0ecb4e9189f047a94c54bb90
Arg [1] : 00000000000000000000000080ea3362c07e16bc7d0cea8d9d8fa0f316802d5c
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

14169:10361:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9854:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10426:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24122:161;;;;;;;;;;;;;:::i;:::-;;14496:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10175:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16843:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14607:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24291:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14763:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11106:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14290:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17793:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10074:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15067:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14652:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11680:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19335:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14886:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18441:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15034:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18153:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14366:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14693:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17278:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10291:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1164:103;;;;;;;;;;;;;:::i;:::-;;17578:90;;;;;;;;;;;;;:::i;:::-;;14537:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14326:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17093:177;;;;;;;;;;;;;:::i;:::-;;881:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14574:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17678:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9962:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11899:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11511:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16956:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15104:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18725:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14820:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19023:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15000:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14247:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14411:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17440:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14455:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10947:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14928:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14962:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9854:100;9908:13;9941:5;9934:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9854:100;:::o;10426:169::-;10509:4;10526:39;10535:12;:10;:12::i;:::-;10549:7;10558:6;10526:8;:39::i;:::-;10583:4;10576:11;;10426:169;;;;:::o;24122:161::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24181:12:::1;24225:10;24217:24;;24249:21;24217:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24204:71;;;;;24170:113;24122:161::o:0;14496:32::-;;;;;;;;;;;;;:::o;10175:108::-;10236:7;10263:12;;10256:19;;10175:108;:::o;16843:105::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16930:10:::1;16918:9;;:22;;;;;;;;;;;;;;;;;;16843:105:::0;:::o;14607:38::-;;;;:::o;24291:234::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24377:12:::1;24399;24377:35;;24423:15;24441:5;:15;;;24465:4;24441:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24423:48;;24482:5;:14;;;24497:10;24509:7;24482:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24366:159;;24291:234:::0;:::o;14763:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;11106:397::-;11203:4;11220:27;11230:4;11236:2;11240:6;11220:9;:27::i;:::-;11258:16;11277:11;:17;11289:4;11277:17;;;;;;;;;;;;;;;:31;11295:12;:10;:12::i;:::-;11277:31;;;;;;;;;;;;;;;;11258:50;;11339:6;11327:8;:18;;11319:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11415:47;11424:4;11430:12;:10;:12::i;:::-;11455:6;11444:8;:17;11415:8;:47::i;:::-;11491:4;11484:11;;;11106:397;;;;;:::o;14290:23::-;;;;;;;;;;;;;:::o;17793:352::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17923:6:::1;17918:1;17902:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17901:28;;;;:::i;:::-;17891:6;:38;;17883:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;18038:4;18033:1;18017:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18016:26;;;;:::i;:::-;18006:6;:36;;17998:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18131:6;18110:18;:27;;;;17793:352:::0;:::o;10074:93::-;10132:5;10157:2;10150:9;;10074:93;:::o;15067:30::-;;;;:::o;14652:32::-;;;;:::o;11680:211::-;11766:4;11783:78;11792:12;:10;:12::i;:::-;11806:7;11852:8;11815:11;:25;11827:12;:10;:12::i;:::-;11815:25;;;;;;;;;;;;;;;:34;11841:7;11815:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11783:8;:78::i;:::-;11879:4;11872:11;;11680:211;;;;:::o;19335:247::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19454:8:::1;;;;;;;;;;;19446:16;;:4;:16;;::::0;19438:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19569:5;19535:25;:31;19561:4;19535:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19335:247:::0;;:::o;14886:33::-;;;;;;;;;;;;;:::o;18441:276::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18585:10:::1;:8;:10::i;:::-;18579:2;:16;;;;:::i;:::-;18570:4;18565:1;18549:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18548:26;;;;:::i;:::-;18547:49;;;;:::i;:::-;18537:6;:59;;18529:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;18698:10;:8;:10::i;:::-;18692:2;:16;;;;:::i;:::-;18682:6;:27;;;;:::i;:::-;18659:20;:50;;;;18441:276:::0;:::o;15034:26::-;;;;:::o;18153:280::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18295:10:::1;:8;:10::i;:::-;18289:2;:16;;;;:::i;:::-;18280:4;18275:1;18259:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18258:26;;;;:::i;:::-;18257:49;;;;:::i;:::-;18247:6;:59;;18239:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;18414:10;:8;:10::i;:::-;18408:2;:16;;;;:::i;:::-;18398:6;:27;;;;:::i;:::-;18372:23;:53;;;;18153:280:::0;:::o;14366:38::-;;;;:::o;14693:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;17278:154::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17419:5:::1;17381:29;:35;17411:4;17381:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;17278:154:::0;;:::o;10291:127::-;10365:7;10392:9;:18;10402:7;10392:18;;;;;;;;;;;;;;;;10385:25;;10291:127;;;:::o;1164:103::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1229:30:::1;1256:1;1229:18;:30::i;:::-;1164:103::o:0;17578:90::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17655:5:::1;17638:14;;:22;;;;;;;;;;;;;;;;;;17578:90::o:0;14537:30::-;;;;;;;;;;;;;:::o;14326:33::-;;;;:::o;17093:177::-;17159:7;:5;:7::i;:::-;17146:20;;:9;:20;;;17138:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17228:4;17211:14;;:21;;;;;;;;;;;;;;;;;;17258:4;17243:12;;:19;;;;;;;;;;;;;;;;;;17093:177::o;881:87::-;927:7;954:6;;;;;;;;;;;947:13;;881:87;:::o;14574:24::-;;;;;;;;;;;;;:::o;17678:107::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17770:7:::1;17755:12;;:22;;;;;;;;;;;;;;;;;;17678:107:::0;:::o;9962:104::-;10018:13;10051:7;10044:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9962:104;:::o;11899:360::-;11985:4;12002:16;12021:11;:25;12033:12;:10;:12::i;:::-;12021:25;;;;;;;;;;;;;;;:34;12047:7;12021:34;;;;;;;;;;;;;;;;12002:53;;12086:8;12074;:20;;12066:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12166:52;12175:12;:10;:12::i;:::-;12189:7;12209:8;12198;:19;12166:8;:52::i;:::-;12247:4;12240:11;;;11899:360;;;;:::o;11511:161::-;11590:4;11607:35;11617:12;:10;:12::i;:::-;11631:2;11635:6;11607:9;:35::i;:::-;11660:4;11653:11;;11511:161;;;;:::o;16956:129::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17061:16:::1;17043:15;;:34;;;;;;;;;;;;;;;;;;16956:129:::0;:::o;15104:24::-;;;;:::o;18725:290::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18842:12:::1;18824:15;:30;;;;18877:9;18865;:21;;;;18929:9;;18911:15;;:27;;;;:::i;:::-;18897:11;:41;;;;18972:2;18957:11;;:17;;18949:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18725:290:::0;;:::o;14820:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19023:300::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19145:12:::1;19126:16;:31;;;;19181:9;19168:10;:22;;;;19235:10;;19216:16;;:29;;;;:::i;:::-;19201:12;:44;;;;19280:2;19264:12;;:18;;19256:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19023:300:::0;;:::o;15000:25::-;;;;:::o;14247:36::-;;;;;;;;;;;;;:::o;14411:35::-;;;;:::o;17440:130::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17557:5:::1;17529:16;:25;17546:7;17529:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17440:130:::0;;:::o;14455:34::-;;;;;;;;;;;;;:::o;10947:151::-;11036:7;11063:11;:18;11075:5;11063:18;;;;;;;;;;;;;;;:27;11082:7;11063:27;;;;;;;;;;;;;;;;11056:34;;10947:151;;;;:::o;14928:27::-;;;;:::o;14962:31::-;;;;:::o;976:180::-;823:12;:10;:12::i;:::-;812:23;;:7;:5;:7::i;:::-;:23;;;804:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1085:1:::1;1065:22;;:8;:22;;::::0;1057:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1120:28;1139:8;1120:18;:28::i;:::-;976:180:::0;:::o;318:98::-;371:7;398:10;391:17;;318:98;:::o;10603:336::-;10722:1;10705:19;;:5;:19;;;10697:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10797:1;10778:21;;:7;:21;;;10770:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10877:6;10847:11;:18;10859:5;10847:18;;;;;;;;;;;;;;;:27;10866:7;10847:27;;;;;;;;;;;;;;;:36;;;;10915:7;10899:32;;10908:5;10899:32;;;10924:6;10899:32;;;;;;:::i;:::-;;;;;;;;10603:336;;;:::o;20482:2913::-;20630:1;20614:18;;:4;:18;;;20606:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20697:1;20683:16;;:2;:16;;;20675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20749:9;:15;20759:4;20749:15;;;;;;;;;;;;;;;;;;;;;;;;;20748:16;20740:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20814:9;:13;20824:2;20814:13;;;;;;;;;;;;;;;;;;;;;;;;;20813:14;20805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20882:1;20872:6;:11;20868:93;;20900:28;20916:4;20922:2;20926:1;20900:15;:28::i;:::-;20943:7;;20868:93;20977:14;;;;;;;;;;;20973:1085;;;21020:7;:5;:7::i;:::-;21012:15;;:4;:15;;;;:32;;;;;21037:7;:5;:7::i;:::-;21031:13;;:2;:13;;;;21012:32;:52;;;;;21062:1;21048:16;;:2;:16;;;;21012:52;:77;;;;;21082:6;21068:21;;:2;:21;;;;21012:77;:91;;;;;21094:9;;;;;;;;;;;21093:10;21012:91;21008:1039;;;21129:14;;;;;;;;;;;21124:145;;21176:16;:22;21193:4;21176:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;21202:16;:20;21219:2;21202:20;;;;;;;;;;;;;;;;;;;;;;;;;21176:46;21168:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21124:145;21293:25;:31;21319:4;21293:31;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;21329:29;:33;21359:2;21329:33;;;;;;;;;;;;;;;;;;;;;;;;;21328:34;21293:69;21289:743;;;21405:20;;21395:6;:30;;21387:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21540:23;;21523:13;21533:2;21523:9;:13::i;:::-;21514:6;:22;;;;:::i;:::-;:49;;21506:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21289:743;;;21634:25;:29;21660:2;21634:29;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;21668:29;:35;21698:4;21668:35;;;;;;;;;;;;;;;;;;;;;;;;;21667:36;21634:69;21630:402;;;21746:20;;21736:6;:30;;21728:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21630:402;;;21873:29;:33;21903:2;21873:33;;;;;;;;;;;;;;;;;;;;;;;;;21868:164;;21965:23;;21948:13;21958:2;21948:9;:13::i;:::-;21939:6;:22;;;;:::i;:::-;:49;;21931:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21868:164;21630:402;21289:743;21008:1039;20973:1085;22070:20;22093:24;22111:4;22093:9;:24::i;:::-;22070:47;;22128:12;22159:18;;22143:12;:34;;22128:49;;22192:12;;;;;;;;;;;:23;;;;;22208:7;22192:23;:37;;;;;22220:9;;;;;;;;;;;22219:10;22192:37;:86;;;;;22247:25;:31;22273:4;22247:31;;;;;;;;;;;;;;;;;;;;;;;;;22246:32;22192:86;:113;;;;;22283:16;:22;22300:4;22283:22;;;;;;;;;;;;;;;;;;;;;;;;;22282:23;22192:113;:138;;;;;22310:16;:20;22327:2;22310:20;;;;;;;;;;;;;;;;;;;;;;;;;22309:21;22192:138;22188:244;;;22359:4;22347:9;;:16;;;;;;;;;;;;;;;;;;22378:10;:8;:10::i;:::-;22415:5;22403:9;;:17;;;;;;;;;;;;;;;;;;22188:244;22444:9;22457;;;;;;;;;;;22456:10;22444:22;;22481:16;:22;22498:4;22481:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22507:16;:20;22524:2;22507:20;;;;;;;;;;;;;;;;;;;;;;;;;22481:46;22477:77;;;22549:5;22542:12;;22477:77;22567:12;22598:4;22594:748;;;22623:25;:29;22649:2;22623:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;22671:1;22656:12;;:16;22623:49;22619:595;;;22700:33;22729:3;22700:24;22711:12;;22700:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22693:40;;22795:12;;22781:10;;22774:4;:17;;;;:::i;:::-;22773:34;;;;:::i;:::-;22752:17;;:55;;;;;;;:::i;:::-;;;;;;;;22881:12;;22861:16;;22854:4;:23;;;;:::i;:::-;22853:40;;;;:::i;:::-;22826:23;;:67;;;;;;;:::i;:::-;;;;;;;;22619:595;;;22932:25;:31;22958:4;22932:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22981:1;22967:11;;:15;22932:50;22928:286;;;23010:32;23038:3;23010:23;23021:11;;23010:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;23003:39;;23103:11;;23090:9;;23083:4;:16;;;;:::i;:::-;23082:32;;;;:::i;:::-;23061:17;;:53;;;;;;;:::i;:::-;;;;;;;;23187:11;;23168:15;;23161:4;:22;;;;:::i;:::-;23160:38;;;;:::i;:::-;23133:23;;:65;;;;;;;:::i;:::-;;;;;;;;22928:286;22619:595;23239:1;23232:4;:8;23228:73;;;23259:42;23275:4;23289;23296;23259:15;:42::i;:::-;23228:73;23326:4;23316:14;;;;;:::i;:::-;;;22594:748;23354:33;23370:4;23376:2;23380:6;23354:15;:33::i;:::-;20595:2800;;;;20482:2913;;;;:::o;1275:191::-;1349:16;1368:6;;;;;;;;;;;1349:25;;1394:8;1385:6;;:17;;;;;;;;;;;;;;;;;;1449:8;1418:40;;1439:8;1418:40;;;;;;;;;;;;1338:128;1275:191;:::o;13403:607::-;13516:1;13500:18;;:4;:18;;;13492:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13585:1;13571:16;;:2;:16;;;13563:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13630:38;13651:4;13657:2;13661:6;13630:20;:38::i;:::-;13679:19;13701:9;:15;13711:4;13701:15;;;;;;;;;;;;;;;;13679:37;;13750:6;13735:11;:21;;13727:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13861:6;13847:11;:20;13829:9;:15;13839:4;13829:15;;;;;;;;;;;;;;;:38;;;;13906:6;13889:9;:13;13899:2;13889:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13943:2;13928:26;;13937:4;13928:26;;;13947:6;13928:26;;;;;;:::i;:::-;;;;;;;;13965:37;13985:4;13991:2;13995:6;13965:19;:37::i;:::-;13481:529;13403:607;;;:::o;19590:884::-;19629:12;19652:25;19706:17;;19680:23;;:43;;;;:::i;:::-;19652:71;;19734:20;19757:24;19775:4;19757:9;:24::i;:::-;19734:47;;19819:1;19798:17;:22;:43;;;;19840:1;19824:12;:17;19798:43;19794:69;;;19856:7;;;;;19794:69;19915:2;19894:18;;:23;;;;:::i;:::-;19879:12;:38;19875:95;;;19968:2;19947:18;;:23;;;;:::i;:::-;19932:38;;19875:95;19983:22;20008:21;19983:46;;20040:30;20057:12;20040:16;:30::i;:::-;20083:18;20104:41;20130:14;20104:21;:25;;:41;;;;:::i;:::-;20083:62;;20156:17;20176:56;20214:17;20176:33;20191:17;;20176:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;20156:76;;20267:9;;;;;;;;;;;20259:23;;20290:9;20259:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20245:59;;;;;20337:15;;;;;;;;;;;20329:29;;20367:21;20329:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20315:79;;;;;20433:1;20407:23;:27;;;;20465:1;20445:17;:21;;;;19618:856;;;;;;19590:884;:::o;1497:98::-;1555:7;1586:1;1582;:5;;;;:::i;:::-;1575:12;;1497:98;;;;:::o;1881:::-;1939:7;1970:1;1966;:5;;;;:::i;:::-;1959:12;;1881:98;;;;:::o;13270:125::-;;;;:::o;14018:144::-;;;;:::o;23555:559::-;23676:21;23714:1;23700:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23676:40;;23745:4;23727;23732:1;23727:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23771:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23761:4;23766:1;23761:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;23801:52;23818:4;23833:10;;;;;;;;;;;23846:6;23801:8;:52::i;:::-;23892:10;;;;;;;;;;;:61;;;23968:6;23989:1;24033:4;24060;24080:15;23892:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23605:509;23555:559;:::o;2526:98::-;2584:7;2615:1;2611;:5;;;;:::i;:::-;2604:12;;2526:98;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:118::-;4738:24;4756:5;4738:24;:::i;:::-;4733:3;4726:37;4651:118;;:::o;4775:222::-;4868:4;4906:2;4895:9;4891:18;4883:26;;4919:71;4987:1;4976:9;4972:17;4963:6;4919:71;:::i;:::-;4775:222;;;;:::o;5003:329::-;5062:6;5111:2;5099:9;5090:7;5086:23;5082:32;5079:119;;;5117:79;;:::i;:::-;5079:119;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5003:329;;;;:::o;5338:86::-;5373:7;5413:4;5406:5;5402:16;5391:27;;5338:86;;;:::o;5430:112::-;5513:22;5529:5;5513:22;:::i;:::-;5508:3;5501:35;5430:112;;:::o;5548:214::-;5637:4;5675:2;5664:9;5660:18;5652:26;;5688:67;5752:1;5741:9;5737:17;5728:6;5688:67;:::i;:::-;5548:214;;;;:::o;5768:116::-;5838:21;5853:5;5838:21;:::i;:::-;5831:5;5828:32;5818:60;;5874:1;5871;5864:12;5818:60;5768:116;:::o;5890:133::-;5933:5;5971:6;5958:20;5949:29;;5987:30;6011:5;5987:30;:::i;:::-;5890:133;;;;:::o;6029:468::-;6094:6;6102;6151:2;6139:9;6130:7;6126:23;6122:32;6119:119;;;6157:79;;:::i;:::-;6119:119;6277:1;6302:53;6347:7;6338:6;6327:9;6323:22;6302:53;:::i;:::-;6292:63;;6248:117;6404:2;6430:50;6472:7;6463:6;6452:9;6448:22;6430:50;:::i;:::-;6420:60;;6375:115;6029:468;;;;;:::o;6503:323::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:50;6801:7;6792:6;6781:9;6777:22;6759:50;:::i;:::-;6749:60;;6705:114;6503:323;;;;:::o;6832:474::-;6900:6;6908;6957:2;6945:9;6936:7;6932:23;6928:32;6925:119;;;6963:79;;:::i;:::-;6925:119;7083:1;7108:53;7153:7;7144:6;7133:9;7129:22;7108:53;:::i;:::-;7098:63;;7054:117;7210:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;:::i;:::-;7226:63;;7181:118;6832:474;;;;;:::o;7312:60::-;7340:3;7361:5;7354:12;;7312:60;;;:::o;7378:142::-;7428:9;7461:53;7479:34;7488:24;7506:5;7488:24;:::i;:::-;7479:34;:::i;:::-;7461:53;:::i;:::-;7448:66;;7378:142;;;:::o;7526:126::-;7576:9;7609:37;7640:5;7609:37;:::i;:::-;7596:50;;7526:126;;;:::o;7658:152::-;7734:9;7767:37;7798:5;7767:37;:::i;:::-;7754:50;;7658:152;;;:::o;7816:183::-;7929:63;7986:5;7929:63;:::i;:::-;7924:3;7917:76;7816:183;;:::o;8005:274::-;8124:4;8162:2;8151:9;8147:18;8139:26;;8175:97;8269:1;8258:9;8254:17;8245:6;8175:97;:::i;:::-;8005:274;;;;:::o;8285:474::-;8353:6;8361;8410:2;8398:9;8389:7;8385:23;8381:32;8378:119;;;8416:79;;:::i;:::-;8378:119;8536:1;8561:53;8606:7;8597:6;8586:9;8582:22;8561:53;:::i;:::-;8551:63;;8507:117;8663:2;8689:53;8734:7;8725:6;8714:9;8710:22;8689:53;:::i;:::-;8679:63;;8634:118;8285:474;;;;;:::o;8765:180::-;8813:77;8810:1;8803:88;8910:4;8907:1;8900:15;8934:4;8931:1;8924:15;8951:320;8995:6;9032:1;9026:4;9022:12;9012:22;;9079:1;9073:4;9069:12;9100:18;9090:81;;9156:4;9148:6;9144:17;9134:27;;9090:81;9218:2;9210:6;9207:14;9187:18;9184:38;9181:84;;9237:18;;:::i;:::-;9181:84;9002:269;8951:320;;;:::o;9277:163::-;9417:15;9413:1;9405:6;9401:14;9394:39;9277:163;:::o;9446:366::-;9588:3;9609:67;9673:2;9668:3;9609:67;:::i;:::-;9602:74;;9685:93;9774:3;9685:93;:::i;:::-;9803:2;9798:3;9794:12;9787:19;;9446:366;;;:::o;9818:419::-;9984:4;10022:2;10011:9;10007:18;9999:26;;10071:9;10065:4;10061:20;10057:1;10046:9;10042:17;10035:47;10099:131;10225:4;10099:131;:::i;:::-;10091:139;;9818:419;;;:::o;10243:147::-;10344:11;10381:3;10366:18;;10243:147;;;;:::o;10396:114::-;;:::o;10516:398::-;10675:3;10696:83;10777:1;10772:3;10696:83;:::i;:::-;10689:90;;10788:93;10877:3;10788:93;:::i;:::-;10906:1;10901:3;10897:11;10890:18;;10516:398;;;:::o;10920:379::-;11104:3;11126:147;11269:3;11126:147;:::i;:::-;11119:154;;11290:3;11283:10;;10920:379;;;:::o;11305:143::-;11362:5;11393:6;11387:13;11378:22;;11409:33;11436:5;11409:33;:::i;:::-;11305:143;;;;:::o;11454:351::-;11524:6;11573:2;11561:9;11552:7;11548:23;11544:32;11541:119;;;11579:79;;:::i;:::-;11541:119;11699:1;11724:64;11780:7;11771:6;11760:9;11756:22;11724:64;:::i;:::-;11714:74;;11670:128;11454:351;;;;:::o;11811:332::-;11932:4;11970:2;11959:9;11955:18;11947:26;;11983:71;12051:1;12040:9;12036:17;12027:6;11983:71;:::i;:::-;12064:72;12132:2;12121:9;12117:18;12108:6;12064:72;:::i;:::-;11811:332;;;;;:::o;12149:137::-;12203:5;12234:6;12228:13;12219:22;;12250:30;12274:5;12250:30;:::i;:::-;12149:137;;;;:::o;12292:345::-;12359:6;12408:2;12396:9;12387:7;12383:23;12379:32;12376:119;;;12414:79;;:::i;:::-;12376:119;12534:1;12559:61;12612:7;12603:6;12592:9;12588:22;12559:61;:::i;:::-;12549:71;;12505:125;12292:345;;;;:::o;12643:179::-;12783:31;12779:1;12771:6;12767:14;12760:55;12643:179;:::o;12828:366::-;12970:3;12991:67;13055:2;13050:3;12991:67;:::i;:::-;12984:74;;13067:93;13156:3;13067:93;:::i;:::-;13185:2;13180:3;13176:12;13169:19;;12828:366;;;:::o;13200:419::-;13366:4;13404:2;13393:9;13389:18;13381:26;;13453:9;13447:4;13443:20;13439:1;13428:9;13424:17;13417:47;13481:131;13607:4;13481:131;:::i;:::-;13473:139;;13200:419;;;:::o;13625:180::-;13673:77;13670:1;13663:88;13770:4;13767:1;13760:15;13794:4;13791:1;13784:15;13811:410;13851:7;13874:20;13892:1;13874:20;:::i;:::-;13869:25;;13908:20;13926:1;13908:20;:::i;:::-;13903:25;;13963:1;13960;13956:9;13985:30;14003:11;13985:30;:::i;:::-;13974:41;;14164:1;14155:7;14151:15;14148:1;14145:22;14125:1;14118:9;14098:83;14075:139;;14194:18;;:::i;:::-;14075:139;13859:362;13811:410;;;;:::o;14227:180::-;14275:77;14272:1;14265:88;14372:4;14369:1;14362:15;14396:4;14393:1;14386:15;14413:185;14453:1;14470:20;14488:1;14470:20;:::i;:::-;14465:25;;14504:20;14522:1;14504:20;:::i;:::-;14499:25;;14543:1;14533:35;;14548:18;;:::i;:::-;14533:35;14590:1;14587;14583:9;14578:14;;14413:185;;;;:::o;14604:240::-;14744:34;14740:1;14732:6;14728:14;14721:58;14813:23;14808:2;14800:6;14796:15;14789:48;14604:240;:::o;14850:366::-;14992:3;15013:67;15077:2;15072:3;15013:67;:::i;:::-;15006:74;;15089:93;15178:3;15089:93;:::i;:::-;15207:2;15202:3;15198:12;15191:19;;14850:366;;;:::o;15222:419::-;15388:4;15426:2;15415:9;15411:18;15403:26;;15475:9;15469:4;15465:20;15461:1;15450:9;15446:17;15439:47;15503:131;15629:4;15503:131;:::i;:::-;15495:139;;15222:419;;;:::o;15647:239::-;15787:34;15783:1;15775:6;15771:14;15764:58;15856:22;15851:2;15843:6;15839:15;15832:47;15647:239;:::o;15892:366::-;16034:3;16055:67;16119:2;16114:3;16055:67;:::i;:::-;16048:74;;16131:93;16220:3;16131:93;:::i;:::-;16249:2;16244:3;16240:12;16233:19;;15892:366;;;:::o;16264:419::-;16430:4;16468:2;16457:9;16453:18;16445:26;;16517:9;16511:4;16507:20;16503:1;16492:9;16488:17;16481:47;16545:131;16671:4;16545:131;:::i;:::-;16537:139;;16264:419;;;:::o;16689:191::-;16729:3;16748:20;16766:1;16748:20;:::i;:::-;16743:25;;16782:20;16800:1;16782:20;:::i;:::-;16777:25;;16825:1;16822;16818:9;16811:16;;16846:3;16843:1;16840:10;16837:36;;;16853:18;;:::i;:::-;16837:36;16689:191;;;;:::o;16886:244::-;17026:34;17022:1;17014:6;17010:14;17003:58;17095:27;17090:2;17082:6;17078:15;17071:52;16886:244;:::o;17136:366::-;17278:3;17299:67;17363:2;17358:3;17299:67;:::i;:::-;17292:74;;17375:93;17464:3;17375:93;:::i;:::-;17493:2;17488:3;17484:12;17477:19;;17136:366;;;:::o;17508:419::-;17674:4;17712:2;17701:9;17697:18;17689:26;;17761:9;17755:4;17751:20;17747:1;17736:9;17732:17;17725:47;17789:131;17915:4;17789:131;:::i;:::-;17781:139;;17508:419;;;:::o;17933:102::-;17975:8;18022:5;18019:1;18015:13;17994:34;;17933:102;;;:::o;18041:848::-;18102:5;18109:4;18133:6;18124:15;;18157:5;18148:14;;18171:712;18192:1;18182:8;18179:15;18171:712;;;18287:4;18282:3;18278:14;18272:4;18269:24;18266:50;;;18296:18;;:::i;:::-;18266:50;18346:1;18336:8;18332:16;18329:451;;;18761:4;18754:5;18750:16;18741:25;;18329:451;18811:4;18805;18801:15;18793:23;;18841:32;18864:8;18841:32;:::i;:::-;18829:44;;18171:712;;;18041:848;;;;;;;:::o;18895:1073::-;18949:5;19140:8;19130:40;;19161:1;19152:10;;19163:5;;19130:40;19189:4;19179:36;;19206:1;19197:10;;19208:5;;19179:36;19275:4;19323:1;19318:27;;;;19359:1;19354:191;;;;19268:277;;19318:27;19336:1;19327:10;;19338:5;;;19354:191;19399:3;19389:8;19386:17;19383:43;;;19406:18;;:::i;:::-;19383:43;19455:8;19452:1;19448:16;19439:25;;19490:3;19483:5;19480:14;19477:40;;;19497:18;;:::i;:::-;19477:40;19530:5;;;19268:277;;19654:2;19644:8;19641:16;19635:3;19629:4;19626:13;19622:36;19604:2;19594:8;19591:16;19586:2;19580:4;19577:12;19573:35;19557:111;19554:246;;;19710:8;19704:4;19700:19;19691:28;;19745:3;19738:5;19735:14;19732:40;;;19752:18;;:::i;:::-;19732:40;19785:5;;19554:246;19825:42;19863:3;19853:8;19847:4;19844:1;19825:42;:::i;:::-;19810:57;;;;19899:4;19894:3;19890:14;19883:5;19880:25;19877:51;;;19908:18;;:::i;:::-;19877:51;19957:4;19950:5;19946:16;19937:25;;18895:1073;;;;;;:::o;19974:281::-;20032:5;20056:23;20074:4;20056:23;:::i;:::-;20048:31;;20100:25;20116:8;20100:25;:::i;:::-;20088:37;;20144:104;20181:66;20171:8;20165:4;20144:104;:::i;:::-;20135:113;;19974:281;;;;:::o;20261:234::-;20401:34;20397:1;20389:6;20385:14;20378:58;20470:17;20465:2;20457:6;20453:15;20446:42;20261:234;:::o;20501:366::-;20643:3;20664:67;20728:2;20723:3;20664:67;:::i;:::-;20657:74;;20740:93;20829:3;20740:93;:::i;:::-;20858:2;20853:3;20849:12;20842:19;;20501:366;;;:::o;20873:419::-;21039:4;21077:2;21066:9;21062:18;21054:26;;21126:9;21120:4;21116:20;21112:1;21101:9;21097:17;21090:47;21154:131;21280:4;21154:131;:::i;:::-;21146:139;;20873:419;;;:::o;21298:237::-;21438:34;21434:1;21426:6;21422:14;21415:58;21507:20;21502:2;21494:6;21490:15;21483:45;21298:237;:::o;21541:366::-;21683:3;21704:67;21768:2;21763:3;21704:67;:::i;:::-;21697:74;;21780:93;21869:3;21780:93;:::i;:::-;21898:2;21893:3;21889:12;21882:19;;21541:366;;;:::o;21913:419::-;22079:4;22117:2;22106:9;22102:18;22094:26;;22166:9;22160:4;22156:20;22152:1;22141:9;22137:17;22130:47;22194:131;22320:4;22194:131;:::i;:::-;22186:139;;21913:419;;;:::o;22338:179::-;22478:31;22474:1;22466:6;22462:14;22455:55;22338:179;:::o;22523:366::-;22665:3;22686:67;22750:2;22745:3;22686:67;:::i;:::-;22679:74;;22762:93;22851:3;22762:93;:::i;:::-;22880:2;22875:3;22871:12;22864:19;;22523:366;;;:::o;22895:419::-;23061:4;23099:2;23088:9;23084:18;23076:26;;23148:9;23142:4;23138:20;23134:1;23123:9;23119:17;23112:47;23176:131;23302:4;23176:131;:::i;:::-;23168:139;;22895:419;;;:::o;23320:181::-;23460:33;23456:1;23448:6;23444:14;23437:57;23320:181;:::o;23507:366::-;23649:3;23670:67;23734:2;23729:3;23670:67;:::i;:::-;23663:74;;23746:93;23835:3;23746:93;:::i;:::-;23864:2;23859:3;23855:12;23848:19;;23507:366;;;:::o;23879:419::-;24045:4;24083:2;24072:9;24068:18;24060:26;;24132:9;24126:4;24122:20;24118:1;24107:9;24103:17;24096:47;24160:131;24286:4;24160:131;:::i;:::-;24152:139;;23879:419;;;:::o;24304:178::-;24444:30;24440:1;24432:6;24428:14;24421:54;24304:178;:::o;24488:366::-;24630:3;24651:67;24715:2;24710:3;24651:67;:::i;:::-;24644:74;;24727:93;24816:3;24727:93;:::i;:::-;24845:2;24840:3;24836:12;24829:19;;24488:366;;;:::o;24860:419::-;25026:4;25064:2;25053:9;25049:18;25041:26;;25113:9;25107:4;25103:20;25099:1;25088:9;25084:17;25077:47;25141:131;25267:4;25141:131;:::i;:::-;25133:139;;24860:419;;;:::o;25285:167::-;25425:19;25421:1;25413:6;25409:14;25402:43;25285:167;:::o;25458:366::-;25600:3;25621:67;25685:2;25680:3;25621:67;:::i;:::-;25614:74;;25697:93;25786:3;25697:93;:::i;:::-;25815:2;25810:3;25806:12;25799:19;;25458:366;;;:::o;25830:419::-;25996:4;26034:2;26023:9;26019:18;26011:26;;26083:9;26077:4;26073:20;26069:1;26058:9;26054:17;26047:47;26111:131;26237:4;26111:131;:::i;:::-;26103:139;;25830:419;;;:::o;26255:180::-;26395:32;26391:1;26383:6;26379:14;26372:56;26255:180;:::o;26441:366::-;26583:3;26604:67;26668:2;26663:3;26604:67;:::i;:::-;26597:74;;26680:93;26769:3;26680:93;:::i;:::-;26798:2;26793:3;26789:12;26782:19;;26441:366;;;:::o;26813:419::-;26979:4;27017:2;27006:9;27002:18;26994:26;;27066:9;27060:4;27056:20;27052:1;27041:9;27037:17;27030:47;27094:131;27220:4;27094:131;:::i;:::-;27086:139;;26813:419;;;:::o;27238:182::-;27378:34;27374:1;27366:6;27362:14;27355:58;27238:182;:::o;27426:366::-;27568:3;27589:67;27653:2;27648:3;27589:67;:::i;:::-;27582:74;;27665:93;27754:3;27665:93;:::i;:::-;27783:2;27778:3;27774:12;27767:19;;27426:366;;;:::o;27798:419::-;27964:4;28002:2;27991:9;27987:18;27979:26;;28051:9;28045:4;28041:20;28037:1;28026:9;28022:17;28015:47;28079:131;28205:4;28079:131;:::i;:::-;28071:139;;27798:419;;;:::o;28223:177::-;28363:29;28359:1;28351:6;28347:14;28340:53;28223:177;:::o;28406:366::-;28548:3;28569:67;28633:2;28628:3;28569:67;:::i;:::-;28562:74;;28645:93;28734:3;28645:93;:::i;:::-;28763:2;28758:3;28754:12;28747:19;;28406:366;;;:::o;28778:419::-;28944:4;28982:2;28971:9;28967:18;28959:26;;29031:9;29025:4;29021:20;29017:1;29006:9;29002:17;28995:47;29059:131;29185:4;29059:131;:::i;:::-;29051:139;;28778:419;;;:::o;29203:175::-;29343:27;29339:1;29331:6;29327:14;29320:51;29203:175;:::o;29384:366::-;29526:3;29547:67;29611:2;29606:3;29547:67;:::i;:::-;29540:74;;29623:93;29712:3;29623:93;:::i;:::-;29741:2;29736:3;29732:12;29725:19;;29384:366;;;:::o;29756:419::-;29922:4;29960:2;29949:9;29945:18;29937:26;;30009:9;30003:4;29999:20;29995:1;29984:9;29980:17;29973:47;30037:131;30163:4;30037:131;:::i;:::-;30029:139;;29756:419;;;:::o;30181:175::-;30321:27;30317:1;30309:6;30305:14;30298:51;30181:175;:::o;30362:366::-;30504:3;30525:67;30589:2;30584:3;30525:67;:::i;:::-;30518:74;;30601:93;30690:3;30601:93;:::i;:::-;30719:2;30714:3;30710:12;30703:19;;30362:366;;;:::o;30734:419::-;30900:4;30938:2;30927:9;30923:18;30915:26;;30987:9;30981:4;30977:20;30973:1;30962:9;30958:17;30951:47;31015:131;31141:4;31015:131;:::i;:::-;31007:139;;30734:419;;;:::o;31159:173::-;31299:25;31295:1;31287:6;31283:14;31276:49;31159:173;:::o;31338:366::-;31480:3;31501:67;31565:2;31560:3;31501:67;:::i;:::-;31494:74;;31577:93;31666:3;31577:93;:::i;:::-;31695:2;31690:3;31686:12;31679:19;;31338:366;;;:::o;31710:419::-;31876:4;31914:2;31903:9;31899:18;31891:26;;31963:9;31957:4;31953:20;31949:1;31938:9;31934:17;31927:47;31991:131;32117:4;31991:131;:::i;:::-;31983:139;;31710:419;;;:::o;32135:172::-;32275:24;32271:1;32263:6;32259:14;32252:48;32135:172;:::o;32313:366::-;32455:3;32476:67;32540:2;32535:3;32476:67;:::i;:::-;32469:74;;32552:93;32641:3;32552:93;:::i;:::-;32670:2;32665:3;32661:12;32654:19;;32313:366;;;:::o;32685:419::-;32851:4;32889:2;32878:9;32874:18;32866:26;;32938:9;32932:4;32928:20;32924:1;32913:9;32909:17;32902:47;32966:131;33092:4;32966:131;:::i;:::-;32958:139;;32685:419;;;:::o;33110:240::-;33250:34;33246:1;33238:6;33234:14;33227:58;33319:23;33314:2;33306:6;33302:15;33295:48;33110:240;:::o;33356:366::-;33498:3;33519:67;33583:2;33578:3;33519:67;:::i;:::-;33512:74;;33595:93;33684:3;33595:93;:::i;:::-;33713:2;33708:3;33704:12;33697:19;;33356:366;;;:::o;33728:419::-;33894:4;33932:2;33921:9;33917:18;33909:26;;33981:9;33975:4;33971:20;33967:1;33956:9;33952:17;33945:47;34009:131;34135:4;34009:131;:::i;:::-;34001:139;;33728:419;;;:::o;34153:169::-;34293:21;34289:1;34281:6;34277:14;34270:45;34153:169;:::o;34328:366::-;34470:3;34491:67;34555:2;34550:3;34491:67;:::i;:::-;34484:74;;34567:93;34656:3;34567:93;:::i;:::-;34685:2;34680:3;34676:12;34669:19;;34328:366;;;:::o;34700:419::-;34866:4;34904:2;34893:9;34889:18;34881:26;;34953:9;34947:4;34943:20;34939:1;34928:9;34924:17;34917:47;34981:131;35107:4;34981:131;:::i;:::-;34973:139;;34700:419;;;:::o;35125:241::-;35265:34;35261:1;35253:6;35249:14;35242:58;35334:24;35329:2;35321:6;35317:15;35310:49;35125:241;:::o;35372:366::-;35514:3;35535:67;35599:2;35594:3;35535:67;:::i;:::-;35528:74;;35611:93;35700:3;35611:93;:::i;:::-;35729:2;35724:3;35720:12;35713:19;;35372:366;;;:::o;35744:419::-;35910:4;35948:2;35937:9;35933:18;35925:26;;35997:9;35991:4;35987:20;35983:1;35972:9;35968:17;35961:47;36025:131;36151:4;36025:131;:::i;:::-;36017:139;;35744:419;;;:::o;36169:194::-;36209:4;36229:20;36247:1;36229:20;:::i;:::-;36224:25;;36263:20;36281:1;36263:20;:::i;:::-;36258:25;;36307:1;36304;36300:9;36292:17;;36331:1;36325:4;36322:11;36319:37;;;36336:18;;:::i;:::-;36319:37;36169:194;;;;:::o;36369:179::-;36509:31;36505:1;36497:6;36493:14;36486:55;36369:179;:::o;36554:366::-;36696:3;36717:67;36781:2;36776:3;36717:67;:::i;:::-;36710:74;;36793:93;36882:3;36793:93;:::i;:::-;36911:2;36906:3;36902:12;36895:19;;36554:366;;;:::o;36926:419::-;37092:4;37130:2;37119:9;37115:18;37107:26;;37179:9;37173:4;37169:20;37165:1;37154:9;37150:17;37143:47;37207:131;37333:4;37207:131;:::i;:::-;37199:139;;36926:419;;;:::o;37351:177::-;37491:29;37487:1;37479:6;37475:14;37468:53;37351:177;:::o;37534:366::-;37676:3;37697:67;37761:2;37756:3;37697:67;:::i;:::-;37690:74;;37773:93;37862:3;37773:93;:::i;:::-;37891:2;37886:3;37882:12;37875:19;;37534:366;;;:::o;37906:419::-;38072:4;38110:2;38099:9;38095:18;38087:26;;38159:9;38153:4;38149:20;38145:1;38134:9;38130:17;38123:47;38187:131;38313:4;38187:131;:::i;:::-;38179:139;;37906:419;;;:::o;38331:182::-;38471:34;38467:1;38459:6;38455:14;38448:58;38331:182;:::o;38519:366::-;38661:3;38682:67;38746:2;38741:3;38682:67;:::i;:::-;38675:74;;38758:93;38847:3;38758:93;:::i;:::-;38876:2;38871:3;38867:12;38860:19;;38519:366;;;:::o;38891:419::-;39057:4;39095:2;39084:9;39080:18;39072:26;;39144:9;39138:4;39134:20;39130:1;39119:9;39115:17;39108:47;39172:131;39298:4;39172:131;:::i;:::-;39164:139;;38891:419;;;:::o;39316:180::-;39364:77;39361:1;39354:88;39461:4;39458:1;39451:15;39485:4;39482:1;39475:15;39502:180;39550:77;39547:1;39540:88;39647:4;39644:1;39637:15;39671:4;39668:1;39661:15;39688:143;39745:5;39776:6;39770:13;39761:22;;39792:33;39819:5;39792:33;:::i;:::-;39688:143;;;;:::o;39837:351::-;39907:6;39956:2;39944:9;39935:7;39931:23;39927:32;39924:119;;;39962:79;;:::i;:::-;39924:119;40082:1;40107:64;40163:7;40154:6;40143:9;40139:22;40107:64;:::i;:::-;40097:74;;40053:128;39837:351;;;;:::o;40194:85::-;40239:7;40268:5;40257:16;;40194:85;;;:::o;40285:158::-;40343:9;40376:61;40394:42;40403:32;40429:5;40403:32;:::i;:::-;40394:42;:::i;:::-;40376:61;:::i;:::-;40363:74;;40285:158;;;:::o;40449:147::-;40544:45;40583:5;40544:45;:::i;:::-;40539:3;40532:58;40449:147;;:::o;40602:114::-;40669:6;40703:5;40697:12;40687:22;;40602:114;;;:::o;40722:184::-;40821:11;40855:6;40850:3;40843:19;40895:4;40890:3;40886:14;40871:29;;40722:184;;;;:::o;40912:132::-;40979:4;41002:3;40994:11;;41032:4;41027:3;41023:14;41015:22;;40912:132;;;:::o;41050:108::-;41127:24;41145:5;41127:24;:::i;:::-;41122:3;41115:37;41050:108;;:::o;41164:179::-;41233:10;41254:46;41296:3;41288:6;41254:46;:::i;:::-;41332:4;41327:3;41323:14;41309:28;;41164:179;;;;:::o;41349:113::-;41419:4;41451;41446:3;41442:14;41434:22;;41349:113;;;:::o;41498:732::-;41617:3;41646:54;41694:5;41646:54;:::i;:::-;41716:86;41795:6;41790:3;41716:86;:::i;:::-;41709:93;;41826:56;41876:5;41826:56;:::i;:::-;41905:7;41936:1;41921:284;41946:6;41943:1;41940:13;41921:284;;;42022:6;42016:13;42049:63;42108:3;42093:13;42049:63;:::i;:::-;42042:70;;42135:60;42188:6;42135:60;:::i;:::-;42125:70;;41981:224;41968:1;41965;41961:9;41956:14;;41921:284;;;41925:14;42221:3;42214:10;;41622:608;;;41498:732;;;;:::o;42236:831::-;42499:4;42537:3;42526:9;42522:19;42514:27;;42551:71;42619:1;42608:9;42604:17;42595:6;42551:71;:::i;:::-;42632:80;42708:2;42697:9;42693:18;42684:6;42632:80;:::i;:::-;42759:9;42753:4;42749:20;42744:2;42733:9;42729:18;42722:48;42787:108;42890:4;42881:6;42787:108;:::i;:::-;42779:116;;42905:72;42973:2;42962:9;42958:18;42949:6;42905:72;:::i;:::-;42987:73;43055:3;43044:9;43040:19;43031:6;42987:73;:::i;:::-;42236:831;;;;;;;;:::o

Swarm Source

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