ETH Price: $2,519.78 (+2.40%)
Gas: 0.79 Gwei

Token

TSYGAN (TSYGAN)
 

Overview

Max Total Supply

666,666,666,666,666 TSYGAN

Holders

270

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
kvne.eth
Balance
179,282,487,257.761518319677251482 TSYGAN

Value
$0.00
0x06688bf1c3338b2bd9d2a6301f97f668c5b6e783
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:
TSYGAN

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-04
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.8;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

contract TSYGAN is ERC20, Ownable {


    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address payable public TreasuryAddress;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

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


    event ExcludeFromFees(address indexed account, bool isExcluded);


    event UpdatedTreasuryAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("TSYGAN", "TSYGAN") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

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

        uint256 totalSupply = 666666666666666 * 1e18;

        swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount

        buyTreasuryFee = 5;
        buyLiquidityFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;

        sellTreasuryFee = 5;
        sellLiquidityFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee ;

        TreasuryAddress = payable(address(newOwner));

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


        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}


    

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 100, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;
        require(buyTotalFees <= 9, "Must keep fees less than 9%");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;
        require(sellTotalFees <= 9, "Must keep fees less than 9%");
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
       
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

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

        uint256 fees = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){
            
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury;

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

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
       
        ethForLiquidity -= ethForTreasury;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(contractETHBalance,TreasuryAddress);
        }
    }

    function sendETHToFee(uint256 amount,address payable wallet) private {
        wallet.transfer(amount);
    }
    
    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040518060400160405280600681526020017f54535947414e00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f54535947414e0000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620009e7565b508060049080519060200190620000af929190620009e7565b5050506000620000c4620004cb60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ff57600080fd5b505afa15801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a919062000b01565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029d57600080fd5b505afa158015620002b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d8919062000b01565b6040518363ffffffff1660e01b8152600401620002f792919062000b44565b602060405180830381600087803b1580156200031257600080fd5b505af115801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000b01565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200039b60a05160601c6001620004d360201b60201c565b60006d20de842db3b771eb1839906800009050620186a0601982620003c1919062000baa565b620003cd919062000c3a565b60068190555060056009819055506000600a81905550600a54600954620003f5919062000c72565b6008819055506005600c819055506000600d81905550600d54600c546200041d919062000c72565b600b8190555082600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004778360016200057460201b60201c565b6200048a3060016200057460201b60201c565b6200049f61dead60016200057460201b60201c565b620004b18382620006c160201b60201c565b620004c2836200081260201b60201c565b50505062000f29565b600033905090565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000584620004cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000616576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060d9062000d30565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620006b5919062000d6f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072b9062000ddc565b60405180910390fd5b806002600082825462000748919062000c72565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200079f919062000c72565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000806919062000e0f565b60405180910390a35050565b62000822620004cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ab9062000d30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091e9062000ea2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054620009f59062000ef3565b90600052602060002090601f01602090048101928262000a19576000855562000a65565b82601f1062000a3457805160ff191683800117855562000a65565b8280016001018555821562000a65579182015b8281111562000a6457825182559160200191906001019062000a47565b5b50905062000a74919062000a78565b5090565b5b8082111562000a9357600081600090555060010162000a79565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ac98262000a9c565b9050919050565b62000adb8162000abc565b811462000ae757600080fd5b50565b60008151905062000afb8162000ad0565b92915050565b60006020828403121562000b1a5762000b1962000a97565b5b600062000b2a8482850162000aea565b91505092915050565b62000b3e8162000abc565b82525050565b600060408201905062000b5b600083018562000b33565b62000b6a602083018462000b33565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bb78262000b71565b915062000bc48362000b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c005762000bff62000b7b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c478262000b71565b915062000c548362000b71565b92508262000c675762000c6662000c0b565b5b828204905092915050565b600062000c7f8262000b71565b915062000c8c8362000b71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000cc45762000cc362000b7b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d1860208362000ccf565b915062000d258262000ce0565b602082019050919050565b6000602082019050818103600083015262000d4b8162000d09565b9050919050565b60008115159050919050565b62000d698162000d52565b82525050565b600060208201905062000d86600083018462000d5e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dc4601f8362000ccf565b915062000dd18262000d8c565b602082019050919050565b6000602082019050818103600083015262000df78162000db5565b9050919050565b62000e098162000b71565b82525050565b600060208201905062000e26600083018462000dfe565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000e8a60268362000ccf565b915062000e978262000e2c565b604082019050919050565b6000602082019050818103600083015262000ebd8162000e7b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f0c57607f821691505b6020821081141562000f235762000f2262000ec4565b5b50919050565b60805160601c60a05160601c613eea62000f7f60003960008181610bf901526114af015260008181610a18015281816128c6015281816129b6015281816129dd01528181612a790152612aa00152613eea6000f3fe6080604052600436106102085760003560e01c8063715018a611610118578063cc2ffe7c116100a0578063e2f456051161006f578063e2f45605146107a0578063f11a24d3146107cb578063f2fde38b146107f6578063f5648a4f1461081f578063f6374342146108365761020f565b8063cc2ffe7c146106e4578063d257b34f1461070f578063d85ba06314610738578063dd62ed3e146107635761020f565b80639a7a23d6116100e75780639a7a23d6146105db578063a457c2d714610604578063a9059cbb14610641578063b62496f51461067e578063c0246668146106bb5761020f565b8063715018a6146105315780638366e79a146105485780638da5cb5b1461058557806395d89b41146105b05761020f565b8063395093511161019b5780636605bfda1161016a5780636605bfda1461044c57806366ca9b83146104755780636a486a8e1461049e5780636b2fb124146104c957806370a08231146104f45761020f565b8063395093511461038e57806349bd5a5e146103cb5780635b5c251f146103f65780635c068a8c146104215761020f565b806318160ddd116101d757806318160ddd146102d05780631a8145bb146102fb57806323b872dd14610326578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612be9565b610861565b005b34801561024957600080fd5b50610252610966565b60405161025f9190612cc2565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612d42565b6109f8565b60405161029c9190612d9d565b60405180910390f35b3480156102b157600080fd5b506102ba610a16565b6040516102c79190612e17565b60405180910390f35b3480156102dc57600080fd5b506102e5610a3a565b6040516102f29190612e41565b60405180910390f35b34801561030757600080fd5b50610310610a44565b60405161031d9190612e41565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612e5c565b610a4a565b60405161035a9190612d9d565b60405180910390f35b34801561036f57600080fd5b50610378610b42565b6040516103859190612ecb565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612d42565b610b4b565b6040516103c29190612d9d565b60405180910390f35b3480156103d757600080fd5b506103e0610bf7565b6040516103ed9190612ef5565b60405180910390f35b34801561040257600080fd5b5061040b610c1b565b6040516104189190612f31565b60405180910390f35b34801561042d57600080fd5b50610436610c41565b6040516104439190612e41565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612f4c565b610c47565b005b34801561048157600080fd5b5061049c60048036038101906104979190612be9565b610dd5565b005b3480156104aa57600080fd5b506104b3610eda565b6040516104c09190612e41565b60405180910390f35b3480156104d557600080fd5b506104de610ee0565b6040516104eb9190612e41565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190612f4c565b610ee6565b6040516105289190612e41565b60405180910390f35b34801561053d57600080fd5b50610546610f2e565b005b34801561055457600080fd5b5061056f600480360381019061056a9190612f79565b611086565b60405161057c9190612d9d565b60405180910390f35b34801561059157600080fd5b5061059a61135a565b6040516105a79190612ef5565b60405180910390f35b3480156105bc57600080fd5b506105c5611384565b6040516105d29190612cc2565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190612fe5565b611416565b005b34801561061057600080fd5b5061062b60048036038101906106269190612d42565b61154a565b6040516106389190612d9d565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612d42565b611635565b6040516106759190612d9d565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a09190612f4c565b611653565b6040516106b29190612d9d565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190612fe5565b611673565b005b3480156106f057600080fd5b506106f96117b3565b6040516107069190612e41565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613025565b6117b9565b005b34801561074457600080fd5b5061074d611920565b60405161075a9190612e41565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190612f79565b611926565b6040516107979190612e41565b60405180910390f35b3480156107ac57600080fd5b506107b56119ad565b6040516107c29190612e41565b60405180910390f35b3480156107d757600080fd5b506107e06119b3565b6040516107ed9190612e41565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612f4c565b6119b9565b005b34801561082b57600080fd5b50610834611b80565b005b34801561084257600080fd5b5061084b611c88565b6040516108589190612e41565b60405180910390f35b610869611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef9061309e565b60405180910390fd5b81600c8190555080600d81905550600d54600c5461091691906130ed565b600b819055506009600b541115610962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109599061318f565b60405180910390fd5b5050565b606060038054610975906131de565b80601f01602080910402602001604051908101604052809291908181526020018280546109a1906131de565b80156109ee5780601f106109c3576101008083540402835291602001916109ee565b820191906000526020600020905b8154815290600101906020018083116109d157829003601f168201915b5050505050905090565b6000610a0c610a05611c8e565b8484611c96565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600f5481565b6000610a57848484611e61565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aa2611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613282565b60405180910390fd5b610b3685610b2e611c8e565b858403611c96565b60019150509392505050565b60006012905090565b6000610bed610b58611c8e565b848460016000610b66611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be891906130ed565b611c96565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610c4f611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590613314565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b610ddd611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e639061309e565b60405180910390fd5b8160098190555080600a81905550600a54600954610e8a91906130ed565b60088190555060096008541115610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd9061318f565b60405180910390fd5b5050565b600b5481565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f36611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc9061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611090611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690613380565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f5906133ec565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112399190612ef5565b60206040518083038186803b15801561125157600080fd5b505afa158015611265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112899190613421565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016112c692919061344e565b602060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611318919061348c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161134b92919061344e565b60405180910390a15092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611393906131de565b80601f01602080910402602001604051908101604052809291908181526020018280546113bf906131de565b801561140c5780601f106113e15761010080835404028352916020019161140c565b820191906000526020600020905b8154815290600101906020018083116113ef57829003601f168201915b5050505050905090565b61141e611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a49061309e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115339061352b565b60405180910390fd5b61154682826123b7565b5050565b60008060016000611559611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d906135bd565b60405180910390fd5b61162a611621611c8e565b85858403611c96565b600191505092915050565b6000611649611642611c8e565b8484611e61565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b61167b611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117019061309e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117a79190612d9d565b60405180910390a25050565b600e5481565b6117c1611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118479061309e565b60405180910390fd5b620186a0600161185e610a3a565b61186891906135dd565b6118729190613666565b8110156118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90613709565b60405180910390fd5b606460016118c0610a3a565b6118ca91906135dd565b6118d49190613666565b811115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061379b565b60405180910390fd5b8060068190555050565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b600a5481565b6119c1611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a479061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061382d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b88611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e9061309e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611c3d9061387e565b60006040518083038185875af1925050503d8060008114611c7a576040519150601f19603f3d011682016040523d82523d6000602084013e611c7f565b606091505b50508091505050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d90613997565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e549190612e41565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890613a29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613abb565b60405180910390fd5b60008111611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90613b27565b60405180910390fd5b6000611f8f30610ee6565b905060006006548210159050808015611fb55750600560149054906101000a900460ff16155b801561200b5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120615750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120b75750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120fb576001600560146101000a81548160ff0219169083151502179055506120df612458565b6000600560146101000a81548160ff0219169083151502179055505b600060019050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121a25750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ac57600090505b600081156123a357601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220f57506000600b54115b1561229b576064600b548661222491906135dd565b61222e9190613666565b9050600b54600d548261224191906135dd565b61224b9190613666565b600f600082825461225c91906130ed565b92505081905550600b54600c548261227491906135dd565b61227e9190613666565b600e600082825461228f91906130ed565b9250508190555061237f565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122f657506000600854115b1561237e5760646008548661230b91906135dd565b6123159190613666565b9050600854600a548261232891906135dd565b6123329190613666565b600f600082825461234391906130ed565b925050819055506008546009548261235b91906135dd565b6123659190613666565b600e600082825461237691906130ed565b925050819055505b5b6000811115612394576123938730836125bc565b5b80856123a09190613b47565b94505b6123ae8787876125bc565b50505050505050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061246330610ee6565b90506000600e54600f5461247791906130ed565b905060008214806124885750600081145b156124945750506125ba565b600a6006546124a391906135dd565b8211156124bc57600a6006546124b991906135dd565b91505b6000600282600f54856124cf91906135dd565b6124d99190613666565b6124e39190613666565b90506124f981846124f49190613b47565b612827565b6000479050600081905060006002600f546125149190613666565b8561251f9190613b47565b600e548461252d91906135dd565b6125379190613666565b905080826125459190613b47565b91506000600f819055506000600e819055506000841180156125675750600082115b15612577576125768483612a73565b5b600047905060008111156125b2576125b181600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b63565b5b505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390613a29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269390613abb565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271990613bed565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127b591906130ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128199190612e41565b60405180910390a350505050565b6000600267ffffffffffffffff81111561284457612843613c0d565b5b6040519080825280602002602001820160405280156128725781602001602082028036833780820191505090505b509050308160008151811061288a57612889613c3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292a57600080fd5b505afa15801561293e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129629190613c80565b8160018151811061297657612975613c3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129db307f000000000000000000000000000000000000000000000000000000000000000084611c96565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3d959493929190613da6565b600060405180830381600087803b158015612a5757600080fd5b505af1158015612a6b573d6000803e3d6000fd5b505050505050565b612a9e307f000000000000000000000000000000000000000000000000000000000000000084611c96565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612ae861135a565b426040518863ffffffff1660e01b8152600401612b0a96959493929190613e00565b6060604051808303818588803b158015612b2357600080fd5b505af1158015612b37573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b5c9190613e61565b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba9573d6000803e3d6000fd5b505050565b600080fd5b6000819050919050565b612bc681612bb3565b8114612bd157600080fd5b50565b600081359050612be381612bbd565b92915050565b60008060408385031215612c0057612bff612bae565b5b6000612c0e85828601612bd4565b9250506020612c1f85828601612bd4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c63578082015181840152602081019050612c48565b83811115612c72576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c9482612c29565b612c9e8185612c34565b9350612cae818560208601612c45565b612cb781612c78565b840191505092915050565b60006020820190508181036000830152612cdc8184612c89565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0f82612ce4565b9050919050565b612d1f81612d04565b8114612d2a57600080fd5b50565b600081359050612d3c81612d16565b92915050565b60008060408385031215612d5957612d58612bae565b5b6000612d6785828601612d2d565b9250506020612d7885828601612bd4565b9150509250929050565b60008115159050919050565b612d9781612d82565b82525050565b6000602082019050612db26000830184612d8e565b92915050565b6000819050919050565b6000612ddd612dd8612dd384612ce4565b612db8565b612ce4565b9050919050565b6000612def82612dc2565b9050919050565b6000612e0182612de4565b9050919050565b612e1181612df6565b82525050565b6000602082019050612e2c6000830184612e08565b92915050565b612e3b81612bb3565b82525050565b6000602082019050612e566000830184612e32565b92915050565b600080600060608486031215612e7557612e74612bae565b5b6000612e8386828701612d2d565b9350506020612e9486828701612d2d565b9250506040612ea586828701612bd4565b9150509250925092565b600060ff82169050919050565b612ec581612eaf565b82525050565b6000602082019050612ee06000830184612ebc565b92915050565b612eef81612d04565b82525050565b6000602082019050612f0a6000830184612ee6565b92915050565b6000612f1b82612ce4565b9050919050565b612f2b81612f10565b82525050565b6000602082019050612f466000830184612f22565b92915050565b600060208284031215612f6257612f61612bae565b5b6000612f7084828501612d2d565b91505092915050565b60008060408385031215612f9057612f8f612bae565b5b6000612f9e85828601612d2d565b9250506020612faf85828601612d2d565b9150509250929050565b612fc281612d82565b8114612fcd57600080fd5b50565b600081359050612fdf81612fb9565b92915050565b60008060408385031215612ffc57612ffb612bae565b5b600061300a85828601612d2d565b925050602061301b85828601612fd0565b9150509250929050565b60006020828403121561303b5761303a612bae565b5b600061304984828501612bd4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613088602083612c34565b915061309382613052565b602082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130f882612bb3565b915061310383612bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613138576131376130be565b5b828201905092915050565b7f4d757374206b6565702066656573206c657373207468616e2039250000000000600082015250565b6000613179601b83612c34565b915061318482613143565b602082019050919050565b600060208201905081810360008301526131a88161316c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131f657607f821691505b6020821081141561320a576132096131af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061326c602883612c34565b915061327782613210565b604082019050919050565b6000602082019050818103600083015261329b8161325f565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006132fe602483612c34565b9150613309826132a2565b604082019050919050565b6000602082019050818103600083015261332d816132f1565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061336a601a83612c34565b915061337582613334565b602082019050919050565b600060208201905081810360008301526133998161335d565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006133d6601c83612c34565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b60008151905061341b81612bbd565b92915050565b60006020828403121561343757613436612bae565b5b60006134458482850161340c565b91505092915050565b60006040820190506134636000830185612ee6565b6134706020830184612e32565b9392505050565b60008151905061348681612fb9565b92915050565b6000602082840312156134a2576134a1612bae565b5b60006134b084828501613477565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613515603983612c34565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602583612c34565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b60006135e882612bb3565b91506135f383612bb3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561362c5761362b6130be565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367182612bb3565b915061367c83612bb3565b92508261368c5761368b613637565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006136f3603583612c34565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000613785603283612c34565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613817602683612c34565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b600081905092915050565b50565b600061386860008361384d565b915061387382613858565b600082019050919050565b60006138898261385b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602483612c34565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613981602283612c34565b915061398c82613925565b604082019050919050565b600060208201905081810360008301526139b081613974565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a13602583612c34565b9150613a1e826139b7565b604082019050919050565b60006020820190508181036000830152613a4281613a06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa5602383612c34565b9150613ab082613a49565b604082019050919050565b60006020820190508181036000830152613ad481613a98565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000613b11601d83612c34565b9150613b1c82613adb565b602082019050919050565b60006020820190508181036000830152613b4081613b04565b9050919050565b6000613b5282612bb3565b9150613b5d83612bb3565b925082821015613b7057613b6f6130be565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613bd7602683612c34565b9150613be282613b7b565b604082019050919050565b60006020820190508181036000830152613c0681613bca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613c7a81612d16565b92915050565b600060208284031215613c9657613c95612bae565b5b6000613ca484828501613c6b565b91505092915050565b6000819050919050565b6000613cd2613ccd613cc884613cad565b612db8565b612bb3565b9050919050565b613ce281613cb7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d1d81612d04565b82525050565b6000613d2f8383613d14565b60208301905092915050565b6000602082019050919050565b6000613d5382613ce8565b613d5d8185613cf3565b9350613d6883613d04565b8060005b83811015613d99578151613d808882613d23565b9750613d8b83613d3b565b925050600181019050613d6c565b5085935050505092915050565b600060a082019050613dbb6000830188612e32565b613dc86020830187613cd9565b8181036040830152613dda8186613d48565b9050613de96060830185612ee6565b613df66080830184612e32565b9695505050505050565b600060c082019050613e156000830189612ee6565b613e226020830188612e32565b613e2f6040830187613cd9565b613e3c6060830186613cd9565b613e496080830185612ee6565b613e5660a0830184612e32565b979650505050505050565b600080600060608486031215613e7a57613e79612bae565b5b6000613e888682870161340c565b9350506020613e998682870161340c565b9250506040613eaa8682870161340c565b915050925092509256fea2646970667358221220cd07534c7c5d4df66dee87531a9809770f00842c10ea47f865a8e3916472c7f664736f6c63430008080033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063715018a611610118578063cc2ffe7c116100a0578063e2f456051161006f578063e2f45605146107a0578063f11a24d3146107cb578063f2fde38b146107f6578063f5648a4f1461081f578063f6374342146108365761020f565b8063cc2ffe7c146106e4578063d257b34f1461070f578063d85ba06314610738578063dd62ed3e146107635761020f565b80639a7a23d6116100e75780639a7a23d6146105db578063a457c2d714610604578063a9059cbb14610641578063b62496f51461067e578063c0246668146106bb5761020f565b8063715018a6146105315780638366e79a146105485780638da5cb5b1461058557806395d89b41146105b05761020f565b8063395093511161019b5780636605bfda1161016a5780636605bfda1461044c57806366ca9b83146104755780636a486a8e1461049e5780636b2fb124146104c957806370a08231146104f45761020f565b8063395093511461038e57806349bd5a5e146103cb5780635b5c251f146103f65780635c068a8c146104215761020f565b806318160ddd116101d757806318160ddd146102d05780631a8145bb146102fb57806323b872dd14610326578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612be9565b610861565b005b34801561024957600080fd5b50610252610966565b60405161025f9190612cc2565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612d42565b6109f8565b60405161029c9190612d9d565b60405180910390f35b3480156102b157600080fd5b506102ba610a16565b6040516102c79190612e17565b60405180910390f35b3480156102dc57600080fd5b506102e5610a3a565b6040516102f29190612e41565b60405180910390f35b34801561030757600080fd5b50610310610a44565b60405161031d9190612e41565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612e5c565b610a4a565b60405161035a9190612d9d565b60405180910390f35b34801561036f57600080fd5b50610378610b42565b6040516103859190612ecb565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612d42565b610b4b565b6040516103c29190612d9d565b60405180910390f35b3480156103d757600080fd5b506103e0610bf7565b6040516103ed9190612ef5565b60405180910390f35b34801561040257600080fd5b5061040b610c1b565b6040516104189190612f31565b60405180910390f35b34801561042d57600080fd5b50610436610c41565b6040516104439190612e41565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612f4c565b610c47565b005b34801561048157600080fd5b5061049c60048036038101906104979190612be9565b610dd5565b005b3480156104aa57600080fd5b506104b3610eda565b6040516104c09190612e41565b60405180910390f35b3480156104d557600080fd5b506104de610ee0565b6040516104eb9190612e41565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190612f4c565b610ee6565b6040516105289190612e41565b60405180910390f35b34801561053d57600080fd5b50610546610f2e565b005b34801561055457600080fd5b5061056f600480360381019061056a9190612f79565b611086565b60405161057c9190612d9d565b60405180910390f35b34801561059157600080fd5b5061059a61135a565b6040516105a79190612ef5565b60405180910390f35b3480156105bc57600080fd5b506105c5611384565b6040516105d29190612cc2565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190612fe5565b611416565b005b34801561061057600080fd5b5061062b60048036038101906106269190612d42565b61154a565b6040516106389190612d9d565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612d42565b611635565b6040516106759190612d9d565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a09190612f4c565b611653565b6040516106b29190612d9d565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190612fe5565b611673565b005b3480156106f057600080fd5b506106f96117b3565b6040516107069190612e41565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613025565b6117b9565b005b34801561074457600080fd5b5061074d611920565b60405161075a9190612e41565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190612f79565b611926565b6040516107979190612e41565b60405180910390f35b3480156107ac57600080fd5b506107b56119ad565b6040516107c29190612e41565b60405180910390f35b3480156107d757600080fd5b506107e06119b3565b6040516107ed9190612e41565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612f4c565b6119b9565b005b34801561082b57600080fd5b50610834611b80565b005b34801561084257600080fd5b5061084b611c88565b6040516108589190612e41565b60405180910390f35b610869611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef9061309e565b60405180910390fd5b81600c8190555080600d81905550600d54600c5461091691906130ed565b600b819055506009600b541115610962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109599061318f565b60405180910390fd5b5050565b606060038054610975906131de565b80601f01602080910402602001604051908101604052809291908181526020018280546109a1906131de565b80156109ee5780601f106109c3576101008083540402835291602001916109ee565b820191906000526020600020905b8154815290600101906020018083116109d157829003601f168201915b5050505050905090565b6000610a0c610a05611c8e565b8484611c96565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600f5481565b6000610a57848484611e61565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aa2611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613282565b60405180910390fd5b610b3685610b2e611c8e565b858403611c96565b60019150509392505050565b60006012905090565b6000610bed610b58611c8e565b848460016000610b66611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be891906130ed565b611c96565b6001905092915050565b7f000000000000000000000000251c0a4e3d5240845baf60c60efc4eedf083a42481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610c4f611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590613314565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b610ddd611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e639061309e565b60405180910390fd5b8160098190555080600a81905550600a54600954610e8a91906130ed565b60088190555060096008541115610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd9061318f565b60405180910390fd5b5050565b600b5481565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f36611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc9061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611090611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690613380565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f5906133ec565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112399190612ef5565b60206040518083038186803b15801561125157600080fd5b505afa158015611265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112899190613421565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016112c692919061344e565b602060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611318919061348c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161134b92919061344e565b60405180910390a15092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611393906131de565b80601f01602080910402602001604051908101604052809291908181526020018280546113bf906131de565b801561140c5780601f106113e15761010080835404028352916020019161140c565b820191906000526020600020905b8154815290600101906020018083116113ef57829003601f168201915b5050505050905090565b61141e611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a49061309e565b60405180910390fd5b7f000000000000000000000000251c0a4e3d5240845baf60c60efc4eedf083a42473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115339061352b565b60405180910390fd5b61154682826123b7565b5050565b60008060016000611559611c8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d906135bd565b60405180910390fd5b61162a611621611c8e565b85858403611c96565b600191505092915050565b6000611649611642611c8e565b8484611e61565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b61167b611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117019061309e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117a79190612d9d565b60405180910390a25050565b600e5481565b6117c1611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118479061309e565b60405180910390fd5b620186a0600161185e610a3a565b61186891906135dd565b6118729190613666565b8110156118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90613709565b60405180910390fd5b606460016118c0610a3a565b6118ca91906135dd565b6118d49190613666565b811115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061379b565b60405180910390fd5b8060068190555050565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b600a5481565b6119c1611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a479061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061382d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b88611c8e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e9061309e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611c3d9061387e565b60006040518083038185875af1925050503d8060008114611c7a576040519150601f19603f3d011682016040523d82523d6000602084013e611c7f565b606091505b50508091505050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d90613997565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e549190612e41565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890613a29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613abb565b60405180910390fd5b60008111611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90613b27565b60405180910390fd5b6000611f8f30610ee6565b905060006006548210159050808015611fb55750600560149054906101000a900460ff16155b801561200b5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120615750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120b75750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120fb576001600560146101000a81548160ff0219169083151502179055506120df612458565b6000600560146101000a81548160ff0219169083151502179055505b600060019050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121a25750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ac57600090505b600081156123a357601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220f57506000600b54115b1561229b576064600b548661222491906135dd565b61222e9190613666565b9050600b54600d548261224191906135dd565b61224b9190613666565b600f600082825461225c91906130ed565b92505081905550600b54600c548261227491906135dd565b61227e9190613666565b600e600082825461228f91906130ed565b9250508190555061237f565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122f657506000600854115b1561237e5760646008548661230b91906135dd565b6123159190613666565b9050600854600a548261232891906135dd565b6123329190613666565b600f600082825461234391906130ed565b925050819055506008546009548261235b91906135dd565b6123659190613666565b600e600082825461237691906130ed565b925050819055505b5b6000811115612394576123938730836125bc565b5b80856123a09190613b47565b94505b6123ae8787876125bc565b50505050505050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061246330610ee6565b90506000600e54600f5461247791906130ed565b905060008214806124885750600081145b156124945750506125ba565b600a6006546124a391906135dd565b8211156124bc57600a6006546124b991906135dd565b91505b6000600282600f54856124cf91906135dd565b6124d99190613666565b6124e39190613666565b90506124f981846124f49190613b47565b612827565b6000479050600081905060006002600f546125149190613666565b8561251f9190613b47565b600e548461252d91906135dd565b6125379190613666565b905080826125459190613b47565b91506000600f819055506000600e819055506000841180156125675750600082115b15612577576125768483612a73565b5b600047905060008111156125b2576125b181600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b63565b5b505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390613a29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269390613abb565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271990613bed565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127b591906130ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128199190612e41565b60405180910390a350505050565b6000600267ffffffffffffffff81111561284457612843613c0d565b5b6040519080825280602002602001820160405280156128725781602001602082028036833780820191505090505b509050308160008151811061288a57612889613c3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292a57600080fd5b505afa15801561293e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129629190613c80565b8160018151811061297657612975613c3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129db307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c96565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3d959493929190613da6565b600060405180830381600087803b158015612a5757600080fd5b505af1158015612a6b573d6000803e3d6000fd5b505050505050565b612a9e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c96565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612ae861135a565b426040518863ffffffff1660e01b8152600401612b0a96959493929190613e00565b6060604051808303818588803b158015612b2357600080fd5b505af1158015612b37573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b5c9190613e61565b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba9573d6000803e3d6000fd5b505050565b600080fd5b6000819050919050565b612bc681612bb3565b8114612bd157600080fd5b50565b600081359050612be381612bbd565b92915050565b60008060408385031215612c0057612bff612bae565b5b6000612c0e85828601612bd4565b9250506020612c1f85828601612bd4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c63578082015181840152602081019050612c48565b83811115612c72576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c9482612c29565b612c9e8185612c34565b9350612cae818560208601612c45565b612cb781612c78565b840191505092915050565b60006020820190508181036000830152612cdc8184612c89565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0f82612ce4565b9050919050565b612d1f81612d04565b8114612d2a57600080fd5b50565b600081359050612d3c81612d16565b92915050565b60008060408385031215612d5957612d58612bae565b5b6000612d6785828601612d2d565b9250506020612d7885828601612bd4565b9150509250929050565b60008115159050919050565b612d9781612d82565b82525050565b6000602082019050612db26000830184612d8e565b92915050565b6000819050919050565b6000612ddd612dd8612dd384612ce4565b612db8565b612ce4565b9050919050565b6000612def82612dc2565b9050919050565b6000612e0182612de4565b9050919050565b612e1181612df6565b82525050565b6000602082019050612e2c6000830184612e08565b92915050565b612e3b81612bb3565b82525050565b6000602082019050612e566000830184612e32565b92915050565b600080600060608486031215612e7557612e74612bae565b5b6000612e8386828701612d2d565b9350506020612e9486828701612d2d565b9250506040612ea586828701612bd4565b9150509250925092565b600060ff82169050919050565b612ec581612eaf565b82525050565b6000602082019050612ee06000830184612ebc565b92915050565b612eef81612d04565b82525050565b6000602082019050612f0a6000830184612ee6565b92915050565b6000612f1b82612ce4565b9050919050565b612f2b81612f10565b82525050565b6000602082019050612f466000830184612f22565b92915050565b600060208284031215612f6257612f61612bae565b5b6000612f7084828501612d2d565b91505092915050565b60008060408385031215612f9057612f8f612bae565b5b6000612f9e85828601612d2d565b9250506020612faf85828601612d2d565b9150509250929050565b612fc281612d82565b8114612fcd57600080fd5b50565b600081359050612fdf81612fb9565b92915050565b60008060408385031215612ffc57612ffb612bae565b5b600061300a85828601612d2d565b925050602061301b85828601612fd0565b9150509250929050565b60006020828403121561303b5761303a612bae565b5b600061304984828501612bd4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613088602083612c34565b915061309382613052565b602082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130f882612bb3565b915061310383612bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613138576131376130be565b5b828201905092915050565b7f4d757374206b6565702066656573206c657373207468616e2039250000000000600082015250565b6000613179601b83612c34565b915061318482613143565b602082019050919050565b600060208201905081810360008301526131a88161316c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131f657607f821691505b6020821081141561320a576132096131af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061326c602883612c34565b915061327782613210565b604082019050919050565b6000602082019050818103600083015261329b8161325f565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006132fe602483612c34565b9150613309826132a2565b604082019050919050565b6000602082019050818103600083015261332d816132f1565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061336a601a83612c34565b915061337582613334565b602082019050919050565b600060208201905081810360008301526133998161335d565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006133d6601c83612c34565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b60008151905061341b81612bbd565b92915050565b60006020828403121561343757613436612bae565b5b60006134458482850161340c565b91505092915050565b60006040820190506134636000830185612ee6565b6134706020830184612e32565b9392505050565b60008151905061348681612fb9565b92915050565b6000602082840312156134a2576134a1612bae565b5b60006134b084828501613477565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613515603983612c34565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602583612c34565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b60006135e882612bb3565b91506135f383612bb3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561362c5761362b6130be565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367182612bb3565b915061367c83612bb3565b92508261368c5761368b613637565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006136f3603583612c34565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000613785603283612c34565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613817602683612c34565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b600081905092915050565b50565b600061386860008361384d565b915061387382613858565b600082019050919050565b60006138898261385b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602483612c34565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613981602283612c34565b915061398c82613925565b604082019050919050565b600060208201905081810360008301526139b081613974565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a13602583612c34565b9150613a1e826139b7565b604082019050919050565b60006020820190508181036000830152613a4281613a06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa5602383612c34565b9150613ab082613a49565b604082019050919050565b60006020820190508181036000830152613ad481613a98565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000613b11601d83612c34565b9150613b1c82613adb565b602082019050919050565b60006020820190508181036000830152613b4081613b04565b9050919050565b6000613b5282612bb3565b9150613b5d83612bb3565b925082821015613b7057613b6f6130be565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613bd7602683612c34565b9150613be282613b7b565b604082019050919050565b60006020820190508181036000830152613c0681613bca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613c7a81612d16565b92915050565b600060208284031215613c9657613c95612bae565b5b6000613ca484828501613c6b565b91505092915050565b6000819050919050565b6000613cd2613ccd613cc884613cad565b612db8565b612bb3565b9050919050565b613ce281613cb7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d1d81612d04565b82525050565b6000613d2f8383613d14565b60208301905092915050565b6000602082019050919050565b6000613d5382613ce8565b613d5d8185613cf3565b9350613d6883613d04565b8060005b83811015613d99578151613d808882613d23565b9750613d8b83613d3b565b925050600181019050613d6c565b5085935050505092915050565b600060a082019050613dbb6000830188612e32565b613dc86020830187613cd9565b8181036040830152613dda8186613d48565b9050613de96060830185612ee6565b613df66080830184612e32565b9695505050505050565b600060c082019050613e156000830189612ee6565b613e226020830188612e32565b613e2f6040830187613cd9565b613e3c6060830186613cd9565b613e496080830185612ee6565b613e5660a0830184612e32565b979650505050505050565b600080600060608486031215613e7a57613e79612bae565b5b6000613e888682870161340c565b9350506020613e998682870161340c565b9250506040613eaa8682870161340c565b915050925092509256fea2646970667358221220cd07534c7c5d4df66dee87531a9809770f00842c10ea47f865a8e3916472c7f664736f6c63430008080033

Deployed Bytecode Sourcemap

6935:9641:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10721:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2567:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6980:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1974:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7454:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2744:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1873:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3232:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7030:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7147;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7228:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16286:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10410:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7303:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7338:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2090:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5694:150;;;;;;;;;;;;;:::i;:::-;;15592:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5480:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1761:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9960:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3455:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2225:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7788:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11039:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7415:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9605:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7194:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2408:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7105:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7264:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5852:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16118:160;;;;;;;;;;;;;:::i;:::-;;7375:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10721:310;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10838:12:::1;10820:15;:30;;;;10880:13;10861:16;:32;;;;10938:16;;10920:15;;:34;;;;:::i;:::-;10904:13;:50;;;;10990:1;10973:13;;:18;;10965:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10721:310:::0;;:::o;1653:100::-;1707:13;1740:5;1733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1653:100;:::o;2567:169::-;2650:4;2667:39;2676:12;:10;:12::i;:::-;2690:7;2699:6;2667:8;:39::i;:::-;2724:4;2717:11;;2567:169;;;;:::o;6980:43::-;;;:::o;1974:108::-;2035:7;2062:12;;2055:19;;1974:108;:::o;7454:33::-;;;;:::o;2744:480::-;2884:4;2901:36;2911:6;2919:9;2930:6;2901:9;:36::i;:::-;2950:24;2977:11;:19;2989:6;2977:19;;;;;;;;;;;;;;;:33;2997:12;:10;:12::i;:::-;2977:33;;;;;;;;;;;;;;;;2950:60;;3049:6;3029:16;:26;;3021:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3128:57;3137:6;3145:12;:10;:12::i;:::-;3178:6;3159:16;:25;3128:8;:57::i;:::-;3212:4;3205:11;;;2744:480;;;;;:::o;1873:93::-;1931:5;1956:2;1949:9;;1873:93;:::o;3232:215::-;3320:4;3337:80;3346:12;:10;:12::i;:::-;3360:7;3406:10;3369:11;:25;3381:12;:10;:12::i;:::-;3369:25;;;;;;;;;;;;;;;:34;3395:7;3369:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3337:8;:80::i;:::-;3435:4;3428:11;;3232:215;;;;:::o;7030:38::-;;;:::o;7147:::-;;;;;;;;;;;;;:::o;7228:29::-;;;;:::o;16286:281::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16406:1:::1;16378:30;;:16;:30;;;;16370:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16486:16;16460:15;;:43;;;;;;;;;;;;;;;;;;16542:16;16519:40;;;;;;;;;;;;16286:281:::0;:::o;10410:303::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10525:12:::1;10508:14;:29;;;;10566:13;10548:15;:31;;;;10622:15;;10605:14;;:32;;;;:::i;:::-;10590:12;:47;;;;10672:1;10656:12;;:17;;10648:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10410:303:::0;;:::o;7303:28::-;;;;:::o;7338:30::-;;;;:::o;2090:127::-;2164:7;2191:9;:18;2201:7;2191:18;;;;;;;;;;;;;;;;2184:25;;2090:127;;;:::o;5694:150::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5803:1:::1;5766:40;;5787:6;;;;;;;;;;;5766:40;;;;;;;;;;;;5834:1;5817:6;;:19;;;;;;;;;;;;;;;;;;5694:150::o:0;15592:456::-;15679:10;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15728:1:::1;15710:20;;:6;:20;;;;15702:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;15798:4;15780:23;;:6;:23;;;;15772:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15847:24;15881:6;15874:24;;;15907:4;15874:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15847:66;;15939:6;15932:23;;;15956:3;15961:16;15932:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15924:54;;15994:46;16015:6;16023:16;15994:46;;;;;;;:::i;:::-;;;;;;;;15691:357;15592:456:::0;;;;:::o;5480:79::-;5518:7;5545:6;;;;;;;;;;;5538:13;;5480:79;:::o;1761:104::-;1817:13;1850:7;1843:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1761:104;:::o;9960:246::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10069:13:::1;10061:21;;:4;:21;;;;10053:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10157:41;10186:4;10192:5;10157:28;:41::i;:::-;9960:246:::0;;:::o;3455:401::-;3548:4;3565:24;3592:11;:25;3604:12;:10;:12::i;:::-;3592:25;;;;;;;;;;;;;;;:34;3618:7;3592:34;;;;;;;;;;;;;;;;3565:61;;3665:15;3645:16;:35;;3637:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3750:67;3759:12;:10;:12::i;:::-;3773:7;3801:15;3782:16;:34;3750:8;:67::i;:::-;3844:4;3837:11;;;3455:401;;;;:::o;2225:175::-;2311:4;2328:42;2338:12;:10;:12::i;:::-;2352:9;2363:6;2328:9;:42::i;:::-;2388:4;2381:11;;2225:175;;;;:::o;7788:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;11039:182::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11155:8:::1;11124:19;:28;11144:7;11124:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11195:7;11179:34;;;11204:8;11179:34;;;;;;:::i;:::-;;;;;;;;11039:182:::0;;:::o;7415:32::-;;;;:::o;9605:347::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9729:6:::1;9725:1;9709:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;9696:9;:39;;9688:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;9845:3;9841:1;9825:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;9812:9;:36;;9804:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;9935:9;9914:18;:30;;;;9605:347:::0;:::o;7194:27::-;;;;:::o;2408:151::-;2497:7;2524:11;:18;2536:5;2524:18;;;;;;;;;;;;;;;:27;2543:7;2524:27;;;;;;;;;;;;;;;;2517:34;;2408:151;;;;:::o;7105:33::-;;;;:::o;7264:30::-;;;;:::o;5852:244::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5961:1:::1;5941:22;;:8;:22;;;;5933:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6051:8;6022:38;;6043:6;;;;;;;;;;;6022:38;;;;;;;;;;;;6080:8;6071:6;;:17;;;;;;;;;;;;;;;;;;5852:244:::0;:::o;16118:160::-;5617:12;:10;:12::i;:::-;5607:22;;:6;;;;;;;;;;;:22;;;5599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16176:12:::1;16220:10;16212:24;;16244:21;16212:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16199:71;;;;;16165:113;16118:160::o:0;7375:31::-;;;;:::o;92:98::-;145:7;172:10;165:17;;92:98;:::o;4773:380::-;4926:1;4909:19;;:5;:19;;;;4901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5007:1;4988:21;;:7;:21;;;;4980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5091:6;5061:11;:18;5073:5;5061:18;;;;;;;;;;;;;;;:27;5080:7;5061:27;;;;;;;;;;;;;;;:36;;;;5129:7;5113:32;;5122:5;5113:32;;;5138:6;5113:32;;;;;;:::i;:::-;;;;;;;;4773:380;;;:::o;11229:1869::-;11345:1;11329:18;;:4;:18;;;;11321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11422:1;11408:16;;:2;:16;;;;11400:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11492:1;11483:6;:10;11475:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11547:28;11578:24;11596:4;11578:9;:24::i;:::-;11547:55;;11615:12;11654:18;;11630:20;:42;;11615:57;;11688:7;:20;;;;;11700:8;;;;;;;;;;;11699:9;11688:20;:56;;;;;11713:25;:31;11739:4;11713:31;;;;;;;;;;;;;;;;;;;;;;;;;11712:32;11688:56;:86;;;;;11749:19;:25;11769:4;11749:25;;;;;;;;;;;;;;;;;;;;;;;;;11748:26;11688:86;:114;;;;;11779:19;:23;11799:2;11779:23;;;;;;;;;;;;;;;;;;;;;;;;;11778:24;11688:114;11685:217;;;11830:4;11819:8;;:15;;;;;;;;;;;;;;;;;;11849:10;:8;:10::i;:::-;11885:5;11874:8;;:16;;;;;;;;;;;;;;;;;;11685:217;11914:12;11929:4;11914:19;;12032;:25;12052:4;12032:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;12061:19;:23;12081:2;12061:23;;;;;;;;;;;;;;;;;;;;;;;;;12032:52;12029:99;;;12111:5;12101:15;;12029:99;12140:12;12234:7;12231:814;;;12299:25;:29;12325:2;12299:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;12348:1;12332:13;;:17;12299:50;12295:603;;;12400:3;12385:13;;12376:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;12369:34;;12470:13;;12451:16;;12444:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12422:18;;:61;;;;;;;:::i;:::-;;;;;;;;12548:13;;12530:15;;12523:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;12502:17;;:59;;;;;;;:::i;:::-;;;;;;;;12295:603;;;12622:25;:31;12648:4;12622:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;12672:1;12657:12;;:16;12622:51;12619:279;;;12725:3;12710:12;;12701:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;12694:34;;12794:12;;12776:15;;12769:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12747:18;;:59;;;;;;;:::i;:::-;;;;;;;;12870:12;;12853:14;;12846:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;12825:17;;:57;;;;;;;:::i;:::-;;;;;;;;12619:279;12295:603;12924:1;12917:4;:8;12914:89;;;12945:42;12961:4;12975;12982;12945:15;:42::i;:::-;12914:89;13029:4;13019:14;;;;;:::i;:::-;;;12231:814;13057:33;13073:4;13079:2;13083:6;13057:15;:33::i;:::-;11308:1790;;;;11229:1869;;;:::o;10214:188::-;10331:5;10297:25;:31;10323:4;10297:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10388:5;10354:40;;10382:4;10354:40;;;;;;;;;;;;10214:188;;:::o;14235:1226::-;14274:23;14300:24;14318:4;14300:9;:24::i;:::-;14274:50;;14335:25;14384:17;;14363:18;;:38;;;;:::i;:::-;14335:66;;14436:1;14417:15;:20;:46;;;;14462:1;14441:17;:22;14417:46;14414:60;;;14466:7;;;;14414:60;14528:2;14507:18;;:23;;;;:::i;:::-;14489:15;:41;14486:113;;;14585:2;14564:18;;:23;;;;:::i;:::-;14546:41;;14486:113;14660:23;14745:1;14725:17;14704:18;;14686:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14660:86;;14759:51;14794:15;14776;:33;;;;:::i;:::-;14759:16;:51::i;:::-;14823:18;14844:21;14823:42;;14876:23;14902:10;14876:36;;14925:22;15024:1;15005:18;;:20;;;;:::i;:::-;14984:17;:42;;;;:::i;:::-;14963:17;;14950:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;14925:102;;15066:14;15047:33;;;;;:::i;:::-;;;15114:1;15093:18;:22;;;;15146:1;15126:17;:21;;;;15181:1;15163:15;:19;:42;;;;;15204:1;15186:15;:19;15163:42;15160:119;;;15221:46;15234:15;15251;15221:12;:46::i;:::-;15160:119;15291:26;15320:21;15291:50;;15376:1;15355:18;:22;15352:102;;;15394:48;15407:18;15426:15;;;;;;;;;;;15394:12;:48::i;:::-;15352:102;14263:1198;;;;;;;14235:1226;:::o;3864:602::-;4022:1;4004:20;;:6;:20;;;;3996:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4106:1;4085:23;;:9;:23;;;;4077:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4161:21;4185:9;:17;4195:6;4185:17;;;;;;;;;;;;;;;;4161:41;;4238:6;4221:13;:23;;4213:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4351:6;4335:13;:22;4315:9;:17;4325:6;4315:17;;;;;;;;;;;;;;;:42;;;;4399:6;4375:9;:20;4385:9;4375:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4440:9;4423:35;;4432:6;4423:35;;;4451:6;4423:35;;;;;;:::i;:::-;;;;;;;;3985:481;3864:602;;;:::o;13106:591::-;13234:21;13272:1;13258:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13234:40;;13303:4;13285;13290:1;13285:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13329:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13319:4;13324:1;13319:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13364:62;13381:4;13396:15;13414:11;13364:8;:62::i;:::-;13465:15;:66;;;13546:11;13572:1;13616:4;13643;13663:15;13465:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13161:536;13106:591;:::o;13705:522::-;13853:62;13870:4;13885:15;13903:11;13853:8;:62::i;:::-;13958:15;:31;;;13997:9;14030:4;14050:11;14076:1;14119;14170:7;:5;:7::i;:::-;14193:15;13958:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13705:522;;:::o;15469:111::-;15549:6;:15;;:23;15565:6;15549:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15469:111;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:60::-;4002:3;4023:5;4016:12;;3974:60;;;:::o;4040:142::-;4090:9;4123:53;4141:34;4150:24;4168:5;4150:24;:::i;:::-;4141:34;:::i;:::-;4123:53;:::i;:::-;4110:66;;4040:142;;;:::o;4188:126::-;4238:9;4271:37;4302:5;4271:37;:::i;:::-;4258:50;;4188:126;;;:::o;4320:144::-;4388:9;4421:37;4452:5;4421:37;:::i;:::-;4408:50;;4320:144;;;:::o;4470:167::-;4575:55;4624:5;4575:55;:::i;:::-;4570:3;4563:68;4470:167;;:::o;4643:258::-;4754:4;4792:2;4781:9;4777:18;4769:26;;4805:89;4891:1;4880:9;4876:17;4867:6;4805:89;:::i;:::-;4643:258;;;;:::o;4907:118::-;4994:24;5012:5;4994:24;:::i;:::-;4989:3;4982:37;4907:118;;:::o;5031:222::-;5124:4;5162:2;5151:9;5147:18;5139:26;;5175:71;5243:1;5232:9;5228:17;5219:6;5175:71;:::i;:::-;5031:222;;;;:::o;5259:619::-;5336:6;5344;5352;5401:2;5389:9;5380:7;5376:23;5372:32;5369:119;;;5407:79;;:::i;:::-;5369:119;5527:1;5552:53;5597:7;5588:6;5577:9;5573:22;5552:53;:::i;:::-;5542:63;;5498:117;5654:2;5680:53;5725:7;5716:6;5705:9;5701:22;5680:53;:::i;:::-;5670:63;;5625:118;5782:2;5808:53;5853:7;5844:6;5833:9;5829:22;5808:53;:::i;:::-;5798:63;;5753:118;5259:619;;;;;:::o;5884:86::-;5919:7;5959:4;5952:5;5948:16;5937:27;;5884:86;;;:::o;5976:112::-;6059:22;6075:5;6059:22;:::i;:::-;6054:3;6047:35;5976:112;;:::o;6094:214::-;6183:4;6221:2;6210:9;6206:18;6198:26;;6234:67;6298:1;6287:9;6283:17;6274:6;6234:67;:::i;:::-;6094:214;;;;:::o;6314:118::-;6401:24;6419:5;6401:24;:::i;:::-;6396:3;6389:37;6314:118;;:::o;6438:222::-;6531:4;6569:2;6558:9;6554:18;6546:26;;6582:71;6650:1;6639:9;6635:17;6626:6;6582:71;:::i;:::-;6438:222;;;;:::o;6666:104::-;6711:7;6740:24;6758:5;6740:24;:::i;:::-;6729:35;;6666:104;;;:::o;6776:142::-;6879:32;6905:5;6879:32;:::i;:::-;6874:3;6867:45;6776:142;;:::o;6924:254::-;7033:4;7071:2;7060:9;7056:18;7048:26;;7084:87;7168:1;7157:9;7153:17;7144:6;7084:87;:::i;:::-;6924:254;;;;:::o;7184:329::-;7243:6;7292:2;7280:9;7271:7;7267:23;7263:32;7260:119;;;7298:79;;:::i;:::-;7260:119;7418:1;7443:53;7488:7;7479:6;7468:9;7464:22;7443:53;:::i;:::-;7433:63;;7389:117;7184:329;;;;:::o;7519:474::-;7587:6;7595;7644:2;7632:9;7623:7;7619:23;7615:32;7612:119;;;7650:79;;:::i;:::-;7612:119;7770:1;7795:53;7840:7;7831:6;7820:9;7816:22;7795:53;:::i;:::-;7785:63;;7741:117;7897:2;7923:53;7968:7;7959:6;7948:9;7944:22;7923:53;:::i;:::-;7913:63;;7868:118;7519:474;;;;;:::o;7999:116::-;8069:21;8084:5;8069:21;:::i;:::-;8062:5;8059:32;8049:60;;8105:1;8102;8095:12;8049:60;7999:116;:::o;8121:133::-;8164:5;8202:6;8189:20;8180:29;;8218:30;8242:5;8218:30;:::i;:::-;8121:133;;;;:::o;8260:468::-;8325:6;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8479:117;8635:2;8661:50;8703:7;8694:6;8683:9;8679:22;8661:50;:::i;:::-;8651:60;;8606:115;8260:468;;;;;:::o;8734:329::-;8793:6;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;8734:329;;;;:::o;9069:182::-;9209:34;9205:1;9197:6;9193:14;9186:58;9069:182;:::o;9257:366::-;9399:3;9420:67;9484:2;9479:3;9420:67;:::i;:::-;9413:74;;9496:93;9585:3;9496:93;:::i;:::-;9614:2;9609:3;9605:12;9598:19;;9257:366;;;:::o;9629:419::-;9795:4;9833:2;9822:9;9818:18;9810:26;;9882:9;9876:4;9872:20;9868:1;9857:9;9853:17;9846:47;9910:131;10036:4;9910:131;:::i;:::-;9902:139;;9629:419;;;:::o;10054:180::-;10102:77;10099:1;10092:88;10199:4;10196:1;10189:15;10223:4;10220:1;10213:15;10240:305;10280:3;10299:20;10317:1;10299:20;:::i;:::-;10294:25;;10333:20;10351:1;10333:20;:::i;:::-;10328:25;;10487:1;10419:66;10415:74;10412:1;10409:81;10406:107;;;10493:18;;:::i;:::-;10406:107;10537:1;10534;10530:9;10523:16;;10240:305;;;;:::o;10551:177::-;10691:29;10687:1;10679:6;10675:14;10668:53;10551:177;:::o;10734:366::-;10876:3;10897:67;10961:2;10956:3;10897:67;:::i;:::-;10890:74;;10973:93;11062:3;10973:93;:::i;:::-;11091:2;11086:3;11082:12;11075:19;;10734:366;;;:::o;11106:419::-;11272:4;11310:2;11299:9;11295:18;11287:26;;11359:9;11353:4;11349:20;11345:1;11334:9;11330:17;11323:47;11387:131;11513:4;11387:131;:::i;:::-;11379:139;;11106:419;;;:::o;11531:180::-;11579:77;11576:1;11569:88;11676:4;11673:1;11666:15;11700:4;11697:1;11690:15;11717:320;11761:6;11798:1;11792:4;11788:12;11778:22;;11845:1;11839:4;11835:12;11866:18;11856:81;;11922:4;11914:6;11910:17;11900:27;;11856:81;11984:2;11976:6;11973:14;11953:18;11950:38;11947:84;;;12003:18;;:::i;:::-;11947:84;11768:269;11717:320;;;:::o;12043:227::-;12183:34;12179:1;12171:6;12167:14;12160:58;12252:10;12247:2;12239:6;12235:15;12228:35;12043:227;:::o;12276:366::-;12418:3;12439:67;12503:2;12498:3;12439:67;:::i;:::-;12432:74;;12515:93;12604:3;12515:93;:::i;:::-;12633:2;12628:3;12624:12;12617:19;;12276:366;;;:::o;12648:419::-;12814:4;12852:2;12841:9;12837:18;12829:26;;12901:9;12895:4;12891:20;12887:1;12876:9;12872:17;12865:47;12929:131;13055:4;12929:131;:::i;:::-;12921:139;;12648:419;;;:::o;13073:223::-;13213:34;13209:1;13201:6;13197:14;13190:58;13282:6;13277:2;13269:6;13265:15;13258:31;13073:223;:::o;13302:366::-;13444:3;13465:67;13529:2;13524:3;13465:67;:::i;:::-;13458:74;;13541:93;13630:3;13541:93;:::i;:::-;13659:2;13654:3;13650:12;13643:19;;13302:366;;;:::o;13674:419::-;13840:4;13878:2;13867:9;13863:18;13855:26;;13927:9;13921:4;13917:20;13913:1;13902:9;13898:17;13891:47;13955:131;14081:4;13955:131;:::i;:::-;13947:139;;13674:419;;;:::o;14099:176::-;14239:28;14235:1;14227:6;14223:14;14216:52;14099:176;:::o;14281:366::-;14423:3;14444:67;14508:2;14503:3;14444:67;:::i;:::-;14437:74;;14520:93;14609:3;14520:93;:::i;:::-;14638:2;14633:3;14629:12;14622:19;;14281:366;;;:::o;14653:419::-;14819:4;14857:2;14846:9;14842:18;14834:26;;14906:9;14900:4;14896:20;14892:1;14881:9;14877:17;14870:47;14934:131;15060:4;14934:131;:::i;:::-;14926:139;;14653:419;;;:::o;15078:178::-;15218:30;15214:1;15206:6;15202:14;15195:54;15078:178;:::o;15262:366::-;15404:3;15425:67;15489:2;15484:3;15425:67;:::i;:::-;15418:74;;15501:93;15590:3;15501:93;:::i;:::-;15619:2;15614:3;15610:12;15603:19;;15262:366;;;:::o;15634:419::-;15800:4;15838:2;15827:9;15823:18;15815:26;;15887:9;15881:4;15877:20;15873:1;15862:9;15858:17;15851:47;15915:131;16041:4;15915:131;:::i;:::-;15907:139;;15634:419;;;:::o;16059:143::-;16116:5;16147:6;16141:13;16132:22;;16163:33;16190:5;16163:33;:::i;:::-;16059:143;;;;:::o;16208:351::-;16278:6;16327:2;16315:9;16306:7;16302:23;16298:32;16295:119;;;16333:79;;:::i;:::-;16295:119;16453:1;16478:64;16534:7;16525:6;16514:9;16510:22;16478:64;:::i;:::-;16468:74;;16424:128;16208:351;;;;:::o;16565:332::-;16686:4;16724:2;16713:9;16709:18;16701:26;;16737:71;16805:1;16794:9;16790:17;16781:6;16737:71;:::i;:::-;16818:72;16886:2;16875:9;16871:18;16862:6;16818:72;:::i;:::-;16565:332;;;;;:::o;16903:137::-;16957:5;16988:6;16982:13;16973:22;;17004:30;17028:5;17004:30;:::i;:::-;16903:137;;;;:::o;17046:345::-;17113:6;17162:2;17150:9;17141:7;17137:23;17133:32;17130:119;;;17168:79;;:::i;:::-;17130:119;17288:1;17313:61;17366:7;17357:6;17346:9;17342:22;17313:61;:::i;:::-;17303:71;;17259:125;17046:345;;;;:::o;17397:244::-;17537:34;17533:1;17525:6;17521:14;17514:58;17606:27;17601:2;17593:6;17589:15;17582:52;17397:244;:::o;17647:366::-;17789:3;17810:67;17874:2;17869:3;17810:67;:::i;:::-;17803:74;;17886:93;17975:3;17886:93;:::i;:::-;18004:2;17999:3;17995:12;17988:19;;17647:366;;;:::o;18019:419::-;18185:4;18223:2;18212:9;18208:18;18200:26;;18272:9;18266:4;18262:20;18258:1;18247:9;18243:17;18236:47;18300:131;18426:4;18300:131;:::i;:::-;18292:139;;18019:419;;;:::o;18444:224::-;18584:34;18580:1;18572:6;18568:14;18561:58;18653:7;18648:2;18640:6;18636:15;18629:32;18444:224;:::o;18674:366::-;18816:3;18837:67;18901:2;18896:3;18837:67;:::i;:::-;18830:74;;18913:93;19002:3;18913:93;:::i;:::-;19031:2;19026:3;19022:12;19015:19;;18674:366;;;:::o;19046:419::-;19212:4;19250:2;19239:9;19235:18;19227:26;;19299:9;19293:4;19289:20;19285:1;19274:9;19270:17;19263:47;19327:131;19453:4;19327:131;:::i;:::-;19319:139;;19046:419;;;:::o;19471:348::-;19511:7;19534:20;19552:1;19534:20;:::i;:::-;19529:25;;19568:20;19586:1;19568:20;:::i;:::-;19563:25;;19756:1;19688:66;19684:74;19681:1;19678:81;19673:1;19666:9;19659:17;19655:105;19652:131;;;19763:18;;:::i;:::-;19652:131;19811:1;19808;19804:9;19793:20;;19471:348;;;;:::o;19825:180::-;19873:77;19870:1;19863:88;19970:4;19967:1;19960:15;19994:4;19991:1;19984:15;20011:185;20051:1;20068:20;20086:1;20068:20;:::i;:::-;20063:25;;20102:20;20120:1;20102:20;:::i;:::-;20097:25;;20141:1;20131:35;;20146:18;;:::i;:::-;20131:35;20188:1;20185;20181:9;20176:14;;20011:185;;;;:::o;20202:240::-;20342:34;20338:1;20330:6;20326:14;20319:58;20411:23;20406:2;20398:6;20394:15;20387:48;20202:240;:::o;20448:366::-;20590:3;20611:67;20675:2;20670:3;20611:67;:::i;:::-;20604:74;;20687:93;20776:3;20687:93;:::i;:::-;20805:2;20800:3;20796:12;20789:19;;20448:366;;;:::o;20820:419::-;20986:4;21024:2;21013:9;21009:18;21001:26;;21073:9;21067:4;21063:20;21059:1;21048:9;21044:17;21037:47;21101:131;21227:4;21101:131;:::i;:::-;21093:139;;20820:419;;;:::o;21245:237::-;21385:34;21381:1;21373:6;21369:14;21362:58;21454:20;21449:2;21441:6;21437:15;21430:45;21245:237;:::o;21488:366::-;21630:3;21651:67;21715:2;21710:3;21651:67;:::i;:::-;21644:74;;21727:93;21816:3;21727:93;:::i;:::-;21845:2;21840:3;21836:12;21829:19;;21488:366;;;:::o;21860:419::-;22026:4;22064:2;22053:9;22049:18;22041:26;;22113:9;22107:4;22103:20;22099:1;22088:9;22084:17;22077:47;22141:131;22267:4;22141:131;:::i;:::-;22133:139;;21860:419;;;:::o;22285:225::-;22425:34;22421:1;22413:6;22409:14;22402:58;22494:8;22489:2;22481:6;22477:15;22470:33;22285:225;:::o;22516:366::-;22658:3;22679:67;22743:2;22738:3;22679:67;:::i;:::-;22672:74;;22755:93;22844:3;22755:93;:::i;:::-;22873:2;22868:3;22864:12;22857:19;;22516:366;;;:::o;22888:419::-;23054:4;23092:2;23081:9;23077:18;23069:26;;23141:9;23135:4;23131:20;23127:1;23116:9;23112:17;23105:47;23169:131;23295:4;23169:131;:::i;:::-;23161:139;;22888:419;;;:::o;23313:147::-;23414:11;23451:3;23436:18;;23313:147;;;;:::o;23466:114::-;;:::o;23586:398::-;23745:3;23766:83;23847:1;23842:3;23766:83;:::i;:::-;23759:90;;23858:93;23947:3;23858:93;:::i;:::-;23976:1;23971:3;23967:11;23960:18;;23586:398;;;:::o;23990:379::-;24174:3;24196:147;24339:3;24196:147;:::i;:::-;24189:154;;24360:3;24353:10;;23990:379;;;:::o;24375:223::-;24515:34;24511:1;24503:6;24499:14;24492:58;24584:6;24579:2;24571:6;24567:15;24560:31;24375:223;:::o;24604:366::-;24746:3;24767:67;24831:2;24826:3;24767:67;:::i;:::-;24760:74;;24843:93;24932:3;24843:93;:::i;:::-;24961:2;24956:3;24952:12;24945:19;;24604:366;;;:::o;24976:419::-;25142:4;25180:2;25169:9;25165:18;25157:26;;25229:9;25223:4;25219:20;25215:1;25204:9;25200:17;25193:47;25257:131;25383:4;25257:131;:::i;:::-;25249:139;;24976:419;;;:::o;25401:221::-;25541:34;25537:1;25529:6;25525:14;25518:58;25610:4;25605:2;25597:6;25593:15;25586:29;25401:221;:::o;25628:366::-;25770:3;25791:67;25855:2;25850:3;25791:67;:::i;:::-;25784:74;;25867:93;25956:3;25867:93;:::i;:::-;25985:2;25980:3;25976:12;25969:19;;25628:366;;;:::o;26000:419::-;26166:4;26204:2;26193:9;26189:18;26181:26;;26253:9;26247:4;26243:20;26239:1;26228:9;26224:17;26217:47;26281:131;26407:4;26281:131;:::i;:::-;26273:139;;26000:419;;;:::o;26425:224::-;26565:34;26561:1;26553:6;26549:14;26542:58;26634:7;26629:2;26621:6;26617:15;26610:32;26425:224;:::o;26655:366::-;26797:3;26818:67;26882:2;26877:3;26818:67;:::i;:::-;26811:74;;26894:93;26983:3;26894:93;:::i;:::-;27012:2;27007:3;27003:12;26996:19;;26655:366;;;:::o;27027:419::-;27193:4;27231:2;27220:9;27216:18;27208:26;;27280:9;27274:4;27270:20;27266:1;27255:9;27251:17;27244:47;27308:131;27434:4;27308:131;:::i;:::-;27300:139;;27027:419;;;:::o;27452:222::-;27592:34;27588:1;27580:6;27576:14;27569:58;27661:5;27656:2;27648:6;27644:15;27637:30;27452:222;:::o;27680:366::-;27822:3;27843:67;27907:2;27902:3;27843:67;:::i;:::-;27836:74;;27919:93;28008:3;27919:93;:::i;:::-;28037:2;28032:3;28028:12;28021:19;;27680:366;;;:::o;28052:419::-;28218:4;28256:2;28245:9;28241:18;28233:26;;28305:9;28299:4;28295:20;28291:1;28280:9;28276:17;28269:47;28333:131;28459:4;28333:131;:::i;:::-;28325:139;;28052:419;;;:::o;28477:179::-;28617:31;28613:1;28605:6;28601:14;28594:55;28477:179;:::o;28662:366::-;28804:3;28825:67;28889:2;28884:3;28825:67;:::i;:::-;28818:74;;28901:93;28990:3;28901:93;:::i;:::-;29019:2;29014:3;29010:12;29003:19;;28662:366;;;:::o;29034:419::-;29200:4;29238:2;29227:9;29223:18;29215:26;;29287:9;29281:4;29277:20;29273:1;29262:9;29258:17;29251:47;29315:131;29441:4;29315:131;:::i;:::-;29307:139;;29034:419;;;:::o;29459:191::-;29499:4;29519:20;29537:1;29519:20;:::i;:::-;29514:25;;29553:20;29571:1;29553:20;:::i;:::-;29548:25;;29592:1;29589;29586:8;29583:34;;;29597:18;;:::i;:::-;29583:34;29642:1;29639;29635:9;29627:17;;29459:191;;;;:::o;29656:225::-;29796:34;29792:1;29784:6;29780:14;29773:58;29865:8;29860:2;29852:6;29848:15;29841:33;29656:225;:::o;29887:366::-;30029:3;30050:67;30114:2;30109:3;30050:67;:::i;:::-;30043:74;;30126:93;30215:3;30126:93;:::i;:::-;30244:2;30239:3;30235:12;30228:19;;29887:366;;;:::o;30259:419::-;30425:4;30463:2;30452:9;30448:18;30440:26;;30512:9;30506:4;30502:20;30498:1;30487:9;30483:17;30476:47;30540:131;30666:4;30540:131;:::i;:::-;30532:139;;30259:419;;;:::o;30684:180::-;30732:77;30729:1;30722:88;30829:4;30826:1;30819:15;30853:4;30850:1;30843:15;30870:180;30918:77;30915:1;30908:88;31015:4;31012:1;31005:15;31039:4;31036:1;31029:15;31056:143;31113:5;31144:6;31138:13;31129:22;;31160:33;31187:5;31160:33;:::i;:::-;31056:143;;;;:::o;31205:351::-;31275:6;31324:2;31312:9;31303:7;31299:23;31295:32;31292:119;;;31330:79;;:::i;:::-;31292:119;31450:1;31475:64;31531:7;31522:6;31511:9;31507:22;31475:64;:::i;:::-;31465:74;;31421:128;31205:351;;;;:::o;31562:85::-;31607:7;31636:5;31625:16;;31562:85;;;:::o;31653:158::-;31711:9;31744:61;31762:42;31771:32;31797:5;31771:32;:::i;:::-;31762:42;:::i;:::-;31744:61;:::i;:::-;31731:74;;31653:158;;;:::o;31817:147::-;31912:45;31951:5;31912:45;:::i;:::-;31907:3;31900:58;31817:147;;:::o;31970:114::-;32037:6;32071:5;32065:12;32055:22;;31970:114;;;:::o;32090:184::-;32189:11;32223:6;32218:3;32211:19;32263:4;32258:3;32254:14;32239:29;;32090:184;;;;:::o;32280:132::-;32347:4;32370:3;32362:11;;32400:4;32395:3;32391:14;32383:22;;32280:132;;;:::o;32418:108::-;32495:24;32513:5;32495:24;:::i;:::-;32490:3;32483:37;32418:108;;:::o;32532:179::-;32601:10;32622:46;32664:3;32656:6;32622:46;:::i;:::-;32700:4;32695:3;32691:14;32677:28;;32532:179;;;;:::o;32717:113::-;32787:4;32819;32814:3;32810:14;32802:22;;32717:113;;;:::o;32866:732::-;32985:3;33014:54;33062:5;33014:54;:::i;:::-;33084:86;33163:6;33158:3;33084:86;:::i;:::-;33077:93;;33194:56;33244:5;33194:56;:::i;:::-;33273:7;33304:1;33289:284;33314:6;33311:1;33308:13;33289:284;;;33390:6;33384:13;33417:63;33476:3;33461:13;33417:63;:::i;:::-;33410:70;;33503:60;33556:6;33503:60;:::i;:::-;33493:70;;33349:224;33336:1;33333;33329:9;33324:14;;33289:284;;;33293:14;33589:3;33582:10;;32990:608;;;32866:732;;;;:::o;33604:831::-;33867:4;33905:3;33894:9;33890:19;33882:27;;33919:71;33987:1;33976:9;33972:17;33963:6;33919:71;:::i;:::-;34000:80;34076:2;34065:9;34061:18;34052:6;34000:80;:::i;:::-;34127:9;34121:4;34117:20;34112:2;34101:9;34097:18;34090:48;34155:108;34258:4;34249:6;34155:108;:::i;:::-;34147:116;;34273:72;34341:2;34330:9;34326:18;34317:6;34273:72;:::i;:::-;34355:73;34423:3;34412:9;34408:19;34399:6;34355:73;:::i;:::-;33604:831;;;;;;;;:::o;34441:807::-;34690:4;34728:3;34717:9;34713:19;34705:27;;34742:71;34810:1;34799:9;34795:17;34786:6;34742:71;:::i;:::-;34823:72;34891:2;34880:9;34876:18;34867:6;34823:72;:::i;:::-;34905:80;34981:2;34970:9;34966:18;34957:6;34905:80;:::i;:::-;34995;35071:2;35060:9;35056:18;35047:6;34995:80;:::i;:::-;35085:73;35153:3;35142:9;35138:19;35129:6;35085:73;:::i;:::-;35168;35236:3;35225:9;35221:19;35212:6;35168:73;:::i;:::-;34441:807;;;;;;;;;:::o;35254:663::-;35342:6;35350;35358;35407:2;35395:9;35386:7;35382:23;35378:32;35375:119;;;35413:79;;:::i;:::-;35375:119;35533:1;35558:64;35614:7;35605:6;35594:9;35590:22;35558:64;:::i;:::-;35548:74;;35504:128;35671:2;35697:64;35753:7;35744:6;35733:9;35729:22;35697:64;:::i;:::-;35687:74;;35642:129;35810:2;35836:64;35892:7;35883:6;35872:9;35868:22;35836:64;:::i;:::-;35826:74;;35781:129;35254:663;;;;;:::o

Swarm Source

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