ETH Price: $3,645.94 (+10.22%)

Token

Coquette Hampter (COQ)
 

Overview

Max Total Supply

69,420,000,000 COQ

Holders

88

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
1 COQ

Value
$0.00
0x1f7e366cb27c7a0621caa394606501d72025646f
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:
Coquette

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-27
*/

// SPDX-License-Identifier: MIT

/*
https://x.com/coquette_erc20
https://t.me/coquette_erc20
https://coquette.wtf
*/

pragma solidity ^0.8.0;

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract Ownable is Context {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);

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

    constructor() {
        address msgSender = _msgSender();
        _transferOwnership(msgSender);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

contract Coquette is Context, IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private taxlessWallets;
    mapping(address => bool) private marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax = 25;
    uint256 private _initialSellTax = 0;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;

    uint256 private _reduceBuyTaxAt = 50;

    uint256 private _buyCount = 0;
    uint256 private _sellCount = 0;
    uint256 private _contractSellCount = 0;
    uint256 private _taxCollectedCount = 0;
    uint256 private _taxlessTransferCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private _decimals;
    uint256 private _tTotal;
    string private _name;
    string private _symbol;
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;
    uint256 private _taxSwapThreshold;
    uint256 private _maxTaxSwap;
    bool private _taxesActive = true;
    bool private _limitsActive = true;
    bool private _contractSellsEnabled = true;
    bool private _collectTaxes = true;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public tradingOpen;
    bool private initUniswap;

    address public WETHAddress;

    constructor() {
        _name = "Coquette Hampter";
        _symbol = "COQ";
        _decimals = 0;
        _tTotal = 69420000000 * 10 ** _decimals;
        _maxTxAmount = 69420000000 * 10 ** _decimals;
        _maxWalletSize = 1388400000 * 10 ** _decimals; // 2%
        _taxSwapThreshold = 1 * 10 ** _decimals;
        _maxTaxSwap = 1388400000 * 10 ** _decimals; // 2%

        _taxWallet = payable(0x69a6Ceb3a69797cBA41Bc6cD5C1bf93872ee2B69);
        _balances[_msgSender()] = _tTotal;
        taxlessWallets[owner()] = true;
        taxlessWallets[address(this)] = true;
        taxlessWallets[_taxWallet] = true;

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

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

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

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

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

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

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

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

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

    mapping(address => bool) private _isBlacklisted;

    function isBlacklisted(address account) external view returns (bool) {
        return _isBlacklisted[account];
    }

    function renounceOwnership() public onlyOwner override {
        _limitsActive = false;

        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance > 0)
        {
            _taxesActive = true;
        }

        sendETHToFee();
        _transferOwnership(address(0));
    }

    function _spendAllowance(address from, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(from, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(from, spender, currentAllowance - amount);
            }
        }
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function toggleTaxes(bool tggl) public onlyOwner {
        _taxesActive = tggl;
    }

    function toggleLimits(bool tggl) public onlyOwner {
        _limitsActive = tggl;
    }

    function toggleCollectTaxes(bool tggl) public onlyOwner {
        _collectTaxes = tggl;
    }

    function tokenBalance() public view returns (uint256) {
        return balanceOf(address(this));
    }

    function a_config() public view returns (bool tradingOpen_, bool initUniswap_, bool taxesActive_, bool limitsActive_, bool contractSellsEnabled_, bool collectTaxes_, address pairAddress_, uint256 reduceBuyTaxAt_) {
        return (tradingOpen, initUniswap, _taxesActive, _limitsActive, _contractSellsEnabled, _collectTaxes, address(uniswapV2Pair), _reduceBuyTaxAt);
    }

    function a_status() public view returns(uint256 buyCount_, uint256 sellCount_, uint256 contractSellCount_, uint256 taxCollectedCount_, uint256 taxlessTransferCount_, uint256 tokenBalance_)
    {
        return (_buyCount, _sellCount, _contractSellCount, _taxCollectedCount, _taxlessTransferCount, tokenBalance());
    }

    function calcTaxAmount(address from, address to, uint256 amount) public view returns (uint256) {
        uint256 taxAmount;
        if (!marketPair[from] && !marketPair[to] && from != address(this)) {
            taxAmount = 0;
        }
        else if (marketPair[to] && from != address(this)) {
            taxAmount = (amount * _initialSellTax) / 100;
        }
        else {
            taxAmount = (amount * _initialBuyTax) / 100;
        }

        return taxAmount;
    }

    function checkIfBuy(address from, address to) private view returns (bool) {
        if(from == address(uniswapV2Pair))
        {
            return true;
        }

        return false;
    }

    function checkIfSell(address from, address to) private view returns (bool) {

        if(from == address(uniswapV2Pair) && to == address(uniswapV2Router))
        {
            return false;
        }

        if(to == address(uniswapV2Pair) || to == address(uniswapV2Router))
        {
            return true;
        }

        return false;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(!_isBlacklisted[from], "blacklist");

        if (!_taxesActive && !_limitsActive) {
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            _taxlessTransferCount++;
            return;
        }

        if (from == owner() || to == owner()) {
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            _taxlessTransferCount++;
            return;
        }
        if(from == address(this) || to == address(this))
        {
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            _taxlessTransferCount++;
            return;
        }

        require(tradingOpen, "Trading not open");

        if(_buyCount > _reduceBuyTaxAt && tokenBalance() == 0)
        {
            _taxesActive = false;
            _limitsActive = false;
            _collectTaxes = false;
            _contractSellsEnabled = false;

            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            _taxlessTransferCount++;
            return;
        }

        if (!marketPair[to] && !taxlessWallets[to] && to != address(uniswapV2Router) && to != address(uniswapV2Pair) && to != address(this) && _limitsActive) {
            require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
        }

        bool _isBuy = checkIfBuy(from, to);
        bool _isSell = checkIfSell(from, to);
        if(_isBuy) {
            _buyCount++;
        }

        if(!_isSell && !_isBuy)
        {
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            _taxlessTransferCount++;
            return;
        }

        if(_isSell)
        {
            _sellCount++;
        }

        if (
            _isSell && !_isBuy &&
        _buyCount > _reduceBuyTaxAt &&
        _contractSellsEnabled
        ) {
            if(calcContractSellAmount(amount) > 0)
            {
                uint256 _amount = amount;
                contractSell(amount);
                if(!_limitsActive && tokenBalance() == 0) {
                    _taxesActive = false;
                }

                _balances[from] = _balances[from] - _amount;
                _balances[to] = _balances[to] + _amount;
                emit Transfer(from, to, _amount);
                return;
            }
        }

        if (collectTaxes(from, to, amount)) {
            uint256 taxAmount = calcTaxAmount(from, to, amount);
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            _taxCollectedCount++;
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + (amount-taxAmount);
            emit Transfer(from, address(this), taxAmount);
            emit Transfer(from, to, amount);
            return;
        }

        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount;
        emit Transfer(from, to, amount);
        _taxlessTransferCount++;
    }

    function collectTaxes(address from, address to, uint256 amount) private view returns (bool) {
        if(checkIfSell(from, to))
        {
            return false;
        }

        uint256 taxAmount = calcTaxAmount(from, to, amount);
        if (_buyCount < _reduceBuyTaxAt && taxAmount > 0 && _collectTaxes) {
            return true;
        }

        return false;
    }

    function contractSell(uint256 userSellAmount) private {

        uint256 contractSellAmount = calcContractSellAmount(userSellAmount);
        if(contractSellAmount == 0)
        {
            return;
        }

        swapTokensForEth(contractSellAmount);
        sendETHToFee();
        _contractSellCount++;
        lastSellBlock = block.number;
    }

    function calcContractSellAmount(uint256 userSellAmount) private view returns (uint256) {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 contractSellAmount = min(userSellAmount, min(contractTokenBalance, _maxTaxSwap));

        if(contractSellAmount == 0)
        {
            return 0;
        }

        uint256 lpETH = IERC20(WETHAddress).balanceOf(address(uniswapV2Pair));
        uint256 lpToken = _balances[address(uniswapV2Pair)];
        if(lpToken == 0)
        {
            lpToken = 1;
        }
        uint256 price = (lpETH / lpToken);
        if(price == 0) {
            price = 1;
        }
        uint256 maxSwapTokens = (lpETH * 2 / 100) / price;
        uint256 minMaxSwapTokens = _tTotal / 200;
        if(maxSwapTokens < minMaxSwapTokens)
        {
            maxSwapTokens = minMaxSwapTokens;
        }

        contractSellAmount = min(maxSwapTokens, contractSellAmount);

        if(contractSellAmount == 0)
        {
            return 0;
        }

        return contractSellAmount;
    }

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

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
        }
    }
    function removeFromBlackListWallets(address[] calldata addresses) public onlyOwner() {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = false;
        }
    }
    function removeFromBlackList(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }

    event swapFailed(uint256 amount);

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = addressWETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {

        } catch {
            emit swapFailed(tokenAmount);
        }
    }

    function addressWETH() private view returns(address) {
        return uniswapV2Router.WETH();
    }

    function takeAnyStuckETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function takeAnyERC20Tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function sendETHToFee() private {
        if(address(this).balance == 0)
        {
            return;
        }
        payable(_taxWallet).call{value: address(this).balance, gas: 85000}("");
    }

    function initializeUniswap(address _uniswapV2Pair) external onlyOwner() {
        require(!initUniswap, "already init");

        address _uniswapV2Router;
        if(block.chainid == 1)
        {
            _uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        }
        else if(block.chainid == 137)
        {
            _uniswapV2Router = 0xedf6066a2b290C185783862C7F4776A2C8077AD1;
        }
        else
        {
            revert("Unsupported network");
        }

        uniswapV2Pair = _uniswapV2Pair;
        uniswapV2Router = IUniswapV2Router02(_uniswapV2Router);
        marketPair[address(uniswapV2Pair)] = true;
        taxlessWallets[address(uniswapV2Pair)] = true;
        initUniswap = true;

        WETHAddress = uniswapV2Router.WETH();

        return;
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");

        tradingOpen = true;
        firstBlock = block.number;
        return;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapFailed","type":"event"},{"inputs":[],"name":"WETHAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"a_config","outputs":[{"internalType":"bool","name":"tradingOpen_","type":"bool"},{"internalType":"bool","name":"initUniswap_","type":"bool"},{"internalType":"bool","name":"taxesActive_","type":"bool"},{"internalType":"bool","name":"limitsActive_","type":"bool"},{"internalType":"bool","name":"contractSellsEnabled_","type":"bool"},{"internalType":"bool","name":"collectTaxes_","type":"bool"},{"internalType":"address","name":"pairAddress_","type":"address"},{"internalType":"uint256","name":"reduceBuyTaxAt_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"a_status","outputs":[{"internalType":"uint256","name":"buyCount_","type":"uint256"},{"internalType":"uint256","name":"sellCount_","type":"uint256"},{"internalType":"uint256","name":"contractSellCount_","type":"uint256"},{"internalType":"uint256","name":"taxCollectedCount_","type":"uint256"},{"internalType":"uint256","name":"taxlessTransferCount_","type":"uint256"},{"internalType":"uint256","name":"tokenBalance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calcTaxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"initializeUniswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromBlackListWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"takeAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"takeAnyStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"tggl","type":"bool"}],"name":"toggleCollectTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"tggl","type":"bool"}],"name":"toggleLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"tggl","type":"bool"}],"name":"toggleTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260196007555f6008555f6009555f600a556032600b555f600c555f600d555f600e555f600f555f6010555f6011556001601a5f6101000a81548160ff0219169083151502179055506001601a60016101000a81548160ff0219169083151502179055506001601a60026101000a81548160ff0219169083151502179055506001601a60036101000a81548160ff0219169083151502179055503480156100a8575f80fd5b505f6100b86104a860201b60201c565b90506100c9816104af60201b60201c565b506040518060400160405280601081526020017f436f7175657474652048616d70746572000000000000000000000000000000008152506014908161010e91906107d1565b506040518060400160405280600381526020017f434f5100000000000000000000000000000000000000000000000000000000008152506015908161015391906107d1565b505f60125f6101000a81548160ff021916908360ff16021790555060125f9054906101000a900460ff16600a6101899190610a08565b641029c123006101999190610a52565b60138190555060125f9054906101000a900460ff16600a6101ba9190610a08565b641029c123006101ca9190610a52565b60168190555060125f9054906101000a900460ff16600a6101eb9190610a08565b6352c14d806101fa9190610a52565b60178190555060125f9054906101000a900460ff16600a61021b9190610a08565b60016102279190610a52565b60188190555060125f9054906101000a900460ff16600a6102489190610a08565b6352c14d806102579190610a52565b6019819055507369a6ceb3a69797cba41bc6cd5c1bf93872ee2b6960055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135460015f6102c56104a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61031561057060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061043d6104a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60135460405161049b9190610aa2565b60405180910390a3610abb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061061257607f821691505b602082108103610625576106246105ce565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261064c565b610691868361064c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106d56106d06106cb846106a9565b6106b2565b6106a9565b9050919050565b5f819050919050565b6106ee836106bb565b6107026106fa826106dc565b848454610658565b825550505050565b5f90565b61071661070a565b6107218184846106e5565b505050565b5b81811015610744576107395f8261070e565b600181019050610727565b5050565b601f8211156107895761075a8161062b565b6107638461063d565b81016020851015610772578190505b61078661077e8561063d565b830182610726565b50505b505050565b5f82821c905092915050565b5f6107a95f198460080261078e565b1980831691505092915050565b5f6107c1838361079a565b9150826002028217905092915050565b6107da82610597565b67ffffffffffffffff8111156107f3576107f26105a1565b5b6107fd82546105fb565b610808828285610748565b5f60209050601f831160018114610839575f8415610827578287015190505b61083185826107b6565b865550610898565b601f1984166108478661062b565b5f5b8281101561086e57848901518255600182019150602085019450602081019050610849565b8683101561088b5784890151610887601f89168261079a565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610922578086048111156108fe576108fd6108a0565b5b600185161561090d5780820291505b808102905061091b856108cd565b94506108e2565b94509492505050565b5f8261093a57600190506109f5565b81610947575f90506109f5565b816001811461095d576002811461096757610996565b60019150506109f5565b60ff841115610979576109786108a0565b5b8360020a9150848211156109905761098f6108a0565b5b506109f5565b5060208310610133831016604e8410600b84101617156109cb5782820a9050838111156109c6576109c56108a0565b5b6109f5565b6109d884848460016108d9565b925090508184048111156109ef576109ee6108a0565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610a12826106a9565b9150610a1d836109fc565b9250610a4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461092b565b905092915050565b5f610a5c826106a9565b9150610a67836106a9565b9250828202610a75816106a9565b91508282048414831517610a8c57610a8b6108a0565b5b5092915050565b610a9c816106a9565b82525050565b5f602082019050610ab55f830184610a93565b92915050565b6140ee80610ac85f395ff3fe6080604052600436106101d0575f3560e01c80638a8c523c116100f6578063e9cc758411610094578063f2fde38b11610063578063f2fde38b1461064d578063fe575a8714610675578063ff897570146106b1578063ffb54a99146106d9576101d7565b8063e9cc7584146105a4578063eb8d830b146105cc578063eff1c9ea146105fb578063f2ea3a9414610637576101d7565b80639e1a4d19116100d05780639e1a4d19146104da578063a9059cbb14610504578063b256f7b714610540578063dd62ed3e14610568576101d7565b80638a8c523c146104705780638da5cb5b1461048657806395d89b41146104b0576101d7565b806323b872dd1161016e5780634a49ac4c1161013d5780634a49ac4c146103ce57806370a08231146103f6578063715018a6146104325780637cd84d2f14610448576101d7565b806323b872dd146103165780632b3070e914610352578063313ce5671461037a57806349bd5a5e146103a4576101d7565b8063095ea7b3116101aa578063095ea7b31461025e5780630af88b241461029a57806318160ddd146102c45780631f45cbdd146102ee576101d7565b806301a26325146101db578063035d6eb71461020357806306fdde0314610234576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061335b565b610703565b005b34801561020e575f80fd5b50610217610727565b60405161022b9897969594939291906133ec565b60405180910390f35b34801561023f575f80fd5b506102486107cd565b60405161025591906134d8565b60405180910390f35b348015610269575f80fd5b50610284600480360381019061027f919061354c565b61085d565b604051610291919061358a565b60405180910390f35b3480156102a5575f80fd5b506102ae61087a565b6040516102bb91906135a3565b60405180910390f35b3480156102cf575f80fd5b506102d861089f565b6040516102e591906135bc565b60405180910390f35b3480156102f9575f80fd5b50610314600480360381019061030f9190613636565b6108a8565b005b348015610321575f80fd5b5061033c60048036038101906103379190613681565b610948565b604051610349919061358a565b60405180910390f35b34801561035d575f80fd5b506103786004803603810190610373919061335b565b610976565b005b348015610385575f80fd5b5061038e61099b565b60405161039b91906136ec565b60405180910390f35b3480156103af575f80fd5b506103b86109b0565b6040516103c591906135a3565b60405180910390f35b3480156103d9575f80fd5b506103f460048036038101906103ef9190613705565b6109d5565b005b348015610401575f80fd5b5061041c60048036038101906104179190613705565b610a34565b60405161042991906135bc565b60405180910390f35b34801561043d575f80fd5b50610446610a7a565b005b348015610453575f80fd5b5061046e60048036038101906104699190613705565b610adf565b005b34801561047b575f80fd5b50610484610e16565b005b348015610491575f80fd5b5061049a610e92565b6040516104a791906135a3565b60405180910390f35b3480156104bb575f80fd5b506104c4610eb9565b6040516104d191906134d8565b60405180910390f35b3480156104e5575f80fd5b506104ee610f49565b6040516104fb91906135bc565b60405180910390f35b34801561050f575f80fd5b5061052a6004803603810190610525919061354c565b610f58565b604051610537919061358a565b60405180910390f35b34801561054b575f80fd5b506105666004803603810190610561919061335b565b610f75565b005b348015610573575f80fd5b5061058e60048036038101906105899190613730565b610f9a565b60405161059b91906135bc565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c5919061354c565b61101c565b005b3480156105d7575f80fd5b506105e06110c5565b6040516105f29695949392919061376e565b60405180910390f35b348015610606575f80fd5b50610621600480360381019061061c9190613681565b6110f6565b60405161062e91906135bc565b60405180910390f35b348015610642575f80fd5b5061064b6112ac565b005b348015610658575f80fd5b50610673600480360381019061066e9190613705565b61131b565b005b348015610680575f80fd5b5061069b60048036038101906106969190613705565b61139f565b6040516106a8919061358a565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190613636565b6113f1565b005b3480156106e4575f80fd5b506106ed611492565b6040516106fa919061358a565b60405180910390f35b61070b6114a5565b80601a5f6101000a81548160ff02191690831515021790555050565b5f805f805f805f80601b60149054906101000a900460ff16601b60159054906101000a900460ff16601a5f9054906101000a900460ff16601a60019054906101000a900460ff16601a60029054906101000a900460ff16601a60039054906101000a900460ff16601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54975097509750975097509750975097509091929394959697565b6060601480546107dc906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610808906137fa565b80156108535780601f1061082a57610100808354040283529160200191610853565b820191905f5260205f20905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b5f61087061086961152c565b8484611533565b6001905092915050565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601354905090565b6108b06114a5565b5f5b82829050811015610943575f601d5f8585858181106108d4576108d361382a565b5b90506020020160208101906108e99190613705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506108b2565b505050565b5f8061095261152c565b905061095f8582856116f6565b61096a858585611781565b60019150509392505050565b61097e6114a5565b80601a60036101000a81548160ff02191690831515021790555050565b5f60125f9054906101000a900460ff16905090565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109dd6114a5565b5f601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a826114a5565b5f601a60016101000a81548160ff0219169083151502179055505f610aa630610a34565b90505f811115610acb576001601a5f6101000a81548160ff0219169083151502179055505b610ad3612aa0565b610adc5f612b38565b50565b610ae76114a5565b601b60159054906101000a900460ff1615610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e906138a1565b60405180910390fd5b5f60014603610b5c57737a250d5630b4cf539739df2c5dacb4c659f2488d9050610bbc565b60894603610b805773edf6066a2b290c185783862c7f4776a2c8077ad19050610bbb565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290613909565b60405180910390fd5b5b81601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd3919061393b565b601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610e1e6114a5565b601b60149054906101000a900460ff1615610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e65906139b0565b60405180910390fd5b6001601b60146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060158054610ec8906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef4906137fa565b8015610f3f5780601f10610f1657610100808354040283529160200191610f3f565b820191905f5260205f20905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b5f610f5330610a34565b905090565b5f610f6b610f6461152c565b8484611781565b6001905092915050565b610f7d6114a5565b80601a60016101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110246114a5565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611080929190613a29565b6020604051808303815f875af115801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190613a64565b505050565b5f805f805f80600c54600d54600e54600f546010546110e2610f49565b955095509550955095509550909192939495565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611196575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156111ce57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156111db575f90506112a1565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561125d57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611283576064600854846112729190613abc565b61127c9190613b2a565b90506112a0565b6064600754846112939190613abc565b61129d9190613b2a565b90505b5b809150509392505050565b6112b46114a5565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611318573d5f803e3d5ffd5b50565b6113236114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611393575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161138a91906135a3565b60405180910390fd5b61139c81612b38565b50565b5f601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6113f96114a5565b5f5b8282905081101561148d576001601d5f85858581811061141e5761141d61382a565b5b90506020020160208101906114339190613705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506113fb565b505050565b601b60149054906101000a900460ff1681565b6114ad61152c565b73ffffffffffffffffffffffffffffffffffffffff166114cb610e92565b73ffffffffffffffffffffffffffffffffffffffff161461152a576114ee61152c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161152191906135a3565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159890613bca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690613c58565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e991906135bc565b60405180910390a3505050565b5f6117018484610f9a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461177b578181101561176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176490613cc0565b60405180910390fd5b61177a8484848403611533565b5b50505050565b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290613d28565b60405180910390fd5b601a5f9054906101000a900460ff161580156118345750601a60019054906101000a900460ff16155b156119ce578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118829190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461190c9190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119aa91906135bc565b60405180910390a360105f8154809291906119c490613dac565b9190505550612a9b565b6119d6610e92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611a415750611a12610e92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611bdb578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a8f9190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b199190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb791906135bc565b60405180910390a360105f815480929190611bd190613dac565b9190505550612a9b565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c4057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dda578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8e9190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d189190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db691906135bc565b60405180910390a360105f815480929190611dd090613dac565b9190505550612a9b565b601b60149054906101000a900460ff16611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613e3d565b60405180910390fd5b600b54600c54118015611e4257505f611e40610f49565b145b15612043575f601a5f6101000a81548160ff0219169083151502179055505f601a60016101000a81548160ff0219169083151502179055505f601a60036101000a81548160ff0219169083151502179055505f601a60026101000a81548160ff0219169083151502179055508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ef79190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f819190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161201f91906135bc565b60405180910390a360105f81548092919061203990613dac565b9190505550612a9b565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e1575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561213b5750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121945750601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121cc57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121e45750601a60019054906101000a900460ff165b1561224257601754816121f684610a34565b6122009190613d79565b1115612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223890613ea5565b60405180910390fd5b5b5f61224d8484612bf9565b90505f61225a8585612c61565b9050811561227a57600c5f81548092919061227490613dac565b91905055505b80158015612286575081155b15612422578260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d49190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235e9190613d79565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123fc91906135bc565b60405180910390a360105f81548092919061241690613dac565b91905055505050612a9b565b801561244057600d5f81548092919061243a90613dac565b91905055505b80801561244b575081155b801561245a5750600b54600c54115b80156124725750601a60029054906101000a900460ff165b15612658575f61248184612dd8565b1115612657575f83905061249484612fcb565b601a60019054906101000a900460ff161580156124b757505f6124b5610f49565b145b156124d6575f601a5f6101000a81548160ff0219169083151502179055505b8060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251f9190613d46565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a99190613d79565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264791906135bc565b60405180910390a3505050612a9b565b5b612663858585613018565b15612908575f6126748686866110f6565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126bf9190613d79565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600f5f81548092919061271290613dac565b91905055508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127609190613d46565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080846127ad9190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f59190613d79565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161289391906135bc565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516128f891906135bc565b60405180910390a3505050612a9b565b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129519190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129db9190613d79565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a7991906135bc565b60405180910390a360105f815480929190612a9390613dac565b919050555050505b505050565b5f470315612b365760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164762014c0890604051612af290613ef0565b5f60405180830381858888f193505050503d805f8114612b2d576040519150601f19603f3d011682016040523d82523d5f602084013e612b32565b606091505b5050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c575760019050612c5b565b5f90505b92915050565b5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612d0b5750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612d18575f9050612dd2565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612dc05750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612dce5760019050612dd2565b5f90505b92915050565b5f80612de330610a34565b90505f612dfb84612df684601954613083565b613083565b90505f8103612e0e575f92505050612fc6565b5f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612e8a91906135a3565b602060405180830381865afa158015612ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec99190613f18565b90505f60015f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103612f3957600190505b5f8183612f469190613b2a565b90505f8103612f5457600190505b5f816064600286612f659190613abc565b612f6f9190613b2a565b612f799190613b2a565b90505f60c8601354612f8b9190613b2a565b905080821015612f99578091505b612fa38287613083565b95505f8603612fbb575f975050505050505050612fc6565b859750505050505050505b919050565b5f612fd582612dd8565b90505f8103612fe45750613015565b612fed8161309b565b612ff5612aa0565b600e5f81548092919061300790613dac565b919050555043601181905550505b50565b5f6130238484612c61565b15613030575f905061307c565b5f61303c8585856110f6565b9050600b54600c5410801561305057505f81115b80156130685750601a60039054906101000a900460ff165b1561307757600191505061307c565b5f9150505b9392505050565b5f8183116130915782613093565b815b905092915050565b5f600267ffffffffffffffff8111156130b7576130b6613f43565b5b6040519080825280602002602001820160405280156130e55781602001602082028036833780820191505090505b50905030815f815181106130fc576130fb61382a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061313e613289565b816001815181106131525761315161382a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131b930601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611533565b601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161321c959493929190614060565b5f604051808303815f87803b158015613233575f80fd5b505af1925050508015613244575060015b613284577f1a56b4917cc3e3f569cd8bd2e4a247732b1cccea3340b2f955f13525a400fc158260405161327791906135bc565b60405180910390a1613285565b5b5050565b5f601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613319919061393b565b905090565b5f80fd5b5f80fd5b5f8115159050919050565b61333a81613326565b8114613344575f80fd5b50565b5f8135905061335581613331565b92915050565b5f602082840312156133705761336f61331e565b5b5f61337d84828501613347565b91505092915050565b61338f81613326565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133be82613395565b9050919050565b6133ce816133b4565b82525050565b5f819050919050565b6133e6816133d4565b82525050565b5f610100820190506134005f83018b613386565b61340d602083018a613386565b61341a6040830189613386565b6134276060830188613386565b6134346080830187613386565b61344160a0830186613386565b61344e60c08301856133c5565b61345b60e08301846133dd565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6134aa82613468565b6134b48185613472565b93506134c4818560208601613482565b6134cd81613490565b840191505092915050565b5f6020820190508181035f8301526134f081846134a0565b905092915050565b613501816133b4565b811461350b575f80fd5b50565b5f8135905061351c816134f8565b92915050565b61352b816133d4565b8114613535575f80fd5b50565b5f8135905061354681613522565b92915050565b5f80604083850312156135625761356161331e565b5b5f61356f8582860161350e565b925050602061358085828601613538565b9150509250929050565b5f60208201905061359d5f830184613386565b92915050565b5f6020820190506135b65f8301846133c5565b92915050565b5f6020820190506135cf5f8301846133dd565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126135f6576135f56135d5565b5b8235905067ffffffffffffffff811115613613576136126135d9565b5b60208301915083602082028301111561362f5761362e6135dd565b5b9250929050565b5f806020838503121561364c5761364b61331e565b5b5f83013567ffffffffffffffff81111561366957613668613322565b5b613675858286016135e1565b92509250509250929050565b5f805f606084860312156136985761369761331e565b5b5f6136a58682870161350e565b93505060206136b68682870161350e565b92505060406136c786828701613538565b9150509250925092565b5f60ff82169050919050565b6136e6816136d1565b82525050565b5f6020820190506136ff5f8301846136dd565b92915050565b5f6020828403121561371a5761371961331e565b5b5f6137278482850161350e565b91505092915050565b5f80604083850312156137465761374561331e565b5b5f6137538582860161350e565b92505060206137648582860161350e565b9150509250929050565b5f60c0820190506137815f8301896133dd565b61378e60208301886133dd565b61379b60408301876133dd565b6137a860608301866133dd565b6137b560808301856133dd565b6137c260a08301846133dd565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061381157607f821691505b602082108103613824576138236137cd565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f616c726561647920696e697400000000000000000000000000000000000000005f82015250565b5f61388b600c83613472565b915061389682613857565b602082019050919050565b5f6020820190508181035f8301526138b88161387f565b9050919050565b7f556e737570706f72746564206e6574776f726b000000000000000000000000005f82015250565b5f6138f3601383613472565b91506138fe826138bf565b602082019050919050565b5f6020820190508181035f830152613920816138e7565b9050919050565b5f81519050613935816134f8565b92915050565b5f602082840312156139505761394f61331e565b5b5f61395d84828501613927565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61399a601783613472565b91506139a582613966565b602082019050919050565b5f6020820190508181035f8301526139c78161398e565b9050919050565b5f819050919050565b5f6139f16139ec6139e784613395565b6139ce565b613395565b9050919050565b5f613a02826139d7565b9050919050565b5f613a13826139f8565b9050919050565b613a2381613a09565b82525050565b5f604082019050613a3c5f830185613a1a565b613a4960208301846133dd565b9392505050565b5f81519050613a5e81613331565b92915050565b5f60208284031215613a7957613a7861331e565b5b5f613a8684828501613a50565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ac6826133d4565b9150613ad1836133d4565b9250828202613adf816133d4565b91508282048414831517613af657613af5613a8f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b34826133d4565b9150613b3f836133d4565b925082613b4f57613b4e613afd565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bb4602483613472565b9150613bbf82613b5a565b604082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c42602283613472565b9150613c4d82613be8565b604082019050919050565b5f6020820190508181035f830152613c6f81613c36565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613caa601d83613472565b9150613cb582613c76565b602082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f626c61636b6c69737400000000000000000000000000000000000000000000005f82015250565b5f613d12600983613472565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b5f613d50826133d4565b9150613d5b836133d4565b9250828203905081811115613d7357613d72613a8f565b5b92915050565b5f613d83826133d4565b9150613d8e836133d4565b9250828201905080821115613da657613da5613a8f565b5b92915050565b5f613db6826133d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613de857613de7613a8f565b5b600182019050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613e27601083613472565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613e8f601a83613472565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f81905092915050565b50565b5f613edb5f83613ec3565b9150613ee682613ecd565b5f82019050919050565b5f613efa82613ed0565b9150819050919050565b5f81519050613f1281613522565b92915050565b5f60208284031215613f2d57613f2c61331e565b5b5f613f3a84828501613f04565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f613f93613f8e613f8984613f70565b6139ce565b6133d4565b9050919050565b613fa381613f79565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fdb816133b4565b82525050565b5f613fec8383613fd2565b60208301905092915050565b5f602082019050919050565b5f61400e82613fa9565b6140188185613fb3565b935061402383613fc3565b805f5b8381101561405357815161403a8882613fe1565b975061404583613ff8565b925050600181019050614026565b5085935050505092915050565b5f60a0820190506140735f8301886133dd565b6140806020830187613f9a565b81810360408301526140928186614004565b90506140a160608301856133c5565b6140ae60808301846133dd565b969550505050505056fea264697066735822122058b8ef0720a0f61cadb0398eeada4f67eb4a909e58e5f5794ac40e1865d0d5c164736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c80638a8c523c116100f6578063e9cc758411610094578063f2fde38b11610063578063f2fde38b1461064d578063fe575a8714610675578063ff897570146106b1578063ffb54a99146106d9576101d7565b8063e9cc7584146105a4578063eb8d830b146105cc578063eff1c9ea146105fb578063f2ea3a9414610637576101d7565b80639e1a4d19116100d05780639e1a4d19146104da578063a9059cbb14610504578063b256f7b714610540578063dd62ed3e14610568576101d7565b80638a8c523c146104705780638da5cb5b1461048657806395d89b41146104b0576101d7565b806323b872dd1161016e5780634a49ac4c1161013d5780634a49ac4c146103ce57806370a08231146103f6578063715018a6146104325780637cd84d2f14610448576101d7565b806323b872dd146103165780632b3070e914610352578063313ce5671461037a57806349bd5a5e146103a4576101d7565b8063095ea7b3116101aa578063095ea7b31461025e5780630af88b241461029a57806318160ddd146102c45780631f45cbdd146102ee576101d7565b806301a26325146101db578063035d6eb71461020357806306fdde0314610234576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061335b565b610703565b005b34801561020e575f80fd5b50610217610727565b60405161022b9897969594939291906133ec565b60405180910390f35b34801561023f575f80fd5b506102486107cd565b60405161025591906134d8565b60405180910390f35b348015610269575f80fd5b50610284600480360381019061027f919061354c565b61085d565b604051610291919061358a565b60405180910390f35b3480156102a5575f80fd5b506102ae61087a565b6040516102bb91906135a3565b60405180910390f35b3480156102cf575f80fd5b506102d861089f565b6040516102e591906135bc565b60405180910390f35b3480156102f9575f80fd5b50610314600480360381019061030f9190613636565b6108a8565b005b348015610321575f80fd5b5061033c60048036038101906103379190613681565b610948565b604051610349919061358a565b60405180910390f35b34801561035d575f80fd5b506103786004803603810190610373919061335b565b610976565b005b348015610385575f80fd5b5061038e61099b565b60405161039b91906136ec565b60405180910390f35b3480156103af575f80fd5b506103b86109b0565b6040516103c591906135a3565b60405180910390f35b3480156103d9575f80fd5b506103f460048036038101906103ef9190613705565b6109d5565b005b348015610401575f80fd5b5061041c60048036038101906104179190613705565b610a34565b60405161042991906135bc565b60405180910390f35b34801561043d575f80fd5b50610446610a7a565b005b348015610453575f80fd5b5061046e60048036038101906104699190613705565b610adf565b005b34801561047b575f80fd5b50610484610e16565b005b348015610491575f80fd5b5061049a610e92565b6040516104a791906135a3565b60405180910390f35b3480156104bb575f80fd5b506104c4610eb9565b6040516104d191906134d8565b60405180910390f35b3480156104e5575f80fd5b506104ee610f49565b6040516104fb91906135bc565b60405180910390f35b34801561050f575f80fd5b5061052a6004803603810190610525919061354c565b610f58565b604051610537919061358a565b60405180910390f35b34801561054b575f80fd5b506105666004803603810190610561919061335b565b610f75565b005b348015610573575f80fd5b5061058e60048036038101906105899190613730565b610f9a565b60405161059b91906135bc565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c5919061354c565b61101c565b005b3480156105d7575f80fd5b506105e06110c5565b6040516105f29695949392919061376e565b60405180910390f35b348015610606575f80fd5b50610621600480360381019061061c9190613681565b6110f6565b60405161062e91906135bc565b60405180910390f35b348015610642575f80fd5b5061064b6112ac565b005b348015610658575f80fd5b50610673600480360381019061066e9190613705565b61131b565b005b348015610680575f80fd5b5061069b60048036038101906106969190613705565b61139f565b6040516106a8919061358a565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190613636565b6113f1565b005b3480156106e4575f80fd5b506106ed611492565b6040516106fa919061358a565b60405180910390f35b61070b6114a5565b80601a5f6101000a81548160ff02191690831515021790555050565b5f805f805f805f80601b60149054906101000a900460ff16601b60159054906101000a900460ff16601a5f9054906101000a900460ff16601a60019054906101000a900460ff16601a60029054906101000a900460ff16601a60039054906101000a900460ff16601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54975097509750975097509750975097509091929394959697565b6060601480546107dc906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610808906137fa565b80156108535780601f1061082a57610100808354040283529160200191610853565b820191905f5260205f20905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b5f61087061086961152c565b8484611533565b6001905092915050565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601354905090565b6108b06114a5565b5f5b82829050811015610943575f601d5f8585858181106108d4576108d361382a565b5b90506020020160208101906108e99190613705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506108b2565b505050565b5f8061095261152c565b905061095f8582856116f6565b61096a858585611781565b60019150509392505050565b61097e6114a5565b80601a60036101000a81548160ff02191690831515021790555050565b5f60125f9054906101000a900460ff16905090565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109dd6114a5565b5f601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a826114a5565b5f601a60016101000a81548160ff0219169083151502179055505f610aa630610a34565b90505f811115610acb576001601a5f6101000a81548160ff0219169083151502179055505b610ad3612aa0565b610adc5f612b38565b50565b610ae76114a5565b601b60159054906101000a900460ff1615610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e906138a1565b60405180910390fd5b5f60014603610b5c57737a250d5630b4cf539739df2c5dacb4c659f2488d9050610bbc565b60894603610b805773edf6066a2b290c185783862c7f4776a2c8077ad19050610bbb565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290613909565b60405180910390fd5b5b81601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd3919061393b565b601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610e1e6114a5565b601b60149054906101000a900460ff1615610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e65906139b0565b60405180910390fd5b6001601b60146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060158054610ec8906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef4906137fa565b8015610f3f5780601f10610f1657610100808354040283529160200191610f3f565b820191905f5260205f20905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b5f610f5330610a34565b905090565b5f610f6b610f6461152c565b8484611781565b6001905092915050565b610f7d6114a5565b80601a60016101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110246114a5565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611080929190613a29565b6020604051808303815f875af115801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190613a64565b505050565b5f805f805f80600c54600d54600e54600f546010546110e2610f49565b955095509550955095509550909192939495565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611196575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156111ce57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156111db575f90506112a1565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561125d57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611283576064600854846112729190613abc565b61127c9190613b2a565b90506112a0565b6064600754846112939190613abc565b61129d9190613b2a565b90505b5b809150509392505050565b6112b46114a5565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611318573d5f803e3d5ffd5b50565b6113236114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611393575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161138a91906135a3565b60405180910390fd5b61139c81612b38565b50565b5f601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6113f96114a5565b5f5b8282905081101561148d576001601d5f85858581811061141e5761141d61382a565b5b90506020020160208101906114339190613705565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506113fb565b505050565b601b60149054906101000a900460ff1681565b6114ad61152c565b73ffffffffffffffffffffffffffffffffffffffff166114cb610e92565b73ffffffffffffffffffffffffffffffffffffffff161461152a576114ee61152c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161152191906135a3565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159890613bca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690613c58565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e991906135bc565b60405180910390a3505050565b5f6117018484610f9a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461177b578181101561176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176490613cc0565b60405180910390fd5b61177a8484848403611533565b5b50505050565b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290613d28565b60405180910390fd5b601a5f9054906101000a900460ff161580156118345750601a60019054906101000a900460ff16155b156119ce578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118829190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461190c9190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119aa91906135bc565b60405180910390a360105f8154809291906119c490613dac565b9190505550612a9b565b6119d6610e92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611a415750611a12610e92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611bdb578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a8f9190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b199190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb791906135bc565b60405180910390a360105f815480929190611bd190613dac565b9190505550612a9b565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c4057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dda578060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8e9190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d189190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db691906135bc565b60405180910390a360105f815480929190611dd090613dac565b9190505550612a9b565b601b60149054906101000a900460ff16611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613e3d565b60405180910390fd5b600b54600c54118015611e4257505f611e40610f49565b145b15612043575f601a5f6101000a81548160ff0219169083151502179055505f601a60016101000a81548160ff0219169083151502179055505f601a60036101000a81548160ff0219169083151502179055505f601a60026101000a81548160ff0219169083151502179055508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ef79190613d46565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f819190613d79565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161201f91906135bc565b60405180910390a360105f81548092919061203990613dac565b9190505550612a9b565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e1575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561213b5750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121945750601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121cc57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121e45750601a60019054906101000a900460ff165b1561224257601754816121f684610a34565b6122009190613d79565b1115612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223890613ea5565b60405180910390fd5b5b5f61224d8484612bf9565b90505f61225a8585612c61565b9050811561227a57600c5f81548092919061227490613dac565b91905055505b80158015612286575081155b15612422578260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d49190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235e9190613d79565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123fc91906135bc565b60405180910390a360105f81548092919061241690613dac565b91905055505050612a9b565b801561244057600d5f81548092919061243a90613dac565b91905055505b80801561244b575081155b801561245a5750600b54600c54115b80156124725750601a60029054906101000a900460ff165b15612658575f61248184612dd8565b1115612657575f83905061249484612fcb565b601a60019054906101000a900460ff161580156124b757505f6124b5610f49565b145b156124d6575f601a5f6101000a81548160ff0219169083151502179055505b8060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251f9190613d46565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a99190613d79565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264791906135bc565b60405180910390a3505050612a9b565b5b612663858585613018565b15612908575f6126748686866110f6565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126bf9190613d79565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600f5f81548092919061271290613dac565b91905055508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127609190613d46565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080846127ad9190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f59190613d79565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161289391906135bc565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516128f891906135bc565b60405180910390a3505050612a9b565b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129519190613d46565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129db9190613d79565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a7991906135bc565b60405180910390a360105f815480929190612a9390613dac565b919050555050505b505050565b5f470315612b365760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164762014c0890604051612af290613ef0565b5f60405180830381858888f193505050503d805f8114612b2d576040519150601f19603f3d011682016040523d82523d5f602084013e612b32565b606091505b5050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c575760019050612c5b565b5f90505b92915050565b5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612d0b5750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612d18575f9050612dd2565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612dc05750601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612dce5760019050612dd2565b5f90505b92915050565b5f80612de330610a34565b90505f612dfb84612df684601954613083565b613083565b90505f8103612e0e575f92505050612fc6565b5f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612e8a91906135a3565b602060405180830381865afa158015612ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec99190613f18565b90505f60015f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103612f3957600190505b5f8183612f469190613b2a565b90505f8103612f5457600190505b5f816064600286612f659190613abc565b612f6f9190613b2a565b612f799190613b2a565b90505f60c8601354612f8b9190613b2a565b905080821015612f99578091505b612fa38287613083565b95505f8603612fbb575f975050505050505050612fc6565b859750505050505050505b919050565b5f612fd582612dd8565b90505f8103612fe45750613015565b612fed8161309b565b612ff5612aa0565b600e5f81548092919061300790613dac565b919050555043601181905550505b50565b5f6130238484612c61565b15613030575f905061307c565b5f61303c8585856110f6565b9050600b54600c5410801561305057505f81115b80156130685750601a60039054906101000a900460ff165b1561307757600191505061307c565b5f9150505b9392505050565b5f8183116130915782613093565b815b905092915050565b5f600267ffffffffffffffff8111156130b7576130b6613f43565b5b6040519080825280602002602001820160405280156130e55781602001602082028036833780820191505090505b50905030815f815181106130fc576130fb61382a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061313e613289565b816001815181106131525761315161382a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131b930601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611533565b601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161321c959493929190614060565b5f604051808303815f87803b158015613233575f80fd5b505af1925050508015613244575060015b613284577f1a56b4917cc3e3f569cd8bd2e4a247732b1cccea3340b2f955f13525a400fc158260405161327791906135bc565b60405180910390a1613285565b5b5050565b5f601a60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613319919061393b565b905090565b5f80fd5b5f80fd5b5f8115159050919050565b61333a81613326565b8114613344575f80fd5b50565b5f8135905061335581613331565b92915050565b5f602082840312156133705761336f61331e565b5b5f61337d84828501613347565b91505092915050565b61338f81613326565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133be82613395565b9050919050565b6133ce816133b4565b82525050565b5f819050919050565b6133e6816133d4565b82525050565b5f610100820190506134005f83018b613386565b61340d602083018a613386565b61341a6040830189613386565b6134276060830188613386565b6134346080830187613386565b61344160a0830186613386565b61344e60c08301856133c5565b61345b60e08301846133dd565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6134aa82613468565b6134b48185613472565b93506134c4818560208601613482565b6134cd81613490565b840191505092915050565b5f6020820190508181035f8301526134f081846134a0565b905092915050565b613501816133b4565b811461350b575f80fd5b50565b5f8135905061351c816134f8565b92915050565b61352b816133d4565b8114613535575f80fd5b50565b5f8135905061354681613522565b92915050565b5f80604083850312156135625761356161331e565b5b5f61356f8582860161350e565b925050602061358085828601613538565b9150509250929050565b5f60208201905061359d5f830184613386565b92915050565b5f6020820190506135b65f8301846133c5565b92915050565b5f6020820190506135cf5f8301846133dd565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126135f6576135f56135d5565b5b8235905067ffffffffffffffff811115613613576136126135d9565b5b60208301915083602082028301111561362f5761362e6135dd565b5b9250929050565b5f806020838503121561364c5761364b61331e565b5b5f83013567ffffffffffffffff81111561366957613668613322565b5b613675858286016135e1565b92509250509250929050565b5f805f606084860312156136985761369761331e565b5b5f6136a58682870161350e565b93505060206136b68682870161350e565b92505060406136c786828701613538565b9150509250925092565b5f60ff82169050919050565b6136e6816136d1565b82525050565b5f6020820190506136ff5f8301846136dd565b92915050565b5f6020828403121561371a5761371961331e565b5b5f6137278482850161350e565b91505092915050565b5f80604083850312156137465761374561331e565b5b5f6137538582860161350e565b92505060206137648582860161350e565b9150509250929050565b5f60c0820190506137815f8301896133dd565b61378e60208301886133dd565b61379b60408301876133dd565b6137a860608301866133dd565b6137b560808301856133dd565b6137c260a08301846133dd565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061381157607f821691505b602082108103613824576138236137cd565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f616c726561647920696e697400000000000000000000000000000000000000005f82015250565b5f61388b600c83613472565b915061389682613857565b602082019050919050565b5f6020820190508181035f8301526138b88161387f565b9050919050565b7f556e737570706f72746564206e6574776f726b000000000000000000000000005f82015250565b5f6138f3601383613472565b91506138fe826138bf565b602082019050919050565b5f6020820190508181035f830152613920816138e7565b9050919050565b5f81519050613935816134f8565b92915050565b5f602082840312156139505761394f61331e565b5b5f61395d84828501613927565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61399a601783613472565b91506139a582613966565b602082019050919050565b5f6020820190508181035f8301526139c78161398e565b9050919050565b5f819050919050565b5f6139f16139ec6139e784613395565b6139ce565b613395565b9050919050565b5f613a02826139d7565b9050919050565b5f613a13826139f8565b9050919050565b613a2381613a09565b82525050565b5f604082019050613a3c5f830185613a1a565b613a4960208301846133dd565b9392505050565b5f81519050613a5e81613331565b92915050565b5f60208284031215613a7957613a7861331e565b5b5f613a8684828501613a50565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ac6826133d4565b9150613ad1836133d4565b9250828202613adf816133d4565b91508282048414831517613af657613af5613a8f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b34826133d4565b9150613b3f836133d4565b925082613b4f57613b4e613afd565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bb4602483613472565b9150613bbf82613b5a565b604082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c42602283613472565b9150613c4d82613be8565b604082019050919050565b5f6020820190508181035f830152613c6f81613c36565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613caa601d83613472565b9150613cb582613c76565b602082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f626c61636b6c69737400000000000000000000000000000000000000000000005f82015250565b5f613d12600983613472565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b5f613d50826133d4565b9150613d5b836133d4565b9250828203905081811115613d7357613d72613a8f565b5b92915050565b5f613d83826133d4565b9150613d8e836133d4565b9250828201905080821115613da657613da5613a8f565b5b92915050565b5f613db6826133d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613de857613de7613a8f565b5b600182019050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613e27601083613472565b9150613e3282613df3565b602082019050919050565b5f6020820190508181035f830152613e5481613e1b565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613e8f601a83613472565b9150613e9a82613e5b565b602082019050919050565b5f6020820190508181035f830152613ebc81613e83565b9050919050565b5f81905092915050565b50565b5f613edb5f83613ec3565b9150613ee682613ecd565b5f82019050919050565b5f613efa82613ed0565b9150819050919050565b5f81519050613f1281613522565b92915050565b5f60208284031215613f2d57613f2c61331e565b5b5f613f3a84828501613f04565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f613f93613f8e613f8984613f70565b6139ce565b6133d4565b9050919050565b613fa381613f79565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fdb816133b4565b82525050565b5f613fec8383613fd2565b60208301905092915050565b5f602082019050919050565b5f61400e82613fa9565b6140188185613fb3565b935061402383613fc3565b805f5b8381101561405357815161403a8882613fe1565b975061404583613ff8565b925050600181019050614026565b5085935050505092915050565b5f60a0820190506140735f8301886133dd565b6140806020830187613f9a565b81810360408301526140928186614004565b90506140a160608301856133c5565b6140ae60808301846133dd565b969550505050505056fea264697066735822122058b8ef0720a0f61cadb0398eeada4f67eb4a909e58e5f5794ac40e1865d0d5c164736f6c634300081a0033

Deployed Bytecode Sourcemap

3003:15225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7690:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8097:373;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5137:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5970:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4395:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5414:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15628:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7078:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5323:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4297:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15843:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5517:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6321:325;;;;;;;;;;;;;:::i;:::-;;17158:825;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17991:197;;;;;;;;;;;;;:::i;:::-;;2197:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7985:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5644:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7785:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5819:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16790:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8478:322;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;8808:493;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16666:116;;;;;;;;;;;;;:::i;:::-;;2577:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6195:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15426:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4332:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7690:87;2156:13;:11;:13::i;:::-;7765:4:::1;7750:12;;:19;;;;;;;;;;;;;;;;;;7690:87:::0;:::o;8097:373::-;8138:17;8157;8176;8195:18;8215:26;8243:18;8263:20;8285:23;8329:11;;;;;;;;;;;8342;;;;;;;;;;;8355:12;;;;;;;;;;;8369:13;;;;;;;;;;;8384:21;;;;;;;;;;;8407:13;;;;;;;;;;;8430;;;;;;;;;;;8446:15;;8321:141;;;;;;;;;;;;;;;;8097:373;;;;;;;;:::o;5137:83::-;5174:13;5207:5;5200:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5137:83;:::o;5970:161::-;6045:4;6062:39;6071:12;:10;:12::i;:::-;6085:7;6094:6;6062:8;:39::i;:::-;6119:4;6112:11;;5970:161;;;;:::o;4395:26::-;;;;;;;;;;;;;:::o;5414:95::-;5467:7;5494;;5487:14;;5414:95;:::o;15628:209::-;2156:13;:11;:13::i;:::-;15729:9:::1;15724:106;15744:9;;:16;;15740:1;:20;15724:106;;;15813:5;15782:14;:28;15797:9;;15807:1;15797:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15782:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15762:3;;;;;15724:106;;;;15628:209:::0;;:::o;7078:261::-;7175:4;7192:15;7210:12;:10;:12::i;:::-;7192:30;;7233:38;7249:4;7255:7;7264:6;7233:15;:38::i;:::-;7282:27;7292:4;7298:2;7302:6;7282:9;:27::i;:::-;7327:4;7320:11;;;7078:261;;;;;:::o;7882:95::-;2156:13;:11;:13::i;:::-;7965:4:::1;7949:13;;:20;;;;;;;;;;;;;;;;;;7882:95:::0;:::o;5323:83::-;5364:5;5389:9;;;;;;;;;;;5382:16;;5323:83;:::o;4297:28::-;;;;;;;;;;;;;:::o;15843:115::-;2156:13;:11;:13::i;:::-;15945:5:::1;15919:14;:23;15934:7;15919:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15843:115:::0;:::o;5517:119::-;5583:7;5610:9;:18;5620:7;5610:18;;;;;;;;;;;;;;;;5603:25;;5517:119;;;:::o;6321:325::-;2156:13;:11;:13::i;:::-;6403:5:::1;6387:13;;:21;;;;;;;;;;;;;;;;;;6421:28;6452:24;6470:4;6452:9;:24::i;:::-;6421:55;;6513:1;6490:20;:24;6487:84;;;6555:4;6540:12;;:19;;;;;;;;;;;;;;;;;;6487:84;6583:14;:12;:14::i;:::-;6608:30;6635:1;6608:18;:30::i;:::-;6376:270;6321:325::o:0;17158:825::-;2156:13;:11;:13::i;:::-;17250:11:::1;;;;;;;;;;;17249:12;17241:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;17291:24;17346:1;17329:13;:18:::0;17326:337:::1;;17392:42;17373:61;;17326:337;;;17481:3;17464:13;:20:::0;17461:202:::1;;17529:42;17510:61;;17461:202;;;17622:29;;;;;;;;;;:::i;:::-;;;;;;;;17461:202;17326:337;17691:14;17675:13;;:30;;;;;;;;;;;;;;;;;;17753:16;17716:15;;:54;;;;;;;;;;;;;;;;;;17818:4;17781:10;:34;17800:13;;;;;;;;;;;17781:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17874:4;17833:14;:38;17856:13;;;;;;;;;;;17833:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;17903:4;17889:11;;:18;;;;;;;;;;;;;;;;;;17934:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17920:11;;:36;;;;;;;;;;;;;;;;;;17969:7;17158:825:::0;:::o;17991:197::-;2156:13;:11;:13::i;:::-;18057:11:::1;;;;;;;;;;;18056:12;18048:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18123:4;18109:11;;:18;;;;;;;;;;;;;;;;;;18151:12;18138:10;:25;;;;17991:197::o:0;2197:87::-;2243:7;2270:6;;;;;;;;;;;2263:13;;2197:87;:::o;5228:::-;5267:13;5300:7;5293:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5228:87;:::o;7985:104::-;8030:7;8057:24;8075:4;8057:9;:24::i;:::-;8050:31;;7985:104;:::o;5644:167::-;5722:4;5739:42;5749:12;:10;:12::i;:::-;5763:9;5774:6;5739:9;:42::i;:::-;5799:4;5792:11;;5644:167;;;;:::o;7785:89::-;2156:13;:11;:13::i;:::-;7862:4:::1;7846:13;;:20;;;;;;;;;;;;;;;;;;7785:89:::0;:::o;5819:143::-;5900:7;5927:11;:18;5939:5;5927:18;;;;;;;;;;;;;;;:27;5946:7;5927:27;;;;;;;;;;;;;;;;5920:34;;5819:143;;;;:::o;16790:148::-;2156:13;:11;:13::i;:::-;16889:10:::1;16882:27;;;16910:10;;;;;;;;;;;16922:7;16882:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16790:148:::0;;:::o;8478:322::-;8518:17;8537:18;8557:26;8585;8613:29;8644:21;8691:9;;8702:10;;8714:18;;8734;;8754:21;;8777:14;:12;:14::i;:::-;8683:109;;;;;;;;;;;;8478:322;;;;;;:::o;8808:493::-;8894:7;8914:17;8947:10;:16;8958:4;8947:16;;;;;;;;;;;;;;;;;;;;;;;;;8946:17;:36;;;;;8968:10;:14;8979:2;8968:14;;;;;;;;;;;;;;;;;;;;;;;;;8967:15;8946:36;:61;;;;;9002:4;8986:21;;:4;:21;;;;8946:61;8942:323;;;9036:1;9024:13;;8942:323;;;9068:10;:14;9079:2;9068:14;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;9102:4;9086:21;;:4;:21;;;;9068:39;9064:201;;;9165:3;9146:15;;9137:6;:24;;;;:::i;:::-;9136:32;;;;:::i;:::-;9124:44;;9064:201;;;9250:3;9232:14;;9223:6;:23;;;;:::i;:::-;9222:31;;;;:::i;:::-;9210:43;;9064:201;8942:323;9284:9;9277:16;;;8808:493;;;;;:::o;16666:116::-;2156:13;:11;:13::i;:::-;16731:10:::1;;;;;;;;;;;16723:28;;:51;16752:21;16723:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16666:116::o:0;2577:220::-;2156:13;:11;:13::i;:::-;2682:1:::1;2662:22;;:8;:22;;::::0;2658:93:::1;;2736:1;2708:31;;;;;;;;;;;:::i;:::-;;;;;;;;2658:93;2761:28;2780:8;2761:18;:28::i;:::-;2577:220:::0;:::o;6195:118::-;6258:4;6282:14;:23;6297:7;6282:23;;;;;;;;;;;;;;;;;;;;;;;;;6275:30;;6195:118;;;:::o;15426:196::-;2156:13;:11;:13::i;:::-;15515:9:::1;15510:105;15530:9;;:16;;15526:1;:20;15510:105;;;15599:4;15568:14;:28;15583:9;;15593:1;15583:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15568:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15548:3;;;;;15510:105;;;;15426:196:::0;;:::o;4332:23::-;;;;;;;;;;;;;:::o;2292:166::-;2363:12;:10;:12::i;:::-;2352:23;;:7;:5;:7::i;:::-;:23;;;2348:103;;2426:12;:10;:12::i;:::-;2399:40;;;;;;;;;;;:::i;:::-;;;;;;;;2348:103;2292:166::o;186:98::-;239:7;266:10;259:17;;186:98;:::o;7347:335::-;7457:1;7440:19;;:5;:19;;;7432:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7538:1;7519:21;;:7;:21;;;7511:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7620:6;7590:11;:18;7602:5;7590:18;;;;;;;;;;;;;;;:27;7609:7;7590:27;;;;;;;;;;;;;;;:36;;;;7658:7;7642:32;;7651:5;7642:32;;;7667:6;7642:32;;;;;;:::i;:::-;;;;;;;;7347:335;;;:::o;6654:416::-;6754:24;6781;6791:4;6797:7;6781:9;:24::i;:::-;6754:51;;6840:17;6820:16;:37;6816:247;;6902:6;6882:16;:26;;6874:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6986:50;6995:4;7001:7;7029:6;7010:16;:25;6986:8;:50::i;:::-;6816:247;6743:327;6654:416;;;:::o;9887:3552::-;9976:14;:20;9991:4;9976:20;;;;;;;;;;;;;;;;;;;;;;;;;9975:21;9967:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10028:12;;;;;;;;;;;10027:13;:31;;;;;10045:13;;;;;;;;;;;10044:14;10027:31;10023:264;;;10111:6;10093:9;:15;10103:4;10093:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;10075:9;:15;10085:4;10075:15;;;;;;;;;;;;;;;:42;;;;10164:6;10148:9;:13;10158:2;10148:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;10132:9;:13;10142:2;10132:13;;;;;;;;;;;;;;;:38;;;;10205:2;10190:26;;10199:4;10190:26;;;10209:6;10190:26;;;;;;:::i;:::-;;;;;;;;10231:21;;:23;;;;;;;;;:::i;:::-;;;;;;10269:7;;10023:264;10311:7;:5;:7::i;:::-;10303:15;;:4;:15;;;:32;;;;10328:7;:5;:7::i;:::-;10322:13;;:2;:13;;;10303:32;10299:265;;;10388:6;10370:9;:15;10380:4;10370:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;10352:9;:15;10362:4;10352:15;;;;;;;;;;;;;;;:42;;;;10441:6;10425:9;:13;10435:2;10425:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;10409:9;:13;10419:2;10409:13;;;;;;;;;;;;;;;:38;;;;10482:2;10467:26;;10476:4;10467:26;;;10486:6;10467:26;;;;;;:::i;:::-;;;;;;;;10508:21;;:23;;;;;;;;;:::i;:::-;;;;;;10546:7;;10299:265;10593:4;10577:21;;:4;:21;;;:44;;;;10616:4;10602:19;;:2;:19;;;10577:44;10574:285;;;10683:6;10665:9;:15;10675:4;10665:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;10647:9;:15;10657:4;10647:15;;;;;;;;;;;;;;;:42;;;;10736:6;10720:9;:13;10730:2;10720:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;10704:9;:13;10714:2;10704:13;;;;;;;;;;;;;;;:38;;;;10777:2;10762:26;;10771:4;10762:26;;;10781:6;10762:26;;;;;;:::i;:::-;;;;;;;;10803:21;;:23;;;;;;;;;:::i;:::-;;;;;;10841:7;;10574:285;10879:11;;;;;;;;;;;10871:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10939:15;;10927:9;;:27;:50;;;;;10976:1;10958:14;:12;:14::i;:::-;:19;10927:50;10924:444;;;11018:5;11003:12;;:20;;;;;;;;;;;;;;;;;;11054:5;11038:13;;:21;;;;;;;;;;;;;;;;;;11090:5;11074:13;;:21;;;;;;;;;;;;;;;;;;11134:5;11110:21;;:29;;;;;;;;;;;;;;;;;;11192:6;11174:9;:15;11184:4;11174:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;11156:9;:15;11166:4;11156:15;;;;;;;;;;;;;;;:42;;;;11245:6;11229:9;:13;11239:2;11229:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;11213:9;:13;11223:2;11213:13;;;;;;;;;;;;;;;:38;;;;11286:2;11271:26;;11280:4;11271:26;;;11290:6;11271:26;;;;;;:::i;:::-;;;;;;;;11312:21;;:23;;;;;;;;;:::i;:::-;;;;;;11350:7;;10924:444;11385:10;:14;11396:2;11385:14;;;;;;;;;;;;;;;;;;;;;;;;;11384:15;:38;;;;;11404:14;:18;11419:2;11404:18;;;;;;;;;;;;;;;;;;;;;;;;;11403:19;11384:38;:72;;;;;11440:15;;;;;;;;;;;11426:30;;:2;:30;;;;11384:72;:104;;;;;11474:13;;;;;;;;;;;11460:28;;:2;:28;;;;11384:104;:127;;;;;11506:4;11492:19;;:2;:19;;;;11384:127;:144;;;;;11515:13;;;;;;;;;;;11384:144;11380:256;;;11579:14;;11569:6;11553:13;11563:2;11553:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11545:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11380:256;11648:11;11662:20;11673:4;11679:2;11662:10;:20::i;:::-;11648:34;;11693:12;11708:21;11720:4;11726:2;11708:11;:21::i;:::-;11693:36;;11743:6;11740:49;;;11766:9;;:11;;;;;;;;;:::i;:::-;;;;;;11740:49;11805:7;11804:8;:19;;;;;11817:6;11816:7;11804:19;11801:260;;;11885:6;11867:9;:15;11877:4;11867:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;11849:9;:15;11859:4;11849:15;;;;;;;;;;;;;;;:42;;;;11938:6;11922:9;:13;11932:2;11922:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;11906:9;:13;11916:2;11906:13;;;;;;;;;;;;;;;:38;;;;11979:2;11964:26;;11973:4;11964:26;;;11983:6;11964:26;;;;;;:::i;:::-;;;;;;;;12005:21;;:23;;;;;;;;;:::i;:::-;;;;;;12043:7;;;;11801:260;12076:7;12073:60;;;12109:10;;:12;;;;;;;;;:::i;:::-;;;;;;12073:60;12163:7;:18;;;;;12175:6;12174:7;12163:18;:58;;;;;12206:15;;12194:9;;:27;12163:58;:92;;;;;12234:21;;;;;;;;;;;12163:92;12145:619;;;12318:1;12285:30;12308:6;12285:22;:30::i;:::-;:34;12282:471;;;12353:15;12371:6;12353:24;;12396:20;12409:6;12396:12;:20::i;:::-;12439:13;;;;;;;;;;;12438:14;:37;;;;;12474:1;12456:14;:12;:14::i;:::-;:19;12438:37;12435:105;;;12515:5;12500:12;;:20;;;;;;;;;;;;;;;;;;12435:105;12596:7;12578:9;:15;12588:4;12578:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;12560:9;:15;12570:4;12560:15;;;;;;;;;;;;;;;:43;;;;12654:7;12638:9;:13;12648:2;12638:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;12622:9;:13;12632:2;12622:13;;;;;;;;;;;;;;;:39;;;;12700:2;12685:27;;12694:4;12685:27;;;12704:7;12685:27;;;;;;:::i;:::-;;;;;;;;12731:7;;;;;12282:471;12145:619;12780:30;12793:4;12799:2;12803:6;12780:12;:30::i;:::-;12776:476;;;12827:17;12847:31;12861:4;12867:2;12871:6;12847:13;:31::i;:::-;12827:51;;12947:9;12920;:24;12938:4;12920:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;12893:9;:24;12911:4;12893:24;;;;;;;;;;;;;;;:63;;;;12971:18;;:20;;;;;;;;;:::i;:::-;;;;;;13042:6;13024:9;:15;13034:4;13024:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;13006:9;:15;13016:4;13006:15;;;;;;;;;;;;;;;:42;;;;13103:9;13096:6;:16;;;;:::i;:::-;13079:9;:13;13089:2;13079:13;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;13063:9;:13;13073:2;13063:13;;;;;;;;;;;;;;;:50;;;;13156:4;13133:40;;13142:4;13133:40;;;13163:9;13133:40;;;;;;:::i;:::-;;;;;;;;13208:2;13193:26;;13202:4;13193:26;;;13212:6;13193:26;;;;;;:::i;:::-;;;;;;;;13234:7;;;;;12776:476;13300:6;13282:9;:15;13292:4;13282:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;13264:9;:15;13274:4;13264:15;;;;;;;;;;;;;;;:42;;;;13349:6;13333:9;:13;13343:2;13333:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;13317:9;:13;13327:2;13317:13;;;;;;;;;;;;;;;:38;;;;13386:2;13371:26;;13380:4;13371:26;;;13390:6;13371:26;;;;;;:::i;:::-;;;;;;;;13408:21;;:23;;;;;;;;;:::i;:::-;;;;;;9956:3483;;9887:3552;;;;:::o;16946:204::-;17017:1;16992:21;:26;16989:73;17044:7;16989:73;17080:10;;;;;;;;;;;17072:24;;17104:21;17132:5;17072:70;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16946:204;:::o;2805:191::-;2879:16;2898:6;;;;;;;;;;;2879:25;;2924:8;2915:6;;:17;;;;;;;;;;;;;;;;;;2979:8;2948:40;;2969:8;2948:40;;;;;;;;;;;;2868:128;2805:191;:::o;9309:199::-;9377:4;9413:13;;;;;;;;;;;9397:30;;:4;:30;;;9394:82;;9460:4;9453:11;;;;9394:82;9495:5;9488:12;;9309:199;;;;;:::o;9516:363::-;9585:4;9623:13;;;;;;;;;;;9607:30;;:4;:30;;;:64;;;;;9655:15;;;;;;;;;;;9641:30;;:2;:30;;;9607:64;9604:117;;;9704:5;9697:12;;;;9604:117;9750:13;;;;;;;;;;;9736:28;;:2;:28;;;:62;;;;9782:15;;;;;;;;;;;9768:30;;:2;:30;;;9736:62;9733:114;;;9831:4;9824:11;;;;9733:114;9866:5;9859:12;;9516:363;;;;;:::o;14217:1087::-;14295:7;14315:28;14346:24;14364:4;14346:9;:24::i;:::-;14315:55;;14381:26;14410:59;14414:14;14430:38;14434:20;14456:11;;14430:3;:38::i;:::-;14410:3;:59::i;:::-;14381:88;;14507:1;14485:18;:23;14482:72;;14541:1;14534:8;;;;;;14482:72;14566:13;14589:11;;;;;;;;;;;14582:29;;;14620:13;;;;;;;;;;;14582:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14566:69;;14646:15;14664:9;:33;14682:13;;;;;;;;;;;14664:33;;;;;;;;;;;;;;;;14646:51;;14722:1;14711:7;:12;14708:64;;14759:1;14749:11;;14708:64;14782:13;14807:7;14799:5;:15;;;;:::i;:::-;14782:33;;14838:1;14829:5;:10;14826:51;;14864:1;14856:9;;14826:51;14887:21;14931:5;14924:3;14920:1;14912:5;:9;;;;:::i;:::-;:15;;;;:::i;:::-;14911:25;;;;:::i;:::-;14887:49;;14947:24;14984:3;14974:7;;:13;;;;:::i;:::-;14947:40;;15017:16;15001:13;:32;14998:105;;;15075:16;15059:32;;14998:105;15136:38;15140:13;15155:18;15136:3;:38::i;:::-;15115:59;;15212:1;15190:18;:23;15187:72;;15246:1;15239:8;;;;;;;;;;;15187:72;15278:18;15271:25;;;;;;;;;14217:1087;;;;:::o;13843:366::-;13910:26;13939:38;13962:14;13939:22;:38::i;:::-;13910:67;;14013:1;13991:18;:23;13988:70;;14040:7;;;13988:70;14070:36;14087:18;14070:16;:36::i;:::-;14117:14;:12;:14::i;:::-;14142:18;;:20;;;;;;;;;:::i;:::-;;;;;;14189:12;14173:13;:28;;;;13897:312;13843:366;;:::o;13447:388::-;13533:4;13553:21;13565:4;13571:2;13553:11;:21::i;:::-;13550:74;;;13607:5;13600:12;;;;13550:74;13636:17;13656:31;13670:4;13676:2;13680:6;13656:13;:31::i;:::-;13636:51;;13714:15;;13702:9;;:27;:44;;;;;13745:1;13733:9;:13;13702:44;:61;;;;;13750:13;;;;;;;;;;;13702:61;13698:105;;;13787:4;13780:11;;;;;13698:105;13822:5;13815:12;;;13447:388;;;;;;:::o;15312:106::-;15369:7;15400:1;15396;:5;15395:15;;15409:1;15395:15;;;15405:1;15395:15;15388:22;;15312:106;;;;:::o;16007:542::-;16073:21;16111:1;16097:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16073:40;;16142:4;16124;16129:1;16124:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16168:13;:11;:13::i;:::-;16158:4;16163:1;16158:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16192:62;16209:4;16224:15;;;;;;;;;;;16242:11;16192:8;:62::i;:::-;16269:15;;;;;;;;;;;:66;;;16350:11;16376:1;16392:4;16419;16439:15;16269:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16265:277;;16507:23;16518:11;16507:23;;;;;;:::i;:::-;;;;;;;;16265:277;;;;16062:487;16007:542;:::o;16557:101::-;16601:7;16628:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16621:29;;16557:101;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:109::-;1101:21;1116:5;1101:21;:::i;:::-;1096:3;1089:34;1020:109;;:::o;1135:126::-;1172:7;1212:42;1205:5;1201:54;1190:65;;1135:126;;;:::o;1267:96::-;1304:7;1333:24;1351:5;1333:24;:::i;:::-;1322:35;;1267:96;;;:::o;1369:118::-;1456:24;1474:5;1456:24;:::i;:::-;1451:3;1444:37;1369:118;;:::o;1493:77::-;1530:7;1559:5;1548:16;;1493:77;;;:::o;1576:118::-;1663:24;1681:5;1663:24;:::i;:::-;1658:3;1651:37;1576:118;;:::o;1700:925::-;1953:4;1991:3;1980:9;1976:19;1968:27;;2005:65;2067:1;2056:9;2052:17;2043:6;2005:65;:::i;:::-;2080:66;2142:2;2131:9;2127:18;2118:6;2080:66;:::i;:::-;2156;2218:2;2207:9;2203:18;2194:6;2156:66;:::i;:::-;2232;2294:2;2283:9;2279:18;2270:6;2232:66;:::i;:::-;2308:67;2370:3;2359:9;2355:19;2346:6;2308:67;:::i;:::-;2385;2447:3;2436:9;2432:19;2423:6;2385:67;:::i;:::-;2462:73;2530:3;2519:9;2515:19;2506:6;2462:73;:::i;:::-;2545;2613:3;2602:9;2598:19;2589:6;2545:73;:::i;:::-;1700:925;;;;;;;;;;;:::o;2631:99::-;2683:6;2717:5;2711:12;2701:22;;2631:99;;;:::o;2736:169::-;2820:11;2854:6;2849:3;2842:19;2894:4;2889:3;2885:14;2870:29;;2736:169;;;;:::o;2911:139::-;3000:6;2995:3;2990;2984:23;3041:1;3032:6;3027:3;3023:16;3016:27;2911:139;;;:::o;3056:102::-;3097:6;3148:2;3144:7;3139:2;3132:5;3128:14;3124:28;3114:38;;3056:102;;;:::o;3164:377::-;3252:3;3280:39;3313:5;3280:39;:::i;:::-;3335:71;3399:6;3394:3;3335:71;:::i;:::-;3328:78;;3415:65;3473:6;3468:3;3461:4;3454:5;3450:16;3415:65;:::i;:::-;3505:29;3527:6;3505:29;:::i;:::-;3500:3;3496:39;3489:46;;3256:285;3164:377;;;;:::o;3547:313::-;3660:4;3698:2;3687:9;3683:18;3675:26;;3747:9;3741:4;3737:20;3733:1;3722:9;3718:17;3711:47;3775:78;3848:4;3839:6;3775:78;:::i;:::-;3767:86;;3547:313;;;;:::o;3866:122::-;3939:24;3957:5;3939:24;:::i;:::-;3932:5;3929:35;3919:63;;3978:1;3975;3968:12;3919:63;3866:122;:::o;3994:139::-;4040:5;4078:6;4065:20;4056:29;;4094:33;4121:5;4094:33;:::i;:::-;3994:139;;;;:::o;4139:122::-;4212:24;4230:5;4212:24;:::i;:::-;4205:5;4202:35;4192:63;;4251:1;4248;4241:12;4192:63;4139:122;:::o;4267:139::-;4313:5;4351:6;4338:20;4329:29;;4367:33;4394:5;4367:33;:::i;:::-;4267:139;;;;:::o;4412:474::-;4480:6;4488;4537:2;4525:9;4516:7;4512:23;4508:32;4505:119;;;4543:79;;:::i;:::-;4505:119;4663:1;4688:53;4733:7;4724:6;4713:9;4709:22;4688:53;:::i;:::-;4678:63;;4634:117;4790:2;4816:53;4861:7;4852:6;4841:9;4837:22;4816:53;:::i;:::-;4806:63;;4761:118;4412:474;;;;;:::o;4892:210::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:65;5092:1;5081:9;5077:17;5068:6;5030:65;:::i;:::-;4892:210;;;;:::o;5108:222::-;5201:4;5239:2;5228:9;5224:18;5216:26;;5252:71;5320:1;5309:9;5305:17;5296:6;5252:71;:::i;:::-;5108:222;;;;:::o;5336:::-;5429:4;5467:2;5456:9;5452:18;5444:26;;5480:71;5548:1;5537:9;5533:17;5524:6;5480:71;:::i;:::-;5336:222;;;;:::o;5564:117::-;5673:1;5670;5663:12;5687:117;5796:1;5793;5786:12;5810:117;5919:1;5916;5909:12;5950:568;6023:8;6033:6;6083:3;6076:4;6068:6;6064:17;6060:27;6050:122;;6091:79;;:::i;:::-;6050:122;6204:6;6191:20;6181:30;;6234:18;6226:6;6223:30;6220:117;;;6256:79;;:::i;:::-;6220:117;6370:4;6362:6;6358:17;6346:29;;6424:3;6416:4;6408:6;6404:17;6394:8;6390:32;6387:41;6384:128;;;6431:79;;:::i;:::-;6384:128;5950:568;;;;;:::o;6524:559::-;6610:6;6618;6667:2;6655:9;6646:7;6642:23;6638:32;6635:119;;;6673:79;;:::i;:::-;6635:119;6821:1;6810:9;6806:17;6793:31;6851:18;6843:6;6840:30;6837:117;;;6873:79;;:::i;:::-;6837:117;6986:80;7058:7;7049:6;7038:9;7034:22;6986:80;:::i;:::-;6968:98;;;;6764:312;6524:559;;;;;:::o;7089:619::-;7166:6;7174;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:53;7555:7;7546:6;7535:9;7531:22;7510:53;:::i;:::-;7500:63;;7455:118;7612:2;7638:53;7683:7;7674:6;7663:9;7659:22;7638:53;:::i;:::-;7628:63;;7583:118;7089:619;;;;;:::o;7714:86::-;7749:7;7789:4;7782:5;7778:16;7767:27;;7714:86;;;:::o;7806:112::-;7889:22;7905:5;7889:22;:::i;:::-;7884:3;7877:35;7806:112;;:::o;7924:214::-;8013:4;8051:2;8040:9;8036:18;8028:26;;8064:67;8128:1;8117:9;8113:17;8104:6;8064:67;:::i;:::-;7924:214;;;;:::o;8144:329::-;8203:6;8252:2;8240:9;8231:7;8227:23;8223:32;8220:119;;;8258:79;;:::i;:::-;8220:119;8378:1;8403:53;8448:7;8439:6;8428:9;8424:22;8403:53;:::i;:::-;8393:63;;8349:117;8144:329;;;;:::o;8479:474::-;8547:6;8555;8604:2;8592:9;8583:7;8579:23;8575:32;8572:119;;;8610:79;;:::i;:::-;8572:119;8730:1;8755:53;8800:7;8791:6;8780:9;8776:22;8755:53;:::i;:::-;8745:63;;8701:117;8857:2;8883:53;8928:7;8919:6;8908:9;8904:22;8883:53;:::i;:::-;8873:63;;8828:118;8479:474;;;;;:::o;8959:775::-;9192:4;9230:3;9219:9;9215:19;9207:27;;9244:71;9312:1;9301:9;9297:17;9288:6;9244:71;:::i;:::-;9325:72;9393:2;9382:9;9378:18;9369:6;9325:72;:::i;:::-;9407;9475:2;9464:9;9460:18;9451:6;9407:72;:::i;:::-;9489;9557:2;9546:9;9542:18;9533:6;9489:72;:::i;:::-;9571:73;9639:3;9628:9;9624:19;9615:6;9571:73;:::i;:::-;9654;9722:3;9711:9;9707:19;9698:6;9654:73;:::i;:::-;8959:775;;;;;;;;;:::o;9740:180::-;9788:77;9785:1;9778:88;9885:4;9882:1;9875:15;9909:4;9906:1;9899:15;9926:320;9970:6;10007:1;10001:4;9997:12;9987:22;;10054:1;10048:4;10044:12;10075:18;10065:81;;10131:4;10123:6;10119:17;10109:27;;10065:81;10193:2;10185:6;10182:14;10162:18;10159:38;10156:84;;10212:18;;:::i;:::-;10156:84;9977:269;9926:320;;;:::o;10252:180::-;10300:77;10297:1;10290:88;10397:4;10394:1;10387:15;10421:4;10418:1;10411:15;10438:162;10578:14;10574:1;10566:6;10562:14;10555:38;10438:162;:::o;10606:366::-;10748:3;10769:67;10833:2;10828:3;10769:67;:::i;:::-;10762:74;;10845:93;10934:3;10845:93;:::i;:::-;10963:2;10958:3;10954:12;10947:19;;10606:366;;;:::o;10978:419::-;11144:4;11182:2;11171:9;11167:18;11159:26;;11231:9;11225:4;11221:20;11217:1;11206:9;11202:17;11195:47;11259:131;11385:4;11259:131;:::i;:::-;11251:139;;10978:419;;;:::o;11403:169::-;11543:21;11539:1;11531:6;11527:14;11520:45;11403:169;:::o;11578:366::-;11720:3;11741:67;11805:2;11800:3;11741:67;:::i;:::-;11734:74;;11817:93;11906:3;11817:93;:::i;:::-;11935:2;11930:3;11926:12;11919:19;;11578:366;;;:::o;11950:419::-;12116:4;12154:2;12143:9;12139:18;12131:26;;12203:9;12197:4;12193:20;12189:1;12178:9;12174:17;12167:47;12231:131;12357:4;12231:131;:::i;:::-;12223:139;;11950:419;;;:::o;12375:143::-;12432:5;12463:6;12457:13;12448:22;;12479:33;12506:5;12479:33;:::i;:::-;12375:143;;;;:::o;12524:351::-;12594:6;12643:2;12631:9;12622:7;12618:23;12614:32;12611:119;;;12649:79;;:::i;:::-;12611:119;12769:1;12794:64;12850:7;12841:6;12830:9;12826:22;12794:64;:::i;:::-;12784:74;;12740:128;12524:351;;;;:::o;12881:173::-;13021:25;13017:1;13009:6;13005:14;12998:49;12881:173;:::o;13060:366::-;13202:3;13223:67;13287:2;13282:3;13223:67;:::i;:::-;13216:74;;13299:93;13388:3;13299:93;:::i;:::-;13417:2;13412:3;13408:12;13401:19;;13060:366;;;:::o;13432:419::-;13598:4;13636:2;13625:9;13621:18;13613:26;;13685:9;13679:4;13675:20;13671:1;13660:9;13656:17;13649:47;13713:131;13839:4;13713:131;:::i;:::-;13705:139;;13432:419;;;:::o;13857:60::-;13885:3;13906:5;13899:12;;13857:60;;;:::o;13923:142::-;13973:9;14006:53;14024:34;14033:24;14051:5;14033:24;:::i;:::-;14024:34;:::i;:::-;14006:53;:::i;:::-;13993:66;;13923:142;;;:::o;14071:126::-;14121:9;14154:37;14185:5;14154:37;:::i;:::-;14141:50;;14071:126;;;:::o;14203:134::-;14261:9;14294:37;14325:5;14294:37;:::i;:::-;14281:50;;14203:134;;;:::o;14343:147::-;14438:45;14477:5;14438:45;:::i;:::-;14433:3;14426:58;14343:147;;:::o;14496:348::-;14625:4;14663:2;14652:9;14648:18;14640:26;;14676:79;14752:1;14741:9;14737:17;14728:6;14676:79;:::i;:::-;14765:72;14833:2;14822:9;14818:18;14809:6;14765:72;:::i;:::-;14496:348;;;;;:::o;14850:137::-;14904:5;14935:6;14929:13;14920:22;;14951:30;14975:5;14951:30;:::i;:::-;14850:137;;;;:::o;14993:345::-;15060:6;15109:2;15097:9;15088:7;15084:23;15080:32;15077:119;;;15115:79;;:::i;:::-;15077:119;15235:1;15260:61;15313:7;15304:6;15293:9;15289:22;15260:61;:::i;:::-;15250:71;;15206:125;14993:345;;;;:::o;15344:180::-;15392:77;15389:1;15382:88;15489:4;15486:1;15479:15;15513:4;15510:1;15503:15;15530:410;15570:7;15593:20;15611:1;15593:20;:::i;:::-;15588:25;;15627:20;15645:1;15627:20;:::i;:::-;15622:25;;15682:1;15679;15675:9;15704:30;15722:11;15704:30;:::i;:::-;15693:41;;15883:1;15874:7;15870:15;15867:1;15864:22;15844:1;15837:9;15817:83;15794:139;;15913:18;;:::i;:::-;15794:139;15578:362;15530:410;;;;:::o;15946:180::-;15994:77;15991:1;15984:88;16091:4;16088:1;16081:15;16115:4;16112:1;16105:15;16132:185;16172:1;16189:20;16207:1;16189:20;:::i;:::-;16184:25;;16223:20;16241:1;16223:20;:::i;:::-;16218:25;;16262:1;16252:35;;16267:18;;:::i;:::-;16252:35;16309:1;16306;16302:9;16297:14;;16132:185;;;;:::o;16323:223::-;16463:34;16459:1;16451:6;16447:14;16440:58;16532:6;16527:2;16519:6;16515:15;16508:31;16323:223;:::o;16552:366::-;16694:3;16715:67;16779:2;16774:3;16715:67;:::i;:::-;16708:74;;16791:93;16880:3;16791:93;:::i;:::-;16909:2;16904:3;16900:12;16893:19;;16552:366;;;:::o;16924:419::-;17090:4;17128:2;17117:9;17113:18;17105:26;;17177:9;17171:4;17167:20;17163:1;17152:9;17148:17;17141:47;17205:131;17331:4;17205:131;:::i;:::-;17197:139;;16924:419;;;:::o;17349:221::-;17489:34;17485:1;17477:6;17473:14;17466:58;17558:4;17553:2;17545:6;17541:15;17534:29;17349:221;:::o;17576:366::-;17718:3;17739:67;17803:2;17798:3;17739:67;:::i;:::-;17732:74;;17815:93;17904:3;17815:93;:::i;:::-;17933:2;17928:3;17924:12;17917:19;;17576:366;;;:::o;17948:419::-;18114:4;18152:2;18141:9;18137:18;18129:26;;18201:9;18195:4;18191:20;18187:1;18176:9;18172:17;18165:47;18229:131;18355:4;18229:131;:::i;:::-;18221:139;;17948:419;;;:::o;18373:179::-;18513:31;18509:1;18501:6;18497:14;18490:55;18373:179;:::o;18558:366::-;18700:3;18721:67;18785:2;18780:3;18721:67;:::i;:::-;18714:74;;18797:93;18886:3;18797:93;:::i;:::-;18915:2;18910:3;18906:12;18899:19;;18558:366;;;:::o;18930:419::-;19096:4;19134:2;19123:9;19119:18;19111:26;;19183:9;19177:4;19173:20;19169:1;19158:9;19154:17;19147:47;19211:131;19337:4;19211:131;:::i;:::-;19203:139;;18930:419;;;:::o;19355:159::-;19495:11;19491:1;19483:6;19479:14;19472:35;19355:159;:::o;19520:365::-;19662:3;19683:66;19747:1;19742:3;19683:66;:::i;:::-;19676:73;;19758:93;19847:3;19758:93;:::i;:::-;19876:2;19871:3;19867:12;19860:19;;19520:365;;;:::o;19891:419::-;20057:4;20095:2;20084:9;20080:18;20072:26;;20144:9;20138:4;20134:20;20130:1;20119:9;20115:17;20108:47;20172:131;20298:4;20172:131;:::i;:::-;20164:139;;19891:419;;;:::o;20316:194::-;20356:4;20376:20;20394:1;20376:20;:::i;:::-;20371:25;;20410:20;20428:1;20410:20;:::i;:::-;20405:25;;20454:1;20451;20447:9;20439:17;;20478:1;20472:4;20469:11;20466:37;;;20483:18;;:::i;:::-;20466:37;20316:194;;;;:::o;20516:191::-;20556:3;20575:20;20593:1;20575:20;:::i;:::-;20570:25;;20609:20;20627:1;20609:20;:::i;:::-;20604:25;;20652:1;20649;20645:9;20638:16;;20673:3;20670:1;20667:10;20664:36;;;20680:18;;:::i;:::-;20664:36;20516:191;;;;:::o;20713:233::-;20752:3;20775:24;20793:5;20775:24;:::i;:::-;20766:33;;20821:66;20814:5;20811:77;20808:103;;20891:18;;:::i;:::-;20808:103;20938:1;20931:5;20927:13;20920:20;;20713:233;;;:::o;20952:166::-;21092:18;21088:1;21080:6;21076:14;21069:42;20952:166;:::o;21124:366::-;21266:3;21287:67;21351:2;21346:3;21287:67;:::i;:::-;21280:74;;21363:93;21452:3;21363:93;:::i;:::-;21481:2;21476:3;21472:12;21465:19;;21124:366;;;:::o;21496:419::-;21662:4;21700:2;21689:9;21685:18;21677:26;;21749:9;21743:4;21739:20;21735:1;21724:9;21720:17;21713:47;21777:131;21903:4;21777:131;:::i;:::-;21769:139;;21496:419;;;:::o;21921:176::-;22061:28;22057:1;22049:6;22045:14;22038:52;21921:176;:::o;22103:366::-;22245:3;22266:67;22330:2;22325:3;22266:67;:::i;:::-;22259:74;;22342:93;22431:3;22342:93;:::i;:::-;22460:2;22455:3;22451:12;22444:19;;22103:366;;;:::o;22475:419::-;22641:4;22679:2;22668:9;22664:18;22656:26;;22728:9;22722:4;22718:20;22714:1;22703:9;22699:17;22692:47;22756:131;22882:4;22756:131;:::i;:::-;22748:139;;22475:419;;;:::o;22900:147::-;23001:11;23038:3;23023:18;;22900:147;;;;:::o;23053:114::-;;:::o;23173:398::-;23332:3;23353:83;23434:1;23429:3;23353:83;:::i;:::-;23346:90;;23445:93;23534:3;23445:93;:::i;:::-;23563:1;23558:3;23554:11;23547:18;;23173:398;;;:::o;23577:379::-;23761:3;23783:147;23926:3;23783:147;:::i;:::-;23776:154;;23947:3;23940:10;;23577:379;;;:::o;23962:143::-;24019:5;24050:6;24044:13;24035:22;;24066:33;24093:5;24066:33;:::i;:::-;23962:143;;;;:::o;24111:351::-;24181:6;24230:2;24218:9;24209:7;24205:23;24201:32;24198:119;;;24236:79;;:::i;:::-;24198:119;24356:1;24381:64;24437:7;24428:6;24417:9;24413:22;24381:64;:::i;:::-;24371:74;;24327:128;24111:351;;;;:::o;24468:180::-;24516:77;24513:1;24506:88;24613:4;24610:1;24603:15;24637:4;24634:1;24627:15;24654:85;24699:7;24728:5;24717:16;;24654:85;;;:::o;24745:158::-;24803:9;24836:61;24854:42;24863:32;24889:5;24863:32;:::i;:::-;24854:42;:::i;:::-;24836:61;:::i;:::-;24823:74;;24745:158;;;:::o;24909:147::-;25004:45;25043:5;25004:45;:::i;:::-;24999:3;24992:58;24909:147;;:::o;25062:114::-;25129:6;25163:5;25157:12;25147:22;;25062:114;;;:::o;25182:184::-;25281:11;25315:6;25310:3;25303:19;25355:4;25350:3;25346:14;25331:29;;25182:184;;;;:::o;25372:132::-;25439:4;25462:3;25454:11;;25492:4;25487:3;25483:14;25475:22;;25372:132;;;:::o;25510:108::-;25587:24;25605:5;25587:24;:::i;:::-;25582:3;25575:37;25510:108;;:::o;25624:179::-;25693:10;25714:46;25756:3;25748:6;25714:46;:::i;:::-;25792:4;25787:3;25783:14;25769:28;;25624:179;;;;:::o;25809:113::-;25879:4;25911;25906:3;25902:14;25894:22;;25809:113;;;:::o;25958:732::-;26077:3;26106:54;26154:5;26106:54;:::i;:::-;26176:86;26255:6;26250:3;26176:86;:::i;:::-;26169:93;;26286:56;26336:5;26286:56;:::i;:::-;26365:7;26396:1;26381:284;26406:6;26403:1;26400:13;26381:284;;;26482:6;26476:13;26509:63;26568:3;26553:13;26509:63;:::i;:::-;26502:70;;26595:60;26648:6;26595:60;:::i;:::-;26585:70;;26441:224;26428:1;26425;26421:9;26416:14;;26381:284;;;26385:14;26681:3;26674:10;;26082:608;;;25958:732;;;;:::o;26696:831::-;26959:4;26997:3;26986:9;26982:19;26974:27;;27011:71;27079:1;27068:9;27064:17;27055:6;27011:71;:::i;:::-;27092:80;27168:2;27157:9;27153:18;27144:6;27092:80;:::i;:::-;27219:9;27213:4;27209:20;27204:2;27193:9;27189:18;27182:48;27247:108;27350:4;27341:6;27247:108;:::i;:::-;27239:116;;27365:72;27433:2;27422:9;27418:18;27409:6;27365:72;:::i;:::-;27447:73;27515:3;27504:9;27500:19;27491:6;27447:73;:::i;:::-;26696:831;;;;;;;;:::o

Swarm Source

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