ETH Price: $2,620.39 (+1.03%)

Token

havoc (HAVOC)
 

Overview

Max Total Supply

300,000,000 HAVOC

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,524,500 HAVOC

Value
$0.00
0xC8606b7dDF5A30E49c41bb277b097824E871198F
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:
HAVOC

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }

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

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

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 HAVOC is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "havoc";
    string private constant _symbol = "HAVOC";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 300000000 * 10 ** 9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    //Buy Fee
    uint256 private _feeOnBuy = 0;
    uint256 private _taxOnBuy = 15;

    //Sell Fee
    uint256 private _feeOnSell = 0;
    uint256 private _taxOnSell = 40;

    uint256 public totalFees;

    //Original Fee
    uint256 private _redisFee = _feeOnSell;
    uint256 private _taxFee = _taxOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    uint256 public liquidityFee = 2;
    uint256 public marketingFee = 13;
    address private LpReceiver =
        payable(0x1AD65F1a64fA8DAe1b36ad038E9D33Ade9B393b7);

    mapping(address => uint256) private cooldown;

    address payable private _developmentWalletAddress =
        payable(0x1AD65F1a64fA8DAe1b36ad038E9D33Ade9B393b7);
    address payable private _marketingWalletAddress =
        payable(0x5a053d9b97205c42caBeea6e694811a663659d25);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 3000000 * 10 ** 9;
    uint256 public _maxWalletSize = 3000000 * 10 ** 9;
    uint256 public _swapTokensAtAmount = 1000 * 10 ** 9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentWalletAddress] = true;
        _isExcludedFromFee[_marketingWalletAddress] = 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 tokenFromReflection(_rOwned[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 tokenFromReflection(
        uint256 rAmount
    ) private view returns (uint256) {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));

            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                if (contractTokenBalance > 0) {
                    uint256 halfLP = liquidityFee.div(2);

                    uint256 Fee = liquidityFee.add(marketingFee);
                    uint256 FeeToSwap = Fee.sub(halfLP);

                    uint256 amountToSwap = contractTokenBalance
                        .mul(FeeToSwap)
                        .div(Fee);

                    uint256 beforeETHBalance = address(this).balance;
                    swapTokensForEth(amountToSwap);
                    uint256 afterETHBalance = address(this).balance.sub(
                        beforeETHBalance
                    );

                    uint256 halfLPToken = balanceOf((address(this)));

                    uint256 liquidityShare = halfLP.mul(100).div(FeeToSwap);
                    uint256 amountToLiquify = afterETHBalance
                        .mul(liquidityShare)
                        .div(100);

                    if (amountToLiquify > 0) {
                        addLiquidityETH(amountToLiquify, halfLPToken);
                    }

                    if (address(this).balance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _feeOnBuy;
                _taxFee = _taxOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _feeOnSell;
                _taxFee = _taxOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 addLiquidityETH(uint256 _ethAmount, uint256 _tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), _tokenAmount);
        uniswapV2Router.addLiquidityETH{value: _ethAmount}(
            address(this),
            _tokenAmount,
            0,
            0,
            LpReceiver,
            block.timestamp
        );
    }

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function transferEth() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(
        uint256 tAmount
    )
        public
        view
        returns (uint256, uint256, uint256, uint256, uint256, uint256)
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );

        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    ) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    ) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);

        return (rSupply, tSupply);
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) public onlyOwner {
        _feeOnBuy = redisFeeOnBuy;
        _feeOnSell = redisFeeOnSell;
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
        _taxOnSell = _liquidityFee.add(_marketingFee);
        _taxOnBuy = _liquidityFee.add(_marketingFee);
        totalFees = _feeOnBuy + _feeOnSell + _taxOnBuy + _taxOnSell;
        require(totalFees <= 100, "");
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(
        uint256 swapTokensAtAmount
    ) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function noLimit() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    //Set max buy amount
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setWalletAddress(address payable _address) public onlyOwner {
        _marketingWalletAddress = _address;
    }

    //Set max wallet amount
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
}

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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"_getValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670429d069189e00006000196200001c919062000788565b6000196200002b9190620007ef565b6006556000600855600f6009556000600a556028600b55600a54600d55600b54600e55600d54600f55600e546010556002601155600d601255731ad65f1a64fa8dae1b36ad038e9d33ade9b393b7601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731ad65f1a64fa8dae1b36ad038e9d33ade9b393b7601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735a053d9b97205c42cabeea6e694811a663659d25601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601860146101000a81548160ff0219169083151502179055506000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff021916908315150217905550660aa87bee538000601955660aa87bee538000601a5564e8d4a51000601b55348015620001e057600080fd5b506000620001f36200071e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002a86200071e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000894565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000440919062000894565b6040518363ffffffff1660e01b81526004016200045f929190620008d7565b6020604051808303816000875af11580156200047f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a5919062000894565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004fb6200072660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006a86200071e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670429d069189e00006040516200070f919062000915565b60405180910390a35062000932565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000795826200074f565b9150620007a2836200074f565b925082620007b557620007b462000759565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007fc826200074f565b915062000809836200074f565b9250828210156200081f576200081e620007c0565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085c826200082f565b9050919050565b6200086e816200084f565b81146200087a57600080fd5b50565b6000815190506200088e8162000863565b92915050565b600060208284031215620008ad57620008ac6200082a565b5b6000620008bd848285016200087d565b91505092915050565b620008d1816200084f565b82525050565b6000604082019050620008ee6000830185620008c6565b620008fd6020830184620008c6565b9392505050565b6200090f816200074f565b82525050565b60006020820190506200092c600083018462000904565b92915050565b613d1f80620009426000396000f3fe6080604052600436106101d15760003560e01c806374010ece116100f757806398a5c31511610095578063d4780e3611610064578063d4780e361461063b578063dd62ed3e1461067d578063ea1644d5146106ba578063f2fde38b146106e3576101d8565b806398a5c31514610583578063a2a957bb146105ac578063a9059cbb146105d5578063ac1a386a14610612576101d8565b80638f70ccf7116100d15780638f70ccf7146104d95780638f9a55c01461050257806395d89b411461052d57806398118cb414610558576101d8565b806374010ece1461045a5780637d1db4a5146104835780638da5cb5b146104ae576101d8565b8063313ce5671161016f5780636b67c4df1161013e5780636b67c4df146103b25780636d8aa8f8146103dd57806370a0823114610406578063715018a614610443576101d8565b8063313ce5671461032e57806349bd5a5e14610359578063526e588c14610384578063598526861461039b576101d8565b80631694505e116101ab5780631694505e1461027057806318160ddd1461029b57806323b872dd146102c65780632fd689e314610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806313114a9d14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261070c565b6040516101ff9190612ca5565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d60565b610749565b60405161023c9190612dbb565b60405180910390f35b34801561025157600080fd5b5061025a610767565b6040516102679190612de5565b60405180910390f35b34801561027c57600080fd5b5061028561076d565b6040516102929190612e5f565b60405180910390f35b3480156102a757600080fd5b506102b0610793565b6040516102bd9190612de5565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612e7a565b6107a3565b6040516102fa9190612dbb565b60405180910390f35b34801561030f57600080fd5b5061031861087c565b6040516103259190612de5565b60405180910390f35b34801561033a57600080fd5b50610343610882565b6040516103509190612ee9565b60405180910390f35b34801561036557600080fd5b5061036e61088b565b60405161037b9190612f13565b60405180910390f35b34801561039057600080fd5b506103996108b1565b005b3480156103a757600080fd5b506103b0610966565b005b3480156103be57600080fd5b506103c7610a44565b6040516103d49190612de5565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190612f5a565b610a4a565b005b34801561041257600080fd5b5061042d60048036038101906104289190612f87565b610afc565b60405161043a9190612de5565b60405180910390f35b34801561044f57600080fd5b50610458610b4d565b005b34801561046657600080fd5b50610481600480360381019061047c9190612fb4565b610ca0565b005b34801561048f57600080fd5b50610498610d3f565b6040516104a59190612de5565b60405180910390f35b3480156104ba57600080fd5b506104c3610d45565b6040516104d09190612f13565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb9190612f5a565b610d6e565b005b34801561050e57600080fd5b50610517610e20565b6040516105249190612de5565b60405180910390f35b34801561053957600080fd5b50610542610e26565b60405161054f9190612ca5565b60405180910390f35b34801561056457600080fd5b5061056d610e63565b60405161057a9190612de5565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190612fb4565b610e69565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612fe1565b610f08565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190612d60565b611063565b6040516106099190612dbb565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613086565b611081565b005b34801561064757600080fd5b50610662600480360381019061065d9190612fb4565b61115a565b604051610674969594939291906130b3565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190613114565b6111c2565b6040516106b19190612de5565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612fb4565b611249565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612f87565b6112e8565b005b60606040518060400160405280600581526020017f6861766f63000000000000000000000000000000000000000000000000000000815250905090565b600061075d6107566114a9565b84846114b1565b6001905092915050565b600c5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670429d069189e0000905090565b60006107b084848461167a565b610871846107bc6114a9565b61086c85604051806060016040528060288152602001613cc260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108226114a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f209092919063ffffffff16565b6114b1565b600190509392505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b96114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d906131a0565b60405180910390fd5b670429d069189e0000601981905550670429d069189e0000601a81905550565b61096e6114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906131a0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a41573d6000803e3d6000fd5b50565b60125481565b610a526114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad6906131a0565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b6000610b46600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f84565b9050919050565b610b556114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd9906131a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca86114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906131a0565b60405180910390fd5b8060198190555050565b60195481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d766114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906131a0565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b60115481565b610e716114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef5906131a0565b60405180910390fd5b80601b8190555050565b610f106114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f94906131a0565b60405180910390fd5b8360088190555082600a8190555060115491506012549050610fc88183611ff290919063ffffffff16565b600b81905550610fe18183611ff290919063ffffffff16565b600981905550600b54600954600a54600854610ffd91906131ef565b61100791906131ef565b61101191906131ef565b600c819055506064600c54111561105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110549061326b565b60405180910390fd5b50505050565b60006110776110706114a9565b848461167a565b6001905092915050565b6110896114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d906131a0565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006111778a600d54600e54612050565b92509250925060006111876120e6565b9050600080600061119a8e878787612111565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112516114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d5906131a0565b60405180910390fd5b80601a8190555050565b6112f06114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611374906131a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e3906132fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115179061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613421565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166d9190612de5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e0906134b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613545565b60405180910390fd5b6000811161179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611792906135d7565b60405180910390fd5b6117a3610d45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561181157506117e1610d45565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1f57601860149054906101000a900460ff166118a057611832610d45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690613669565b60405180910390fd5b5b6019548111156118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc906136d5565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461199257601a548161194784610afc565b61195191906131ef565b10611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890613767565b60405180910390fd5b5b600061199d30610afc565b90506000601b5482101590508080156119c35750601860159054906101000a900460ff16155b8015611a1d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a355750601860169054906101000a900460ff165b8015611a8b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ae15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1c576000821115611c1b576000611b07600260115461219a90919063ffffffff16565b90506000611b22601254601154611ff290919063ffffffff16565b90506000611b3983836121e490919063ffffffff16565b90506000611b6283611b54848961222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000479050611b72826122a8565b6000611b8782476121e490919063ffffffff16565b90506000611b9430610afc565b90506000611bbe86611bb060648b61222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000611be86064611bda848761222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000811115611bfe57611bfd8184612521565b5b6000471115611c1157611c104761279e565b5b5050505050505050505b5b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cc65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d795750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d785750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d875760009050611f0e565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e325750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4a57600854600d81905550600954600e819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f0d57600a54600d81905550600b54600e819055505b5b611f1a8484848461280a565b50505050565b6000838311158290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612ca5565b60405180910390fd5b5060008385611f779190613787565b9050809150509392505050565b6000600654821115611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc29061382d565b60405180910390fd5b6000611fd56120e6565b9050611fea818461219a90919063ffffffff16565b915050919050565b600080828461200191906131ef565b905083811015612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613899565b60405180910390fd5b8091505092915050565b60008060008061207c606461206e888a61222e90919063ffffffff16565b61219a90919063ffffffff16565b905060006120a66064612098888b61222e90919063ffffffff16565b61219a90919063ffffffff16565b905060006120cf826120c1858c6121e490919063ffffffff16565b6121e490919063ffffffff16565b905080838395509550955050505093509350939050565b60008060006120f3612837565b9150915061210a818361219a90919063ffffffff16565b9250505090565b60008060008061212a858961222e90919063ffffffff16565b90506000612141868961222e90919063ffffffff16565b90506000612158878961222e90919063ffffffff16565b905060006121818261217385876121e490919063ffffffff16565b6121e490919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006121dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612896565b905092915050565b600061222683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f20565b905092915050565b600080830361224057600090506122a2565b6000828461224e91906138b9565b905082848261225d9190613942565b1461229d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612294906139e5565b60405180910390fd5b809150505b92915050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122e0576122df613a05565b5b60405190808252806020026020018201604052801561230e5781602001602082028036833780820191505090505b509050308160008151811061232657612325613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f19190613a78565b8160018151811061240557612404613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246c30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114b1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d0959493929190613b9e565b600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff81111561253e5761253d613a05565b5b60405190808252806020026020018201604052801561256c5781602001602082028036833780820191505090505b509050308160008151811061258457612583613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f9190613a78565b8160018151811061266357612662613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126ca30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114b1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161275396959493929190613bf8565b60606040518083038185885af1158015612771573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127969190613c6e565b505050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612806573d6000803e3d6000fd5b5050565b80612818576128176128f9565b5b612823848484612936565b8061283157612830612b01565b5b50505050565b600080600060065490506000670429d069189e0000905061286b670429d069189e000060065461219a90919063ffffffff16565b82101561288957600654670429d069189e0000935093505050612892565b81819350935050505b9091565b600080831182906128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d49190612ca5565b60405180910390fd5b50600083856128ec9190613942565b9050809150509392505050565b6000600d5414801561290d57506000600e54145b61293457600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806129488761115a565b9550955095509550955095506129a686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a3b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8781612b15565b612a918483612bd2565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612aee9190612de5565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b6000612b1f6120e6565b90506000612b36828461222e90919063ffffffff16565b9050612b8a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612be7826006546121e490919063ffffffff16565b600681905550612c0281600754611ff290919063ffffffff16565b6007819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c46578082015181840152602081019050612c2b565b83811115612c55576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c7782612c0c565b612c818185612c17565b9350612c91818560208601612c28565b612c9a81612c5b565b840191505092915050565b60006020820190508181036000830152612cbf8184612c6c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cf782612ccc565b9050919050565b612d0781612cec565b8114612d1257600080fd5b50565b600081359050612d2481612cfe565b92915050565b6000819050919050565b612d3d81612d2a565b8114612d4857600080fd5b50565b600081359050612d5a81612d34565b92915050565b60008060408385031215612d7757612d76612cc7565b5b6000612d8585828601612d15565b9250506020612d9685828601612d4b565b9150509250929050565b60008115159050919050565b612db581612da0565b82525050565b6000602082019050612dd06000830184612dac565b92915050565b612ddf81612d2a565b82525050565b6000602082019050612dfa6000830184612dd6565b92915050565b6000819050919050565b6000612e25612e20612e1b84612ccc565b612e00565b612ccc565b9050919050565b6000612e3782612e0a565b9050919050565b6000612e4982612e2c565b9050919050565b612e5981612e3e565b82525050565b6000602082019050612e746000830184612e50565b92915050565b600080600060608486031215612e9357612e92612cc7565b5b6000612ea186828701612d15565b9350506020612eb286828701612d15565b9250506040612ec386828701612d4b565b9150509250925092565b600060ff82169050919050565b612ee381612ecd565b82525050565b6000602082019050612efe6000830184612eda565b92915050565b612f0d81612cec565b82525050565b6000602082019050612f286000830184612f04565b92915050565b612f3781612da0565b8114612f4257600080fd5b50565b600081359050612f5481612f2e565b92915050565b600060208284031215612f7057612f6f612cc7565b5b6000612f7e84828501612f45565b91505092915050565b600060208284031215612f9d57612f9c612cc7565b5b6000612fab84828501612d15565b91505092915050565b600060208284031215612fca57612fc9612cc7565b5b6000612fd884828501612d4b565b91505092915050565b60008060008060808587031215612ffb57612ffa612cc7565b5b600061300987828801612d4b565b945050602061301a87828801612d4b565b935050604061302b87828801612d4b565b925050606061303c87828801612d4b565b91505092959194509250565b600061305382612ccc565b9050919050565b61306381613048565b811461306e57600080fd5b50565b6000813590506130808161305a565b92915050565b60006020828403121561309c5761309b612cc7565b5b60006130aa84828501613071565b91505092915050565b600060c0820190506130c86000830189612dd6565b6130d56020830188612dd6565b6130e26040830187612dd6565b6130ef6060830186612dd6565b6130fc6080830185612dd6565b61310960a0830184612dd6565b979650505050505050565b6000806040838503121561312b5761312a612cc7565b5b600061313985828601612d15565b925050602061314a85828601612d15565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061318a602083612c17565b915061319582613154565b602082019050919050565b600060208201905081810360008301526131b98161317d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131fa82612d2a565b915061320583612d2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561323a576132396131c0565b5b828201905092915050565b50565b6000613255600083612c17565b915061326082613245565b600082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132e7602683612c17565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613379602483612c17565b91506133848261331d565b604082019050919050565b600060208201905081810360008301526133a88161336c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061340b602283612c17565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061349d602583612c17565b91506134a882613441565b604082019050919050565b600060208201905081810360008301526134cc81613490565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061352f602383612c17565b915061353a826134d3565b604082019050919050565b6000602082019050818103600083015261355e81613522565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135c1602983612c17565b91506135cc82613565565b604082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613653603f83612c17565b915061365e826135f7565b604082019050919050565b6000602082019050818103600083015261368281613646565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136bf601c83612c17565b91506136ca82613689565b602082019050919050565b600060208201905081810360008301526136ee816136b2565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613751602383612c17565b915061375c826136f5565b604082019050919050565b6000602082019050818103600083015261378081613744565b9050919050565b600061379282612d2a565b915061379d83612d2a565b9250828210156137b0576137af6131c0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613817602a83612c17565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613883601b83612c17565b915061388e8261384d565b602082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b60006138c482612d2a565b91506138cf83612d2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613908576139076131c0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394d82612d2a565b915061395883612d2a565b92508261396857613967613913565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139cf602183612c17565b91506139da82613973565b604082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a7281612cfe565b92915050565b600060208284031215613a8e57613a8d612cc7565b5b6000613a9c84828501613a63565b91505092915050565b6000819050919050565b6000613aca613ac5613ac084613aa5565b612e00565b612d2a565b9050919050565b613ada81613aaf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1581612cec565b82525050565b6000613b278383613b0c565b60208301905092915050565b6000602082019050919050565b6000613b4b82613ae0565b613b558185613aeb565b9350613b6083613afc565b8060005b83811015613b91578151613b788882613b1b565b9750613b8383613b33565b925050600181019050613b64565b5085935050505092915050565b600060a082019050613bb36000830188612dd6565b613bc06020830187613ad1565b8181036040830152613bd28186613b40565b9050613be16060830185612f04565b613bee6080830184612dd6565b9695505050505050565b600060c082019050613c0d6000830189612f04565b613c1a6020830188612dd6565b613c276040830187613ad1565b613c346060830186613ad1565b613c416080830185612f04565b613c4e60a0830184612dd6565b979650505050505050565b600081519050613c6881612d34565b92915050565b600080600060608486031215613c8757613c86612cc7565b5b6000613c9586828701613c59565b9350506020613ca686828701613c59565b9250506040613cb786828701613c59565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201601046b64c5526708282a69f599a87f5730affc75c47ddc31f70f68343289eb64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806374010ece116100f757806398a5c31511610095578063d4780e3611610064578063d4780e361461063b578063dd62ed3e1461067d578063ea1644d5146106ba578063f2fde38b146106e3576101d8565b806398a5c31514610583578063a2a957bb146105ac578063a9059cbb146105d5578063ac1a386a14610612576101d8565b80638f70ccf7116100d15780638f70ccf7146104d95780638f9a55c01461050257806395d89b411461052d57806398118cb414610558576101d8565b806374010ece1461045a5780637d1db4a5146104835780638da5cb5b146104ae576101d8565b8063313ce5671161016f5780636b67c4df1161013e5780636b67c4df146103b25780636d8aa8f8146103dd57806370a0823114610406578063715018a614610443576101d8565b8063313ce5671461032e57806349bd5a5e14610359578063526e588c14610384578063598526861461039b576101d8565b80631694505e116101ab5780631694505e1461027057806318160ddd1461029b57806323b872dd146102c65780632fd689e314610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806313114a9d14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261070c565b6040516101ff9190612ca5565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d60565b610749565b60405161023c9190612dbb565b60405180910390f35b34801561025157600080fd5b5061025a610767565b6040516102679190612de5565b60405180910390f35b34801561027c57600080fd5b5061028561076d565b6040516102929190612e5f565b60405180910390f35b3480156102a757600080fd5b506102b0610793565b6040516102bd9190612de5565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612e7a565b6107a3565b6040516102fa9190612dbb565b60405180910390f35b34801561030f57600080fd5b5061031861087c565b6040516103259190612de5565b60405180910390f35b34801561033a57600080fd5b50610343610882565b6040516103509190612ee9565b60405180910390f35b34801561036557600080fd5b5061036e61088b565b60405161037b9190612f13565b60405180910390f35b34801561039057600080fd5b506103996108b1565b005b3480156103a757600080fd5b506103b0610966565b005b3480156103be57600080fd5b506103c7610a44565b6040516103d49190612de5565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190612f5a565b610a4a565b005b34801561041257600080fd5b5061042d60048036038101906104289190612f87565b610afc565b60405161043a9190612de5565b60405180910390f35b34801561044f57600080fd5b50610458610b4d565b005b34801561046657600080fd5b50610481600480360381019061047c9190612fb4565b610ca0565b005b34801561048f57600080fd5b50610498610d3f565b6040516104a59190612de5565b60405180910390f35b3480156104ba57600080fd5b506104c3610d45565b6040516104d09190612f13565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb9190612f5a565b610d6e565b005b34801561050e57600080fd5b50610517610e20565b6040516105249190612de5565b60405180910390f35b34801561053957600080fd5b50610542610e26565b60405161054f9190612ca5565b60405180910390f35b34801561056457600080fd5b5061056d610e63565b60405161057a9190612de5565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190612fb4565b610e69565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612fe1565b610f08565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190612d60565b611063565b6040516106099190612dbb565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613086565b611081565b005b34801561064757600080fd5b50610662600480360381019061065d9190612fb4565b61115a565b604051610674969594939291906130b3565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190613114565b6111c2565b6040516106b19190612de5565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612fb4565b611249565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612f87565b6112e8565b005b60606040518060400160405280600581526020017f6861766f63000000000000000000000000000000000000000000000000000000815250905090565b600061075d6107566114a9565b84846114b1565b6001905092915050565b600c5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670429d069189e0000905090565b60006107b084848461167a565b610871846107bc6114a9565b61086c85604051806060016040528060288152602001613cc260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108226114a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f209092919063ffffffff16565b6114b1565b600190509392505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b96114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d906131a0565b60405180910390fd5b670429d069189e0000601981905550670429d069189e0000601a81905550565b61096e6114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906131a0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a41573d6000803e3d6000fd5b50565b60125481565b610a526114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad6906131a0565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b6000610b46600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f84565b9050919050565b610b556114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd9906131a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca86114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906131a0565b60405180910390fd5b8060198190555050565b60195481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d766114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906131a0565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b60115481565b610e716114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef5906131a0565b60405180910390fd5b80601b8190555050565b610f106114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f94906131a0565b60405180910390fd5b8360088190555082600a8190555060115491506012549050610fc88183611ff290919063ffffffff16565b600b81905550610fe18183611ff290919063ffffffff16565b600981905550600b54600954600a54600854610ffd91906131ef565b61100791906131ef565b61101191906131ef565b600c819055506064600c54111561105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110549061326b565b60405180910390fd5b50505050565b60006110776110706114a9565b848461167a565b6001905092915050565b6110896114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d906131a0565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006111778a600d54600e54612050565b92509250925060006111876120e6565b9050600080600061119a8e878787612111565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112516114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d5906131a0565b60405180910390fd5b80601a8190555050565b6112f06114a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611374906131a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e3906132fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115179061338f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613421565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166d9190612de5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e0906134b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613545565b60405180910390fd5b6000811161179b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611792906135d7565b60405180910390fd5b6117a3610d45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561181157506117e1610d45565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1f57601860149054906101000a900460ff166118a057611832610d45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690613669565b60405180910390fd5b5b6019548111156118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc906136d5565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461199257601a548161194784610afc565b61195191906131ef565b10611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890613767565b60405180910390fd5b5b600061199d30610afc565b90506000601b5482101590508080156119c35750601860159054906101000a900460ff16155b8015611a1d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a355750601860169054906101000a900460ff165b8015611a8b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ae15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1c576000821115611c1b576000611b07600260115461219a90919063ffffffff16565b90506000611b22601254601154611ff290919063ffffffff16565b90506000611b3983836121e490919063ffffffff16565b90506000611b6283611b54848961222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000479050611b72826122a8565b6000611b8782476121e490919063ffffffff16565b90506000611b9430610afc565b90506000611bbe86611bb060648b61222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000611be86064611bda848761222e90919063ffffffff16565b61219a90919063ffffffff16565b90506000811115611bfe57611bfd8184612521565b5b6000471115611c1157611c104761279e565b5b5050505050505050505b5b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cc65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d795750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d785750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d875760009050611f0e565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e325750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4a57600854600d81905550600954600e819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f0d57600a54600d81905550600b54600e819055505b5b611f1a8484848461280a565b50505050565b6000838311158290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612ca5565b60405180910390fd5b5060008385611f779190613787565b9050809150509392505050565b6000600654821115611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc29061382d565b60405180910390fd5b6000611fd56120e6565b9050611fea818461219a90919063ffffffff16565b915050919050565b600080828461200191906131ef565b905083811015612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613899565b60405180910390fd5b8091505092915050565b60008060008061207c606461206e888a61222e90919063ffffffff16565b61219a90919063ffffffff16565b905060006120a66064612098888b61222e90919063ffffffff16565b61219a90919063ffffffff16565b905060006120cf826120c1858c6121e490919063ffffffff16565b6121e490919063ffffffff16565b905080838395509550955050505093509350939050565b60008060006120f3612837565b9150915061210a818361219a90919063ffffffff16565b9250505090565b60008060008061212a858961222e90919063ffffffff16565b90506000612141868961222e90919063ffffffff16565b90506000612158878961222e90919063ffffffff16565b905060006121818261217385876121e490919063ffffffff16565b6121e490919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006121dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612896565b905092915050565b600061222683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f20565b905092915050565b600080830361224057600090506122a2565b6000828461224e91906138b9565b905082848261225d9190613942565b1461229d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612294906139e5565b60405180910390fd5b809150505b92915050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122e0576122df613a05565b5b60405190808252806020026020018201604052801561230e5781602001602082028036833780820191505090505b509050308160008151811061232657612325613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f19190613a78565b8160018151811061240557612404613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246c30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114b1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d0959493929190613b9e565b600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff81111561253e5761253d613a05565b5b60405190808252806020026020018201604052801561256c5781602001602082028036833780820191505090505b509050308160008151811061258457612583613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264f9190613a78565b8160018151811061266357612662613a34565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126ca30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114b1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161275396959493929190613bf8565b60606040518083038185885af1158015612771573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127969190613c6e565b505050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612806573d6000803e3d6000fd5b5050565b80612818576128176128f9565b5b612823848484612936565b8061283157612830612b01565b5b50505050565b600080600060065490506000670429d069189e0000905061286b670429d069189e000060065461219a90919063ffffffff16565b82101561288957600654670429d069189e0000935093505050612892565b81819350935050505b9091565b600080831182906128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d49190612ca5565b60405180910390fd5b50600083856128ec9190613942565b9050809150509392505050565b6000600d5414801561290d57506000600e54145b61293457600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806129488761115a565b9550955095509550955095506129a686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a3b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8781612b15565b612a918483612bd2565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612aee9190612de5565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b6000612b1f6120e6565b90506000612b36828461222e90919063ffffffff16565b9050612b8a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612be7826006546121e490919063ffffffff16565b600681905550612c0281600754611ff290919063ffffffff16565b6007819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c46578082015181840152602081019050612c2b565b83811115612c55576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c7782612c0c565b612c818185612c17565b9350612c91818560208601612c28565b612c9a81612c5b565b840191505092915050565b60006020820190508181036000830152612cbf8184612c6c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cf782612ccc565b9050919050565b612d0781612cec565b8114612d1257600080fd5b50565b600081359050612d2481612cfe565b92915050565b6000819050919050565b612d3d81612d2a565b8114612d4857600080fd5b50565b600081359050612d5a81612d34565b92915050565b60008060408385031215612d7757612d76612cc7565b5b6000612d8585828601612d15565b9250506020612d9685828601612d4b565b9150509250929050565b60008115159050919050565b612db581612da0565b82525050565b6000602082019050612dd06000830184612dac565b92915050565b612ddf81612d2a565b82525050565b6000602082019050612dfa6000830184612dd6565b92915050565b6000819050919050565b6000612e25612e20612e1b84612ccc565b612e00565b612ccc565b9050919050565b6000612e3782612e0a565b9050919050565b6000612e4982612e2c565b9050919050565b612e5981612e3e565b82525050565b6000602082019050612e746000830184612e50565b92915050565b600080600060608486031215612e9357612e92612cc7565b5b6000612ea186828701612d15565b9350506020612eb286828701612d15565b9250506040612ec386828701612d4b565b9150509250925092565b600060ff82169050919050565b612ee381612ecd565b82525050565b6000602082019050612efe6000830184612eda565b92915050565b612f0d81612cec565b82525050565b6000602082019050612f286000830184612f04565b92915050565b612f3781612da0565b8114612f4257600080fd5b50565b600081359050612f5481612f2e565b92915050565b600060208284031215612f7057612f6f612cc7565b5b6000612f7e84828501612f45565b91505092915050565b600060208284031215612f9d57612f9c612cc7565b5b6000612fab84828501612d15565b91505092915050565b600060208284031215612fca57612fc9612cc7565b5b6000612fd884828501612d4b565b91505092915050565b60008060008060808587031215612ffb57612ffa612cc7565b5b600061300987828801612d4b565b945050602061301a87828801612d4b565b935050604061302b87828801612d4b565b925050606061303c87828801612d4b565b91505092959194509250565b600061305382612ccc565b9050919050565b61306381613048565b811461306e57600080fd5b50565b6000813590506130808161305a565b92915050565b60006020828403121561309c5761309b612cc7565b5b60006130aa84828501613071565b91505092915050565b600060c0820190506130c86000830189612dd6565b6130d56020830188612dd6565b6130e26040830187612dd6565b6130ef6060830186612dd6565b6130fc6080830185612dd6565b61310960a0830184612dd6565b979650505050505050565b6000806040838503121561312b5761312a612cc7565b5b600061313985828601612d15565b925050602061314a85828601612d15565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061318a602083612c17565b915061319582613154565b602082019050919050565b600060208201905081810360008301526131b98161317d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131fa82612d2a565b915061320583612d2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561323a576132396131c0565b5b828201905092915050565b50565b6000613255600083612c17565b915061326082613245565b600082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132e7602683612c17565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613379602483612c17565b91506133848261331d565b604082019050919050565b600060208201905081810360008301526133a88161336c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061340b602283612c17565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061349d602583612c17565b91506134a882613441565b604082019050919050565b600060208201905081810360008301526134cc81613490565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061352f602383612c17565b915061353a826134d3565b604082019050919050565b6000602082019050818103600083015261355e81613522565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135c1602983612c17565b91506135cc82613565565b604082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613653603f83612c17565b915061365e826135f7565b604082019050919050565b6000602082019050818103600083015261368281613646565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136bf601c83612c17565b91506136ca82613689565b602082019050919050565b600060208201905081810360008301526136ee816136b2565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613751602383612c17565b915061375c826136f5565b604082019050919050565b6000602082019050818103600083015261378081613744565b9050919050565b600061379282612d2a565b915061379d83612d2a565b9250828210156137b0576137af6131c0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613817602a83612c17565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613883601b83612c17565b915061388e8261384d565b602082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b60006138c482612d2a565b91506138cf83612d2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613908576139076131c0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394d82612d2a565b915061395883612d2a565b92508261396857613967613913565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139cf602183612c17565b91506139da82613973565b604082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a7281612cfe565b92915050565b600060208284031215613a8e57613a8d612cc7565b5b6000613a9c84828501613a63565b91505092915050565b6000819050919050565b6000613aca613ac5613ac084613aa5565b612e00565b612d2a565b9050919050565b613ada81613aaf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1581612cec565b82525050565b6000613b278383613b0c565b60208301905092915050565b6000602082019050919050565b6000613b4b82613ae0565b613b558185613aeb565b9350613b6083613afc565b8060005b83811015613b91578151613b788882613b1b565b9750613b8383613b33565b925050600181019050613b64565b5085935050505092915050565b600060a082019050613bb36000830188612dd6565b613bc06020830187613ad1565b8181036040830152613bd28186613b40565b9050613be16060830185612f04565b613bee6080830184612dd6565b9695505050505050565b600060c082019050613c0d6000830189612f04565b613c1a6020830188612dd6565b613c276040830187613ad1565b613c346060830186613ad1565b613c416080830185612f04565b613c4e60a0830184612dd6565b979650505050505050565b600081519050613c6881612d34565b92915050565b600080600060608486031215613c8757613c86612cc7565b5b6000613c9586828701613c59565b9350506020613ca686828701613c59565b9250506040613cb786828701613c59565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201601046b64c5526708282a69f599a87f5730affc75c47ddc31f70f68343289eb64736f6c634300080f0033

Deployed Bytecode Sourcemap

4104:14704:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6852:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7754:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4946:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7129:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7948:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5965:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7038:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5705:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18267:114;;;;;;;;;;;;;:::i;:::-;;14882:110;;;;;;;;;;;;;:::i;:::-;;5229:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18158:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7232:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1599:148;;;;;;;;;;;;;:::i;:::-;;18415:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5855:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1385:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13865:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5909:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6943:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5191:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17951:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17349:550;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7378:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18531:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15411:630;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;7578:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18690:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1755:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6852:83;6889:13;6922:5;;;;;;;;;;;;;;;;;6915:12;;6852:83;:::o;7754:186::-;7854:4;7871:39;7880:12;:10;:12::i;:::-;7894:7;7903:6;7871:8;:39::i;:::-;7928:4;7921:11;;7754:186;;;;:::o;4946:24::-;;;;:::o;5657:41::-;;;;;;;;;;;;;:::o;7129:95::-;7182:7;4646:19;7202:14;;7129:95;:::o;7948:446::-;8080:4;8097:36;8107:6;8115:9;8126:6;8097:9;:36::i;:::-;8144:220;8167:6;8188:12;:10;:12::i;:::-;8215:138;8271:6;8215:138;;;;;;;;;;;;;;;;;:11;:19;8227:6;8215:19;;;;;;;;;;;;;;;:33;8235:12;:10;:12::i;:::-;8215:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8144:8;:220::i;:::-;8382:4;8375:11;;7948:446;;;;;:::o;5965:51::-;;;;:::o;7038:83::-;7079:5;4318:1;7097:16;;7038:83;:::o;5705:28::-;;;;;;;;;;;;;:::o;18267:114::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4646:19:::1;18316:12;:22;;;;4646:19;18349:14;:24;;;;18267:114::o:0;14882:110::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14941:10:::1;14933:28;;:51;14962:21;14933:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14882:110::o:0;5229:32::-;;;;:::o;18158:101::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18239:12:::1;18225:11;;:26;;;;;;;;;;;;;;;;;;18158:101:::0;:::o;7232:138::-;7298:7;7325:37;7345:7;:16;7353:7;7345:16;;;;;;;;;;;;;;;;7325:19;:37::i;:::-;7318:44;;7232:138;;;:::o;1599:148::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1706:1:::1;1669:40;;1690:6;::::0;::::1;;;;;;;;1669:40;;;;;;;;;;;;1737:1;1720:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1599:148::o:0;18415:108::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18504:11:::1;18489:12;:26;;;;18415:108:::0;:::o;5855:47::-;;;;:::o;1385:79::-;1423:7;1450:6;;;;;;;;;;;1443:13;;1385:79;:::o;13865:101::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13946:12:::1;13932:11;;:26;;;;;;;;;;;;;;;;;;13865:101:::0;:::o;5909:49::-;;;;:::o;6943:87::-;6982:13;7015:7;;;;;;;;;;;;;;;;;7008:14;;6943:87;:::o;5191:31::-;;;;:::o;17951:155::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18080:18:::1;18058:19;:40;;;;17951:155:::0;:::o;17349:550::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17541:13:::1;17529:9;:25;;;;17578:14;17565:10;:27;;;;17619:12;;17603:28;;17658:12;;17642:28;;17694:32;17712:13;17694;:17;;:32;;;;:::i;:::-;17681:10;:45;;;;17749:32;17767:13;17749;:17;;:32;;;;:::i;:::-;17737:9;:44;;;;17841:10;;17829:9;;17816:10;;17804:9;;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;17792:9;:59;;;;17883:3;17870:9;;:16;;17862:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;17349:550:::0;;;;:::o;7378:192::-;7481:4;7498:42;7508:12;:10;:12::i;:::-;7522:9;7533:6;7498:9;:42::i;:::-;7558:4;7551:11;;7378:192;;;;:::o;18531:122::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18637:8:::1;18611:23;;:34;;;;;;;;;;;;;;;;;;18531:122:::0;:::o;15411:630::-;15512:7;15521;15530;15539;15548;15557;15583:23;15608:12;15622:13;15639:90;15665:7;15687:9;;15711:7;;15639:11;:90::i;:::-;15582:147;;;;;;15740:19;15762:10;:8;:10::i;:::-;15740:32;;15784:15;15801:23;15826:12;15842:109;15868:7;15890:4;15909:5;15929:11;15842;:109::i;:::-;15783:168;;;;;;15972:7;15981:15;15998:4;16004:15;16021:4;16027:5;15964:69;;;;;;;;;;;;;;;;;;;15411:630;;;;;;;:::o;7578:168::-;7684:7;7711:11;:18;7723:5;7711:18;;;;;;;;;;;;;;;:27;7730:7;7711:27;;;;;;;;;;;;;;;;7704:34;;7578:168;;;;:::o;18690:115::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18784:13:::1;18767:14;:30;;;;18690:115:::0;:::o;1755:281::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1878:1:::1;1858:22;;:8;:22;;::::0;1836:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1991:8;1962:38;;1983:6;::::0;::::1;;;;;;;;1962:38;;;;;;;;;;;;2020:8;2011:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1755:281:::0;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;9069:335::-;9179:1;9162:19;;:5;:19;;;9154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9260:1;9241:21;;:7;:21;;;9233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9342:6;9312:11;:18;9324:5;9312:18;;;;;;;;;;;;;;;:27;9331:7;9312:27;;;;;;;;;;;;;;;:36;;;;9380:7;9364:32;;9373:5;9364:32;;;9389:6;9364:32;;;;;;:::i;:::-;;;;;;;;9069:335;;;:::o;9412:3325::-;9516:1;9500:18;;:4;:18;;;9492:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9593:1;9579:16;;:2;:16;;;9571:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9663:1;9654:6;:10;9646:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:7;:5;:7::i;:::-;9727:15;;:4;:15;;;;:32;;;;;9752:7;:5;:7::i;:::-;9746:13;;:2;:13;;;;9727:32;9723:2270;;;9814:11;;;;;;;;;;;9809:205;;9884:7;:5;:7::i;:::-;9876:15;;:4;:15;;;9846:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;9809:205;10048:12;;10038:6;:22;;10030:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10120:13;;;;;;;;;;;10114:19;;:2;:19;;;10110:208;;10209:14;;10200:6;10184:13;10194:2;10184:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10154:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;10110:208;10334:28;10365:24;10383:4;10365:9;:24::i;:::-;10334:55;;10406:12;10445:19;;10421:20;:43;;10406:58;;10503:7;:35;;;;;10532:6;;;;;;;;;;;10531:7;10503:35;:77;;;;;10567:13;;;;;;;;;;;10559:21;;:4;:21;;;;10503:77;:109;;;;;10601:11;;;;;;;;;;;10503:109;:155;;;;;10634:18;:24;10653:4;10634:24;;;;;;;;;;;;;;;;;;;;;;;;;10633:25;10503:155;:199;;;;;10680:18;:22;10699:2;10680:22;;;;;;;;;;;;;;;;;;;;;;;;;10679:23;10503:199;10481:1501;;;10764:1;10741:20;:24;10737:1230;;;10790:14;10807:19;10824:1;10807:12;;:16;;:19;;;;:::i;:::-;10790:36;;10851:11;10865:30;10882:12;;10865;;:16;;:30;;;;:::i;:::-;10851:44;;10918:17;10938:15;10946:6;10938:3;:7;;:15;;;;:::i;:::-;10918:35;;10978:20;11001:96;11093:3;11001:61;11052:9;11001:20;:50;;:61;;;;:::i;:::-;:91;;:96;;;;:::i;:::-;10978:119;;11122:24;11149:21;11122:48;;11193:30;11210:12;11193:16;:30::i;:::-;11246:23;11272:91;11324:16;11272:21;:25;;:91;;;;:::i;:::-;11246:117;;11388:19;11410:26;11429:4;11410:9;:26::i;:::-;11388:48;;11461:22;11486:30;11506:9;11486:15;11497:3;11486:6;:10;;:15;;;;:::i;:::-;:19;;:30;;;;:::i;:::-;11461:55;;11539:23;11565:96;11657:3;11565:61;11611:14;11565:15;:45;;:61;;;;:::i;:::-;:91;;:96;;;;:::i;:::-;11539:122;;11708:1;11690:15;:19;11686:121;;;11738:45;11754:15;11771:11;11738:15;:45::i;:::-;11686:121;11859:1;11835:21;:25;11831:117;;;11889:35;11902:21;11889:12;:35::i;:::-;11831:117;10767:1200;;;;;;;;;10737:1230;10481:1501;9761:2232;;9723:2270;12005:12;12020:4;12005:19;;12083:18;:24;12102:4;12083:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12111:18;:22;12130:2;12111:22;;;;;;;;;;;;;;;;;;;;;;;;;12083:50;12082:115;;;;12160:13;;;;;;;;;;;12152:21;;:4;:21;;;;:44;;;;;12183:13;;;;;;;;;;;12177:19;;:2;:19;;;;12152:44;12082:115;12064:612;;;12234:5;12224:15;;12064:612;;;12316:13;;;;;;;;;;;12308:21;;:4;:21;;;:55;;;;;12347:15;;;;;;;;;;;12333:30;;:2;:30;;;;12308:55;12304:155;;;12396:9;;12384;:21;;;;12434:9;;12424:7;:19;;;;12304:155;12518:13;;;;;;;;;;;12512:19;;:2;:19;;;:55;;;;;12551:15;;;;;;;;;;;12535:32;;:4;:32;;;;12512:55;12508:157;;;12600:10;;12588:9;:22;;;;12639:10;;12629:7;:20;;;;12508:157;12064:612;12688:41;12703:4;12709:2;12713:6;12721:7;12688:14;:41::i;:::-;9481:3256;9412:3325;;;:::o;2398:224::-;2518:7;2551:1;2546;:6;;2554:12;2538:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2578:9;2594:1;2590;:5;;;;:::i;:::-;2578:17;;2613:1;2606:8;;;2398:224;;;;;:::o;8402:307::-;8486:7;8539;;8528;:18;;8506:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8627:19;8649:10;:8;:10::i;:::-;8627:32;;8677:24;8689:11;8677:7;:11;;:24;;;;:::i;:::-;8670:31;;;8402:307;;;:::o;2067:179::-;2125:7;2145:9;2161:1;2157;:5;;;;:::i;:::-;2145:17;;2186:1;2181;:6;;2173:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:1;2230:8;;;2067:179;;;;:::o;16049:389::-;16177:7;16186;16195;16215:12;16230:30;16256:3;16230:21;16242:8;16230:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16215:45;;16271:13;16287:28;16311:3;16287:19;16299:6;16287:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16271:44;;16326:23;16352:28;16374:5;16352:17;16364:4;16352:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16326:54;;16401:15;16418:4;16424:5;16393:37;;;;;;;;;16049:389;;;;;;;:::o;16908:166::-;16950:7;16971:15;16988;17007:19;:17;:19::i;:::-;16970:56;;;;17046:20;17058:7;17046;:11;;:20;;;;:::i;:::-;17039:27;;;;16908:166;:::o;16446:454::-;16599:7;16608;16617;16637:15;16655:24;16667:11;16655:7;:11;;:24;;;;:::i;:::-;16637:42;;16690:12;16705:21;16714:11;16705:4;:8;;:21;;;;:::i;:::-;16690:36;;16737:13;16753:22;16763:11;16753:5;:9;;:22;;;;:::i;:::-;16737:38;;16786:23;16812:28;16834:5;16812:17;16824:4;16812:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16786:54;;16861:7;16870:15;16887:4;16853:39;;;;;;;;;;16446:454;;;;;;;;:::o;2884:132::-;2942:7;2969:39;2973:1;2976;2969:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2962:46;;2884:132;;;;:::o;2254:136::-;2312:7;2339:43;2343:1;2346;2339:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2332:50;;2254:136;;;;:::o;2630:246::-;2688:7;2717:1;2712;:6;2708:47;;2742:1;2735:8;;;;2708:47;2765:9;2781:1;2777;:5;;;;:::i;:::-;2765:17;;2810:1;2805;2801;:5;;;;:::i;:::-;:10;2793:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2867:1;2860:8;;;2630:246;;;;;:::o;12745:483::-;6121:4;6112:6;;:13;;;;;;;;;;;;;;;;;;12823:21:::1;12861:1;12847:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12823:40;;12892:4;12874;12879:1;12874:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12918:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12908:4;12913:1;12908:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12951:62;12968:4;12983:15;;;;;;;;;;;13001:11;12951:8;:62::i;:::-;13024:15;;;;;;;;;;;:66;;;13105:11;13131:1;13147:4;13174;13194:15;13024:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12812:416;6157:5:::0;6148:6;;:14;;;;;;;;;;;;;;;;;;12745:483;:::o;13236:499::-;13322:21;13360:1;13346:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:40;;13391:4;13373;13378:1;13373:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13417:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13407:4;13412:1;13407:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13450:63;13467:4;13482:15;;;;;;;;;;;13500:12;13450:8;:63::i;:::-;13524:15;;;;;;;;;;;:31;;;13563:10;13597:4;13617:12;13644:1;13660;13676:10;;;;;;;;;;;13701:15;13524:203;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13311:424;13236:499;;:::o;13743:114::-;13808:23;;;;;;;;;;;13800:41;;:49;13842:6;13800:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13743:114;:::o;13974:282::-;14130:7;14125:28;;14139:14;:12;:14::i;:::-;14125:28;14164:44;14182:6;14190:9;14201:6;14164:17;:44::i;:::-;14224:7;14219:29;;14233:15;:13;:15::i;:::-;14219:29;13974:282;;;;:::o;17082:259::-;17133:7;17142;17162:15;17180:7;;17162:25;;17198:15;4646:19;17198:25;;17248:20;4646:19;17248:7;;:11;;:20;;;;:::i;:::-;17238:7;:30;17234:61;;;17278:7;;4646:19;17270:25;;;;;;;;17234:61;17316:7;17325;17308:25;;;;;;17082:259;;;:::o;3024:223::-;3144:7;3176:1;3172;:5;3179:12;3164:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3203:9;3219:1;3215;:5;;;;:::i;:::-;3203:17;;3238:1;3231:8;;;3024:223;;;;;:::o;8717:219::-;8777:1;8764:9;;:14;:30;;;;;8793:1;8782:7;;:12;8764:30;8796:7;8760:43;8835:9;;8815:17;:29;;;;8873:7;;8855:15;:25;;;;8905:1;8893:9;:13;;;;8927:1;8917:7;:11;;;;8717:219;:::o;14264:610::-;14411:15;14441:23;14479:12;14506:23;14544:12;14571:13;14598:19;14609:7;14598:10;:19::i;:::-;14396:221;;;;;;;;;;;;14646:28;14666:7;14646;:15;14654:6;14646:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14628:7;:15;14636:6;14628:15;;;;;;;;;;;;;;;:46;;;;14706:39;14729:15;14706:7;:18;14714:9;14706:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14685:7;:18;14693:9;14685:18;;;;;;;;;;;;;;;:60;;;;14756:16;14766:5;14756:9;:16::i;:::-;14783:23;14795:4;14801;14783:11;:23::i;:::-;14839:9;14822:44;;14831:6;14822:44;;;14850:15;14822:44;;;;;;:::i;:::-;;;;;;;;14385:489;;;;;;14264:610;;;:::o;8944:117::-;9000:17;;8988:9;:29;;;;9038:15;;9028:7;:25;;;;8944:117::o;15000:211::-;15053:19;15075:10;:8;:10::i;:::-;15053:32;;15096:13;15112:22;15122:11;15112:5;:9;;:22;;;;:::i;:::-;15096:38;;15170:33;15197:5;15170:7;:22;15186:4;15170:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15145:7;:22;15161:4;15145:22;;;;;;;;;;;;;;;:58;;;;15042:169;;15000:211;:::o;15219:147::-;15297:17;15309:4;15297:7;;:11;;:17;;;;:::i;:::-;15287:7;:27;;;;15338:20;15353:4;15338:10;;:14;;:20;;;;:::i;:::-;15325:10;:33;;;;15219:147;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:152::-;4268:9;4301:37;4332:5;4301:37;:::i;:::-;4288:50;;4192:152;;;:::o;4350:183::-;4463:63;4520:5;4463:63;:::i;:::-;4458:3;4451:76;4350:183;;:::o;4539:274::-;4658:4;4696:2;4685:9;4681:18;4673:26;;4709:97;4803:1;4792:9;4788:17;4779:6;4709:97;:::i;:::-;4539:274;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:104::-;8302:7;8331:24;8349:5;8331:24;:::i;:::-;8320:35;;8257:104;;;:::o;8367:138::-;8448:32;8474:5;8448:32;:::i;:::-;8441:5;8438:43;8428:71;;8495:1;8492;8485:12;8428:71;8367:138;:::o;8511:155::-;8565:5;8603:6;8590:20;8581:29;;8619:41;8654:5;8619:41;:::i;:::-;8511:155;;;;:::o;8672:345::-;8739:6;8788:2;8776:9;8767:7;8763:23;8759:32;8756:119;;;8794:79;;:::i;:::-;8756:119;8914:1;8939:61;8992:7;8983:6;8972:9;8968:22;8939:61;:::i;:::-;8929:71;;8885:125;8672:345;;;;:::o;9023:775::-;9256:4;9294:3;9283:9;9279:19;9271:27;;9308:71;9376:1;9365:9;9361:17;9352:6;9308:71;:::i;:::-;9389:72;9457:2;9446:9;9442:18;9433:6;9389:72;:::i;:::-;9471;9539:2;9528:9;9524:18;9515:6;9471:72;:::i;:::-;9553;9621:2;9610:9;9606:18;9597:6;9553:72;:::i;:::-;9635:73;9703:3;9692:9;9688:19;9679:6;9635:73;:::i;:::-;9718;9786:3;9775:9;9771:19;9762:6;9718:73;:::i;:::-;9023:775;;;;;;;;;:::o;9804:474::-;9872:6;9880;9929:2;9917:9;9908:7;9904:23;9900:32;9897:119;;;9935:79;;:::i;:::-;9897:119;10055:1;10080:53;10125:7;10116:6;10105:9;10101:22;10080:53;:::i;:::-;10070:63;;10026:117;10182:2;10208:53;10253:7;10244:6;10233:9;10229:22;10208:53;:::i;:::-;10198:63;;10153:118;9804:474;;;;;:::o;10284:182::-;10424:34;10420:1;10412:6;10408:14;10401:58;10284:182;:::o;10472:366::-;10614:3;10635:67;10699:2;10694:3;10635:67;:::i;:::-;10628:74;;10711:93;10800:3;10711:93;:::i;:::-;10829:2;10824:3;10820:12;10813:19;;10472:366;;;:::o;10844:419::-;11010:4;11048:2;11037:9;11033:18;11025:26;;11097:9;11091:4;11087:20;11083:1;11072:9;11068:17;11061:47;11125:131;11251:4;11125:131;:::i;:::-;11117:139;;10844:419;;;:::o;11269:180::-;11317:77;11314:1;11307:88;11414:4;11411:1;11404:15;11438:4;11435:1;11428:15;11455:305;11495:3;11514:20;11532:1;11514:20;:::i;:::-;11509:25;;11548:20;11566:1;11548:20;:::i;:::-;11543:25;;11702:1;11634:66;11630:74;11627:1;11624:81;11621:107;;;11708:18;;:::i;:::-;11621:107;11752:1;11749;11745:9;11738:16;;11455:305;;;;:::o;11766:114::-;;:::o;11886:364::-;12028:3;12049:66;12113:1;12108:3;12049:66;:::i;:::-;12042:73;;12124:93;12213:3;12124:93;:::i;:::-;12242:1;12237:3;12233:11;12226:18;;11886:364;;;:::o;12256:419::-;12422:4;12460:2;12449:9;12445:18;12437:26;;12509:9;12503:4;12499:20;12495:1;12484:9;12480:17;12473:47;12537:131;12663:4;12537:131;:::i;:::-;12529:139;;12256:419;;;:::o;12681:225::-;12821:34;12817:1;12809:6;12805:14;12798:58;12890:8;12885:2;12877:6;12873:15;12866:33;12681:225;:::o;12912:366::-;13054:3;13075:67;13139:2;13134:3;13075:67;:::i;:::-;13068:74;;13151:93;13240:3;13151:93;:::i;:::-;13269:2;13264:3;13260:12;13253:19;;12912:366;;;:::o;13284:419::-;13450:4;13488:2;13477:9;13473:18;13465:26;;13537:9;13531:4;13527:20;13523:1;13512:9;13508:17;13501:47;13565:131;13691:4;13565:131;:::i;:::-;13557:139;;13284:419;;;:::o;13709:223::-;13849:34;13845:1;13837:6;13833:14;13826:58;13918:6;13913:2;13905:6;13901:15;13894:31;13709:223;:::o;13938:366::-;14080:3;14101:67;14165:2;14160:3;14101:67;:::i;:::-;14094:74;;14177:93;14266:3;14177:93;:::i;:::-;14295:2;14290:3;14286:12;14279:19;;13938:366;;;:::o;14310:419::-;14476:4;14514:2;14503:9;14499:18;14491:26;;14563:9;14557:4;14553:20;14549:1;14538:9;14534:17;14527:47;14591:131;14717:4;14591:131;:::i;:::-;14583:139;;14310:419;;;:::o;14735:221::-;14875:34;14871:1;14863:6;14859:14;14852:58;14944:4;14939:2;14931:6;14927:15;14920:29;14735:221;:::o;14962:366::-;15104:3;15125:67;15189:2;15184:3;15125:67;:::i;:::-;15118:74;;15201:93;15290:3;15201:93;:::i;:::-;15319:2;15314:3;15310:12;15303:19;;14962:366;;;:::o;15334:419::-;15500:4;15538:2;15527:9;15523:18;15515:26;;15587:9;15581:4;15577:20;15573:1;15562:9;15558:17;15551:47;15615:131;15741:4;15615:131;:::i;:::-;15607:139;;15334:419;;;:::o;15759:224::-;15899:34;15895:1;15887:6;15883:14;15876:58;15968:7;15963:2;15955:6;15951:15;15944:32;15759:224;:::o;15989:366::-;16131:3;16152:67;16216:2;16211:3;16152:67;:::i;:::-;16145:74;;16228:93;16317:3;16228:93;:::i;:::-;16346:2;16341:3;16337:12;16330:19;;15989:366;;;:::o;16361:419::-;16527:4;16565:2;16554:9;16550:18;16542:26;;16614:9;16608:4;16604:20;16600:1;16589:9;16585:17;16578:47;16642:131;16768:4;16642:131;:::i;:::-;16634:139;;16361:419;;;:::o;16786:222::-;16926:34;16922:1;16914:6;16910:14;16903:58;16995:5;16990:2;16982:6;16978:15;16971:30;16786:222;:::o;17014:366::-;17156:3;17177:67;17241:2;17236:3;17177:67;:::i;:::-;17170:74;;17253:93;17342:3;17253:93;:::i;:::-;17371:2;17366:3;17362:12;17355:19;;17014:366;;;:::o;17386:419::-;17552:4;17590:2;17579:9;17575:18;17567:26;;17639:9;17633:4;17629:20;17625:1;17614:9;17610:17;17603:47;17667:131;17793:4;17667:131;:::i;:::-;17659:139;;17386:419;;;:::o;17811:228::-;17951:34;17947:1;17939:6;17935:14;17928:58;18020:11;18015:2;18007:6;18003:15;17996:36;17811:228;:::o;18045:366::-;18187:3;18208:67;18272:2;18267:3;18208:67;:::i;:::-;18201:74;;18284:93;18373:3;18284:93;:::i;:::-;18402:2;18397:3;18393:12;18386:19;;18045:366;;;:::o;18417:419::-;18583:4;18621:2;18610:9;18606:18;18598:26;;18670:9;18664:4;18660:20;18656:1;18645:9;18641:17;18634:47;18698:131;18824:4;18698:131;:::i;:::-;18690:139;;18417:419;;;:::o;18842:250::-;18982:34;18978:1;18970:6;18966:14;18959:58;19051:33;19046:2;19038:6;19034:15;19027:58;18842:250;:::o;19098:366::-;19240:3;19261:67;19325:2;19320:3;19261:67;:::i;:::-;19254:74;;19337:93;19426:3;19337:93;:::i;:::-;19455:2;19450:3;19446:12;19439:19;;19098:366;;;:::o;19470:419::-;19636:4;19674:2;19663:9;19659:18;19651:26;;19723:9;19717:4;19713:20;19709:1;19698:9;19694:17;19687:47;19751:131;19877:4;19751:131;:::i;:::-;19743:139;;19470:419;;;:::o;19895:178::-;20035:30;20031:1;20023:6;20019:14;20012:54;19895:178;:::o;20079:366::-;20221:3;20242:67;20306:2;20301:3;20242:67;:::i;:::-;20235:74;;20318:93;20407:3;20318:93;:::i;:::-;20436:2;20431:3;20427:12;20420:19;;20079:366;;;:::o;20451:419::-;20617:4;20655:2;20644:9;20640:18;20632:26;;20704:9;20698:4;20694:20;20690:1;20679:9;20675:17;20668:47;20732:131;20858:4;20732:131;:::i;:::-;20724:139;;20451:419;;;:::o;20876:222::-;21016:34;21012:1;21004:6;21000:14;20993:58;21085:5;21080:2;21072:6;21068:15;21061:30;20876:222;:::o;21104:366::-;21246:3;21267:67;21331:2;21326:3;21267:67;:::i;:::-;21260:74;;21343:93;21432:3;21343:93;:::i;:::-;21461:2;21456:3;21452:12;21445:19;;21104:366;;;:::o;21476:419::-;21642:4;21680:2;21669:9;21665:18;21657:26;;21729:9;21723:4;21719:20;21715:1;21704:9;21700:17;21693:47;21757:131;21883:4;21757:131;:::i;:::-;21749:139;;21476:419;;;:::o;21901:191::-;21941:4;21961:20;21979:1;21961:20;:::i;:::-;21956:25;;21995:20;22013:1;21995:20;:::i;:::-;21990:25;;22034:1;22031;22028:8;22025:34;;;22039:18;;:::i;:::-;22025:34;22084:1;22081;22077:9;22069:17;;21901:191;;;;:::o;22098:229::-;22238:34;22234:1;22226:6;22222:14;22215:58;22307:12;22302:2;22294:6;22290:15;22283:37;22098:229;:::o;22333:366::-;22475:3;22496:67;22560:2;22555:3;22496:67;:::i;:::-;22489:74;;22572:93;22661:3;22572:93;:::i;:::-;22690:2;22685:3;22681:12;22674:19;;22333:366;;;:::o;22705:419::-;22871:4;22909:2;22898:9;22894:18;22886:26;;22958:9;22952:4;22948:20;22944:1;22933:9;22929:17;22922:47;22986:131;23112:4;22986:131;:::i;:::-;22978:139;;22705:419;;;:::o;23130:177::-;23270:29;23266:1;23258:6;23254:14;23247:53;23130:177;:::o;23313:366::-;23455:3;23476:67;23540:2;23535:3;23476:67;:::i;:::-;23469:74;;23552:93;23641:3;23552:93;:::i;:::-;23670:2;23665:3;23661:12;23654:19;;23313:366;;;:::o;23685:419::-;23851:4;23889:2;23878:9;23874:18;23866:26;;23938:9;23932:4;23928:20;23924:1;23913:9;23909:17;23902:47;23966:131;24092:4;23966:131;:::i;:::-;23958:139;;23685:419;;;:::o;24110:348::-;24150:7;24173:20;24191:1;24173:20;:::i;:::-;24168:25;;24207:20;24225:1;24207:20;:::i;:::-;24202:25;;24395:1;24327:66;24323:74;24320:1;24317:81;24312:1;24305:9;24298:17;24294:105;24291:131;;;24402:18;;:::i;:::-;24291:131;24450:1;24447;24443:9;24432:20;;24110:348;;;;:::o;24464:180::-;24512:77;24509:1;24502:88;24609:4;24606:1;24599:15;24633:4;24630:1;24623:15;24650:185;24690:1;24707:20;24725:1;24707:20;:::i;:::-;24702:25;;24741:20;24759:1;24741:20;:::i;:::-;24736:25;;24780:1;24770:35;;24785:18;;:::i;:::-;24770:35;24827:1;24824;24820:9;24815:14;;24650:185;;;;:::o;24841:220::-;24981:34;24977:1;24969:6;24965:14;24958:58;25050:3;25045:2;25037:6;25033:15;25026:28;24841:220;:::o;25067:366::-;25209:3;25230:67;25294:2;25289:3;25230:67;:::i;:::-;25223:74;;25306:93;25395:3;25306:93;:::i;:::-;25424:2;25419:3;25415:12;25408:19;;25067:366;;;:::o;25439:419::-;25605:4;25643:2;25632:9;25628:18;25620:26;;25692:9;25686:4;25682:20;25678:1;25667:9;25663:17;25656:47;25720:131;25846:4;25720:131;:::i;:::-;25712:139;;25439:419;;;:::o;25864:180::-;25912:77;25909:1;25902:88;26009:4;26006:1;25999:15;26033:4;26030:1;26023:15;26050:180;26098:77;26095:1;26088:88;26195:4;26192:1;26185:15;26219:4;26216:1;26209:15;26236:143;26293:5;26324:6;26318:13;26309:22;;26340:33;26367:5;26340:33;:::i;:::-;26236:143;;;;:::o;26385:351::-;26455:6;26504:2;26492:9;26483:7;26479:23;26475:32;26472:119;;;26510:79;;:::i;:::-;26472:119;26630:1;26655:64;26711:7;26702:6;26691:9;26687:22;26655:64;:::i;:::-;26645:74;;26601:128;26385:351;;;;:::o;26742:85::-;26787:7;26816:5;26805:16;;26742:85;;;:::o;26833:158::-;26891:9;26924:61;26942:42;26951:32;26977:5;26951:32;:::i;:::-;26942:42;:::i;:::-;26924:61;:::i;:::-;26911:74;;26833:158;;;:::o;26997:147::-;27092:45;27131:5;27092:45;:::i;:::-;27087:3;27080:58;26997:147;;:::o;27150:114::-;27217:6;27251:5;27245:12;27235:22;;27150:114;;;:::o;27270:184::-;27369:11;27403:6;27398:3;27391:19;27443:4;27438:3;27434:14;27419:29;;27270:184;;;;:::o;27460:132::-;27527:4;27550:3;27542:11;;27580:4;27575:3;27571:14;27563:22;;27460:132;;;:::o;27598:108::-;27675:24;27693:5;27675:24;:::i;:::-;27670:3;27663:37;27598:108;;:::o;27712:179::-;27781:10;27802:46;27844:3;27836:6;27802:46;:::i;:::-;27880:4;27875:3;27871:14;27857:28;;27712:179;;;;:::o;27897:113::-;27967:4;27999;27994:3;27990:14;27982:22;;27897:113;;;:::o;28046:732::-;28165:3;28194:54;28242:5;28194:54;:::i;:::-;28264:86;28343:6;28338:3;28264:86;:::i;:::-;28257:93;;28374:56;28424:5;28374:56;:::i;:::-;28453:7;28484:1;28469:284;28494:6;28491:1;28488:13;28469:284;;;28570:6;28564:13;28597:63;28656:3;28641:13;28597:63;:::i;:::-;28590:70;;28683:60;28736:6;28683:60;:::i;:::-;28673:70;;28529:224;28516:1;28513;28509:9;28504:14;;28469:284;;;28473:14;28769:3;28762:10;;28170:608;;;28046:732;;;;:::o;28784:831::-;29047:4;29085:3;29074:9;29070:19;29062:27;;29099:71;29167:1;29156:9;29152:17;29143:6;29099:71;:::i;:::-;29180:80;29256:2;29245:9;29241:18;29232:6;29180:80;:::i;:::-;29307:9;29301:4;29297:20;29292:2;29281:9;29277:18;29270:48;29335:108;29438:4;29429:6;29335:108;:::i;:::-;29327:116;;29453:72;29521:2;29510:9;29506:18;29497:6;29453:72;:::i;:::-;29535:73;29603:3;29592:9;29588:19;29579:6;29535:73;:::i;:::-;28784:831;;;;;;;;:::o;29621:807::-;29870:4;29908:3;29897:9;29893:19;29885:27;;29922:71;29990:1;29979:9;29975:17;29966:6;29922:71;:::i;:::-;30003:72;30071:2;30060:9;30056:18;30047:6;30003:72;:::i;:::-;30085:80;30161:2;30150:9;30146:18;30137:6;30085:80;:::i;:::-;30175;30251:2;30240:9;30236:18;30227:6;30175:80;:::i;:::-;30265:73;30333:3;30322:9;30318:19;30309:6;30265:73;:::i;:::-;30348;30416:3;30405:9;30401:19;30392:6;30348:73;:::i;:::-;29621:807;;;;;;;;;:::o;30434:143::-;30491:5;30522:6;30516:13;30507:22;;30538:33;30565:5;30538:33;:::i;:::-;30434:143;;;;:::o;30583:663::-;30671:6;30679;30687;30736:2;30724:9;30715:7;30711:23;30707:32;30704:119;;;30742:79;;:::i;:::-;30704:119;30862:1;30887:64;30943:7;30934:6;30923:9;30919:22;30887:64;:::i;:::-;30877:74;;30833:128;31000:2;31026:64;31082:7;31073:6;31062:9;31058:22;31026:64;:::i;:::-;31016:74;;30971:129;31139:2;31165:64;31221:7;31212:6;31201:9;31197:22;31165:64;:::i;:::-;31155:74;;31110:129;30583:663;;;;;:::o

Swarm Source

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